diff options
Diffstat (limited to 'lisp/pcmpl-unix.el')
-rw-r--r-- | lisp/pcmpl-unix.el | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el index f1c8725afea..74f45b95233 100644 --- a/lisp/pcmpl-unix.el +++ b/lisp/pcmpl-unix.el @@ -1,4 +1,4 @@ -;;; pcmpl-unix.el --- standard UNIX completions +;;; pcmpl-unix.el --- standard UNIX completions -*- lexical-binding:t -*- ;; Copyright (C) 1999-2020 Free Software Foundation, Inc. @@ -155,12 +155,14 @@ documentation), this function returns nil." (let ((host-re "\\(?:\\([-.[:alnum:]]+\\)\\|\\[\\([-.[:alnum:]]+\\)\\]:[0-9]+\\)[, ]") ssh-hosts-list) (while (re-search-forward (concat "^ *" host-re) nil t) - (add-to-list 'ssh-hosts-list (concat (match-string 1) - (match-string 2))) + (push (concat (match-string 1) + (match-string 2)) + ssh-hosts-list) (while (and (eq (char-before) ?,) (re-search-forward host-re (line-end-position) t)) - (add-to-list 'ssh-hosts-list (concat (match-string 1) - (match-string 2))))) + (push (concat (match-string 1) + (match-string 2)) + ssh-hosts-list))) ssh-hosts-list)))) (defun pcmpl-ssh-config-hosts () @@ -173,7 +175,7 @@ documentation), this function returns nil." (case-fold-search t)) (while (re-search-forward "^ *host\\(name\\)? +\\([-.[:alnum:]]+\\)" nil t) - (add-to-list 'ssh-hosts-list (match-string 2))) + (push (match-string 2) ssh-hosts-list)) ssh-hosts-list)))) (defun pcmpl-ssh-hosts () @@ -181,7 +183,7 @@ documentation), this function returns nil." Uses both `pcmpl-ssh-config-file' and `pcmpl-ssh-known-hosts-file'." (let ((hosts (pcmpl-ssh-known-hosts))) (dolist (h (pcmpl-ssh-config-hosts)) - (add-to-list 'hosts h)) + (push h hosts)) hosts)) ;;;###autoload @@ -215,6 +217,29 @@ Includes files as well as host names followed by a colon." (pcmpl-ssh-hosts))))))) (complete-with-action action table string pred)))))) +(defsubst pcmpl-unix-complete-hostname () + "Complete a command that wants a hostname for an argument." + (pcomplete-here (pcomplete-read-host-names))) + +(defalias 'pcomplete/ftp 'pcmpl-unix-complete-hostname) +(defalias 'pcomplete/ncftp 'pcmpl-unix-complete-hostname) +(defalias 'pcomplete/ping 'pcmpl-unix-complete-hostname) +(defalias 'pcomplete/rlogin 'pcmpl-unix-complete-hostname) + +;;;###autoload +(defun pcomplete/telnet () + (pcomplete-opt "xl(pcmpl-unix-user-names)") + (pcmpl-unix-complete-hostname)) + +;;;###autoload +(defun pcomplete/rsh () + "Complete `rsh', which, after the user and hostname, is like xargs." + (pcomplete-opt "l(pcmpl-unix-user-names)") + (pcmpl-unix-complete-hostname) + (pcomplete-here (funcall pcomplete-command-completion-function)) + (funcall (or (pcomplete-find-completion-function (pcomplete-arg 1)) + pcomplete-default-completion-function))) + (provide 'pcmpl-unix) ;;; pcmpl-unix.el ends here |