From: Stefan Monnier Date: Mon, 28 Sep 2020 02:07:14 +0000 (-0400) Subject: Fix pcomplete completion of things like `xargs` and `sudo` (bug#16197) X-Git-Tag: emacs-28.0.90~5843 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ba42f7932419c3c8b1e23f39c81a1a2dd1b3a154;p=emacs.git Fix pcomplete completion of things like `xargs` and `sudo` (bug#16197) * lisp/pcmpl-unix.el (pcomplete/xargs): Don't `pcomplete-this` around `pcomplete-command-completion-function`. (pcomplete/sudo): Make it an alias for `pcomplete/xargs`. * lisp/shell.el (shell-command-completion-function): Return the names from `exec-path` when the command name has no `/`. --- diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el index 74f45b95233..9d346cfbd22 100644 --- a/lisp/pcmpl-unix.el +++ b/lisp/pcmpl-unix.el @@ -82,10 +82,14 @@ being via `pcmpl-ssh-known-hosts-file'." ;;;###autoload (defun pcomplete/xargs () "Completion for `xargs'." - (pcomplete-here (funcall pcomplete-command-completion-function)) + ;; FIXME: Add completion of xargs-specific arguments. + (funcall pcomplete-command-completion-function) (funcall (or (pcomplete-find-completion-function (pcomplete-arg 1)) pcomplete-default-completion-function))) +;; FIXME: Add completion of sudo-specific arguments. +(defalias 'pcomplete/sudo #'pcomplete/xargs) + ;;;###autoload (defalias 'pcomplete/time 'pcomplete/xargs) diff --git a/lisp/shell.el b/lisp/shell.el index 9667dab2afd..6129e5efc84 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -460,9 +460,12 @@ Thus, this does not include the shell's current directory.") 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)))) + (if (pcomplete-match "/") + (pcomplete-here (pcomplete-entries nil + (if shell-completion-execonly + 'file-executable-p))) + (pcomplete-here + (nth 2 (shell--command-completion-data))))) (defun shell-completion-vars () "Setup completion vars for `shell-mode' and `read-shell-command'."