emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/bash-completion ba83e81651 053/313: bash-completion-genera


From: ELPA Syncer
Subject: [nongnu] elpa/bash-completion ba83e81651 053/313: bash-completion-generate-line
Date: Sat, 3 Dec 2022 10:59:15 -0500 (EST)

branch: elpa/bash-completion
commit ba83e8165195cd37be6f2101a0e0bd5ae14bfb99
Author: Stephane Zermatten <szermatt@gmx.net>
Commit: Stephane Zermatten <szermatt@gmx.net>

    bash-completion-generate-line
---
 bash-completion.el | 53 +++++++++++++++++++++++++++++++----------------------
 1 file changed, 31 insertions(+), 22 deletions(-)

diff --git a/bash-completion.el b/bash-completion.el
index 1ecfecc816..4649607009 100644
--- a/bash-completion.el
+++ b/bash-completion.el
@@ -407,29 +407,38 @@ The result is a list of candidates, which might be empty."
   (concat
    (bash-completion-cd-command-prefix)
    (let* ( (command-name (file-name-nondirectory (car words)))
-          (compgen-args (cdr (assoc command-name bash-completion-alist))) )
-     (if (not compgen-args)
-        ;; no custom completion. use default completion
-        (if (= cword 0)
-            ;; a command. let emacs expand executable, let bash
-            ;; expand builtins, aliases and functions
-            (concat (bash-completion-join (list "compgen" "-S" " " "-b" "-a" 
"-A" "function" (car words))))
-          ;; argument
-          (bash-completion-join (list "compgen" "-o" "default" (nth cword 
words))))
-       ;; custom completion
+          (compgen-args (cdr (assoc command-name bash-completion-alist)))
+          (stub (nth cword words)) )
+     (cond
+      ((= cword 0)
+       ;; a command. let emacs expand executable, let bash
+       ;; expand builtins, aliases and functions
+       (concat "compgen -S ' ' -b -a -A function " stub))
+
+      ((not compgen-args)
+       ;; no completion configured for this command
+       (bash-completion-join (list "compgen" "-o" "default" stub)))
+
+      ((or (member "-F" compgen-args) (member "-C" compgen-args))
+       ;; custom completion with a function of command
        (let* ( (args (copy-tree compgen-args))
-              (function (or (member "-F" args) (member "-C" args))) )
-        (if function
-            (let ((function-name (car (cdr function))))
-              (setcar function "-F")
-              (setcar (cdr function) "__bash_complete_wrapper")
-              (format "__BASH_COMPLETE_WRAPPER=%s compgen %s -- %s"
-                      (bash-completion-quote (format "COMP_LINE=%s; 
COMP_POINT=%s; COMP_CWORD=%s; COMP_WORDS=( %s ); %s \"${COMP_WORDS[@]}\""
-                                                   (bash-completion-quote 
line) pos cword (bash-completion-join words)
-                                                   (bash-completion-quote 
function-name)))
-                      (bash-completion-join args)
-                      (bash-completion-quote (nth cword words))))
-          (format "compgen %s -- %s" (bash-completion-join args) (nth cword 
words))))))))
+              (function (or (member "-F" args) (member "-C" args)))
+              (function-name (car (cdr function))) )
+        (setcar function "-F")
+        (setcar (cdr function) "__bash_complete_wrapper")
+        (format "__BASH_COMPLETE_WRAPPER=%s compgen %s -- %s"
+                (bash-completion-quote
+                 (format "COMP_LINE=%s; COMP_POINT=%s; COMP_CWORD=%s; 
COMP_WORDS=( %s ); %s \"${COMP_WORDS[@]}\""
+                         (bash-completion-quote line)
+                         pos
+                         cword
+                         (bash-completion-join words)
+                         (bash-completion-quote function-name)))
+                (bash-completion-join args)
+                (bash-completion-quote stub))))
+      (t
+       ;; simple custom completion
+       (format "compgen %s -- %s" (bash-completion-join compgen-args) 
stub))))))
 
 (defun bash-completion-reset ()
   (interactive)



reply via email to

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