emacs shell-mode遵循其default-directory到current-file

时间:2013-01-31 23:56:00

标签: emacs

当我在shell模式下输入cd c:/dir/to/path时,shell模式会跟随default-directoryc:/dir/to/path,这很好。但是在访问某个文件(c:/another/dir/file.ext)时,如何在不输入cd c:/antoher/dir/file.ext的情况下将现有的shell目录放到该文件中?

在emacs中是否有任何预先存在的功能?搜索了很多,但遗憾的是找不到。

我在Win7中使用Emacs 24.2.1。

编辑:

我写了一个不太好看的功能,如下面的内容。任何建议/建议将不胜感激(我是elisp的新手)。 (使用带前缀的交互式调用,它将显示具有当前目录的shell缓冲区。我一再认为可能已经发明了一个比这更好的东西。)

  (defun my-shell-with-current-directory (&optional arg)
  (interactive "P")
  (let* ((sp (get-process "shell"))
         (spbuf (and sp (process-buffer sp)))
         (dir (if buffer-file-name (file-name-directory buffer-file-name) default-directory)))
    (if (and arg sp spbuf dir)
        (progn 
          (comint-simple-send sp (concat "cd /d " dir))
          (display-buffer spbuf)
          (save-excursion
            (set-buffer spbuf)
            (cd dir)
            )
          )
      (progn
        (shell)
        (comint-simple-send sp "setlocal enableextensions")
        )
      )
    )
  )

1 个答案:

答案 0 :(得分:0)

您可以随时使用setq设置default-directory。 您可以将该代码作为钩子添加到find-file-hooks中。 您也可以根据需要设置find-file命令。 到目前为止只是我的想法...