summary refs log tree commit diff
path: root/etc/completion
diff options
context:
space:
mode:
Diffstat (limited to 'etc/completion')
-rw-r--r--etc/completion/bash/guix14
1 files changed, 13 insertions, 1 deletions
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
index 724d35b21f..fcf9482639 100644
--- a/etc/completion/bash/guix
+++ b/etc/completion/bash/guix
@@ -171,6 +171,18 @@ _guix_complete_file ()
     COMPREPLY=()
 }
 
+_guix_complete_available_package_or_store_file ()
+{
+    _guix_complete_available_package "$@"
+
+    # The current _guix_complete_file implementation doesn't compose (append to
+    # COMPREPLY), so we suggest file names only if no package names matched.
+    if [[ -z "$COMPREPLY" ]]
+    then
+	_guix_complete_file # TODO: restrict to store files
+    fi
+}
+
 _guix_complete_pid ()
 {
     local pids="$(cd /proc; echo [0-9]*)"
@@ -251,7 +263,7 @@ _guix_complete ()
                 then
                     _guix_complete_file
 		else
-		    _guix_complete_available_package "$word_at_point"
+		    _guix_complete_available_package_or_store_file "$word_at_point"
                 fi
 	    elif [[ "$command" = "environment" ]]
 	    then