summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-09-10 11:19:41 +0200
committerLudovic Courtès <ludo@gnu.org>2020-09-10 12:27:24 +0200
commit2ba81afcc204024255ce548e2c4cc4aed5541093 (patch)
treedb0678886276546d511ecbbe45f2002b6d75be12
parent3794ce93be8216d8378df7b808ce7f53b1e05a53 (diff)
downloadguix-2ba81afcc204024255ce548e2c4cc4aed5541093.tar.gz
bash completion: Restore completion for 'guix system', etc.
Commit 538ca8dd65f0075cc65bcca18ed87f66a789290a introduced a second
'_guix_complete_subcommand' function, shadowing the existing one, which
broke sub-command completion for 'guix system', 'guix import', etc.

* etc/completion/bash/guix: Distinguish between '_guix_complete_command'
and '_guix_complete_subcommand'.  Adjust users to call the right one.
-rw-r--r--etc/completion/bash/guix30
1 files changed, 15 insertions, 15 deletions
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
index 5aebd074e9..98d20484f7 100644
--- a/etc/completion/bash/guix
+++ b/etc/completion/bash/guix
@@ -19,6 +19,19 @@
 # Bash completion for Guix commands.
 
 declare _guix_available_packages
+declare _guix_commands
+
+_guix_complete_command ()
+{
+    local word_at_point="${COMP_WORDS[$COMP_CWORD]}"
+    if [ -z "$_guix_commands" ]
+    then
+	# Cache the list of commands to speed things up.
+	_guix_commands="$(guix --help 2> /dev/null \
+                                     | grep '^  ' | cut -c 2-)"
+    fi
+    COMPREPLY=($(compgen -W "$_guix_commands" -- "$word_at_point"))
+}
 
 _guix_complete_subcommand ()
 {
@@ -146,19 +159,6 @@ _guix_complete_pid ()
     COMPREPLY=($(compgen -W "$pids" -- "$1"))
 }
 
-declare _guix_subcommands
-
-_guix_complete_subcommand ()
-{
-    if [ -z "$_guix_subcommands" ]
-    then
-	# Cache the list of subcommands to speed things up.
-	_guix_subcommands="$(guix --help 2> /dev/null \
-                                     | grep '^  ' | cut -c 2-)"
-    fi
-    COMPREPLY=($(compgen -W "$_guix_subcommands" -- "$word_at_point"))
-}
-
 _guix_complete ()
 {
     local word_count=${#COMP_WORDS[*]}
@@ -176,7 +176,7 @@ _guix_complete ()
 
     case $COMP_CWORD in
 	1)
-	    _guix_complete_subcommand
+	    _guix_complete_command
 	    ;;
 	*)
 	    if _guix_is_command "package"
@@ -251,7 +251,7 @@ _guix_complete ()
                 then
                     _guix_complete_file
 		else
-		    _guix_complete_subcommand
+		    _guix_complete_command
                 fi
 	    elif _guix_is_command "container"
 	    then