2011-06-27 15 views
1

Emacsシェルモードのタブ補完(comint-dynamic-complete)は、Linuxに組み込まれているコマンドでは動作していますが、パスが~/.bashrcで指定されている元のコマンドは検出されません。どうすればcomint-dynamic-completeがそのようなコマンドを探すことができますか?私はemacs 23.3を使用しています。カスタムパスのタブ補完

答えて

2

シェルモードでは、Emacsの起動時に環境変数PATHに基づいて初期化されたexec-pathで指定されたディレクトリを探します。 .emacsref)のいずれかまたは両方を上書きすることができます。 This pageは、これら二つの変数のいずれかをオーバーライドする方法を示しています

(setenv "PATH" (concat (getenv "PATH") ":/sw/bin")) 
(setq exec-path (append exec-path '("/sw/bin"))) 

EDIT:

Powershell.elは、より良い代替手段かもしれませんcomint.elに(前にそれを使用していません)。ソースコードのコメントでは、それは私見はcomint.elで行われているはずな機能の1つをexec-pathを検索する主張:

;; (defun powershell-dynamic-complete-command() 
;; "Dynamically complete the command at point. 
;; This function is similar to `comint-dynamic-complete-filename', except that it 
;; searches the commands from powershell and then the `exec-path' (minus the 
;; trailing Emacs library path) for completion 
;; candidates. 

が始まるsource code commentsてリードを持っている「完了のためのTAB上の注意事項。」

+0

を見てください。これらはコマンド実行だけでなく、タブ補完のために機能しますか? – sawa

+0

@sawa、このメソッドがどのように実装されているかを見てみましたが、2つの変数のどちらも使用していないことに驚いていました。おそらく、Powershell.elがおそらくもっと良い選択肢だと思います。 。 –

1

は、私は両方試してみましたが、彼らは動作しませんでしたshell-command

(require 'shell-command) 
(shell-command-completion-mode) 
関連する問題