自定义路径的标签完成

时间:2011-06-27 12:14:12

标签: shell emacs path elisp tab-completion

Emacs shell模式选项卡完成(comint-dynamic-complete)适用于内置于linux的命令,但它似乎无法检测我的原始命令,其路径在~/.bashrc中指定。如何让comint-dynamic-complete查找这些命令?我使用emacs 23.3。

2 个答案:

答案 0 :(得分:2)

在shell模式下,它会查找exec-path中指定的目录,这些目录在启动Emacs时根据环境变量PATH进行初始化。您可以覆盖.emacsref)中的一个或两个。 This page向您展示如何覆盖这两个变量中的任何一个:

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

修改

Powershell.el可能是comint.el更好的选择(之前没有使用它)。在源代码评论中,它声称在exec-path中搜索其中一个函数,恕我直言应该在comint.el中完成:

;; (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上的注释以便完成”。

答案 1 :(得分:1)

查看shell-command

(require 'shell-command)
(shell-command-completion-mode)