emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master efb276fef1f: New user option pcomplete-remote-file-ignore


From: Michael Albinus
Subject: master efb276fef1f: New user option pcomplete-remote-file-ignore
Date: Sun, 20 Aug 2023 03:41:21 -0400 (EDT)

branch: master
commit efb276fef1f580eafa8458fc262a4b35eb3abd5e
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>

    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'.
---
 etc/NEWS          |  8 ++++++++
 lisp/pcomplete.el | 13 +++++++++++--
 lisp/shell.el     |  2 ++
 3 files changed, 21 insertions(+), 2 deletions(-)

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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]