From b11cfb6fc1cbb52b88425f66b4dc503b9e3cd543 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Thu, 9 Feb 2023 23:27:50 -0800 Subject: [PATCH] Fix Pcompletion of "tar" when using unrecognized arguments Previously, arguments to tar like "--warning=no-timestamp" would cause Pcompletion to hang (bug#58921). * lisp/pcmpl-gnu.el (pcomplete/tar): Properly handle completion of arguments that look like "--ARG=", even if they're not recognized by this function. (This also lets us coalesce a lot of the different cases into one.) --- lisp/pcmpl-gnu.el | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/lisp/pcmpl-gnu.el b/lisp/pcmpl-gnu.el index 7d270ea789f..00e9af3a974 100644 --- a/lisp/pcmpl-gnu.el +++ b/lisp/pcmpl-gnu.el @@ -276,20 +276,12 @@ pcomplete/tar (cond ((pcomplete-match "\\`-\\'" 0) (pcomplete-here*)) - ((pcomplete-match "\\`--after-date=" 0) - (pcomplete-here*)) - ((pcomplete-match "\\`--backup=" 0) - (pcomplete-here*)) - ((pcomplete-match "\\`--blocking-factor=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--directory=\\(.*\\)" 0) (pcomplete-here* (pcomplete-dirs) (pcomplete-match-string 1 0))) ((pcomplete-match "\\`--exclude-from=\\(.*\\)" 0) (pcomplete-here* (pcomplete-entries) (pcomplete-match-string 1 0))) - ((pcomplete-match "\\`--exclude=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--\\(extract\\|list\\)\\'" 0) (setq complete-within t)) ((pcomplete-match "\\`--file=\\(.*\\)" 0) @@ -304,36 +296,26 @@ pcomplete/tar ((pcomplete-match "\\`--info-script=\\(.*\\)" 0) (pcomplete-here* (pcomplete-entries) (pcomplete-match-string 1 0))) - ((pcomplete-match "\\`--label=" 0) - (pcomplete-here*)) - ((pcomplete-match "\\`--mode=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--new-volume-script=\\(.*\\)" 0) (pcomplete-here* (pcomplete-entries) (pcomplete-match-string 1 0))) - ((pcomplete-match "\\`--newer=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--owner=\\(.*\\)" 0) (pcomplete-here* (pcmpl-unix-user-names) (pcomplete-match-string 1 0))) - ((pcomplete-match "\\`--record-size=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--rsh-command=\\(.*\\)" 0) (pcomplete-here* (funcall pcomplete-command-completion-function) (pcomplete-match-string 1 0))) ((pcomplete-match "\\`--starting-file=\\(.*\\)" 0) (pcomplete-here* (pcomplete-entries) (pcomplete-match-string 1 0))) - ((pcomplete-match "\\`--suffix=" 0) - (pcomplete-here*)) - ((pcomplete-match "\\`--tape-length=" 0) - (pcomplete-here*)) ((pcomplete-match "\\`--use-compress-program=\\(.*\\)" 0) (pcomplete-here* (funcall pcomplete-command-completion-function) (pcomplete-match-string 1 0))) ((pcomplete-match "\\`--volno-file=\\(.*\\)" 0) (pcomplete-here* (pcomplete-entries) - (pcomplete-match-string 1 0))))) + (pcomplete-match-string 1 0))) + ((pcomplete-match "\\`--.*=" 0) + (pcomplete-here*)))) (unless saw-option (pcomplete-here (mapcar #'char-to-string -- 2.25.1