2013-01-31 45 views
1

當我在外殼模式下輸入cd c:/dir/to/path時,外殼模式遵循它的default-directoryc:/dir/to/path,這很好。但在訪問某個文件(c:/another/dir/file.ext)時,如何在不輸入cd c:/antoher/dir/file.ext的情況下讓現有的shell目錄爲那個文件?emacs外殼模式遵循其默認目錄到當前文件

在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") 
     ) 
    ) 
    ) 
) 

回答

0

您可以隨時使用setq設置默認目錄。 您可以將該代碼作爲鉤子添加到find-file-hooks中。 你也可以建議find-file命令的設置希望。 到目前爲止只是我的想法...

+0

感謝您的意見。在閱讀完您的想法後,我添加了一個大致寫作的交互功能請看看,任何意見將不勝感激。 – Joonhwan

相關問題