diff options
author | Chong Yidong <cyd@gnu.org> | 2012-01-05 22:51:05 +0800 |
---|---|---|
committer | Chong Yidong <cyd@gnu.org> | 2012-01-05 22:51:05 +0800 |
commit | 7baca3bcbe2be3cbf2108eda589cf5c6147e2566 (patch) | |
tree | 33f2537e5ffdb2b88d0084b524abfc2781fa960f /lisp/shell.el | |
parent | cf3304e1c58f818b7c5636c08742aa19ecaf869a (diff) | |
download | emacs-7baca3bcbe2be3cbf2108eda589cf5c6147e2566.tar.gz |
Proper fix for shell-completion-execonly.
* shell.el (shell-dynamic-complete-functions): Revert last change.
(shell-command-completion-function): New function.
(shell-completion-vars): Use it to implement
shell-completion-execonly.
Fixes: debbugs:10417
Diffstat (limited to 'lisp/shell.el')
-rw-r--r-- | lisp/shell.el | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lisp/shell.el b/lisp/shell.el index 77df0a99aa3..e7a8953ecbe 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -187,11 +187,9 @@ This is a fine thing to set in your `.emacs' file.") shell-environment-variable-completion shell-command-completion shell-c-a-p-replace-by-expanded-directory + pcomplete-completions-at-point shell-filename-completion - comint-filename-completion - ;; This goes last, so that `comint-filename-completion' can handle - ;; `shell-completion-execonly' (Bug#10417). - pcomplete-completions-at-point) + comint-filename-completion) "List of functions called to perform completion. This variable is used to initialize `comint-dynamic-complete-functions' in the shell buffer. @@ -407,6 +405,15 @@ Thus, this does not include the shell's current directory.") (push (mapconcat #'identity (nreverse arg) "") args))) (cons (nreverse args) (nreverse begins))))) +(defun shell-command-completion-function () + "Completion function for shell command names. +This is the value of `pcomplete-command-completion-function' for +Shell buffers. It implements `shell-completion-execonly' for +`pcomplete' completion." + (pcomplete-here (pcomplete-entries nil + (if shell-completion-execonly + 'file-executable-p)))) + (defun shell-completion-vars () "Setup completion vars for `shell-mode' and `read-shell-command'." (set (make-local-variable 'comint-completion-fignore) @@ -428,6 +435,8 @@ Thus, this does not include the shell's current directory.") comint-completion-addsuffix) ((not (consp comint-completion-addsuffix)) " ") (t (cdr comint-completion-addsuffix)))) + (set (make-local-variable 'pcomplete-command-completion-function) + #'shell-command-completion-function) ;; Don't use pcomplete's defaulting mechanism, rely on ;; shell-dynamic-complete-functions instead. (set (make-local-variable 'pcomplete-default-completion-function) #'ignore) |