From: Michael Albinus Date: Sun, 20 Aug 2023 07:41:07 +0000 (+0200) Subject: New user option pcomplete-remote-file-ignore X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=efb276fef1f580eafa8458fc262a4b35eb3abd5e;p=emacs.git New user option pcomplete-remote-file-ignore * etc/NEWS: Mention pcomplete-remote-file-ignore. * lisp/pcomplete.el (pcomplete-remote-file-ignore): New user option. (pcomplete--entries): Use it. * lisp/shell.el (shell-completion-vars): Set 'pcomplete-remote-file-ignore'. --- diff --git a/etc/NEWS b/etc/NEWS index 6588299c532..aa19c785ff1 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -357,6 +357,14 @@ to load the edited aliases. Running 'rgrep' in Eshell now uses the Emacs grep facility instead of calling external rgrep. +** Pcomplete + +--- +*** New user option 'pcomplete-remote-file-ignore'. +When this option is non-nil, remote file names are not completed by +Pcomplete. Packages, like 'shell-mode', could set this in order to +suppress remote file name completion at all. + ** Shell Mode +++ diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el index c7ec228c1db..3d8a4e7edaa 100644 --- a/lisp/pcomplete.el +++ b/lisp/pcomplete.el @@ -138,6 +138,11 @@ "A regexp of names to be disregarded during directory completion." :type '(choice regexp (const :tag "None" nil))) +(defcustom pcomplete-remote-file-ignore nil + "Whether to ignore remote file names." + :version "30.1" + :type 'boolean) + (define-obsolete-variable-alias 'pcomplete-ignore-case 'completion-ignore-case "28.1") @@ -924,7 +929,10 @@ this is `comint-dynamic-complete-functions'." (sort comps pcomplete-compare-entry-function))) ,@(cdr (completion-file-name-table s p a))) (let ((completion-ignored-extensions nil) - (completion-ignore-case completion-ignore-case)) + (completion-ignore-case completion-ignore-case) + (tramp-mode (and tramp-mode (not pcomplete-remote-file-ignore))) + (non-essential (not (file-remote-p s))) + (minibuffer-completing-file-name (file-remote-p s)))) (completion-table-with-predicate #'comint-completion-file-name-table pred 'strict s p a)))))) @@ -1322,7 +1330,8 @@ If specific documentation can't be given, be generic." "Sort and remove multiples in SEQUENCE. Sequence should be a vector or list of strings." (sort (seq-uniq sequence) #'string-lessp)) -(define-obsolete-function-alias 'pcomplete-uniqify-list #'pcomplete-uniquify-list "27.1") +(define-obsolete-function-alias + 'pcomplete-uniqify-list #'pcomplete-uniquify-list "27.1") (defun pcomplete-process-result (cmd &rest args) "Call CMD using `call-process' and return the simplest result." diff --git a/lisp/shell.el b/lisp/shell.el index 7ea9d1c2ead..b554ee5add9 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -595,6 +595,8 @@ Shell buffers. It implements `shell-completion-execonly' for ;; Don't use pcomplete's defaulting mechanism, rely on ;; shell-dynamic-complete-functions instead. (setq-local pcomplete-default-completion-function #'ignore) + ;; Do not expand remote file names. + (setq-local pcomplete-remote-file-ignore t) (setq-local comint-input-autoexpand shell-input-autoexpand) ;; Not needed in shell-mode because it's inherited from comint-mode, but ;; placed here for read-shell-command.