about summary refs log tree commit diff
path: root/Completion/Core/_tags
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Core/_tags')
-rw-r--r--Completion/Core/_tags28
1 files changed, 19 insertions, 9 deletions
diff --git a/Completion/Core/_tags b/Completion/Core/_tags
index 6e3966074..b74e70264 100644
--- a/Completion/Core/_tags
+++ b/Completion/Core/_tags
@@ -50,21 +50,31 @@ if (( $# )); then
              fi
              ;;
       \!*)   comptry "${(@)argv:#(${(j:|:)~${=tag[2,-1]}})}";;
-      ?*)    comptry ${=tag};;
+      ?*)    comptry ${${(ps: :)${tag//\\\\ /$'\0'}}//$'\0'/ };;
       esac
     done
 
-    [[ -z "$nodef" ]] && comptry "$@"
+    if [[ -z "$nodef" ]]; then
+      if (( $+_comp_default_tags )); then
+        for tag in "$_comp_default_tags[@]"; do
+          comptry "$tag"
+        done
+      else
+        comptry "$@"
+      fi
+    fi
   else
 
-    # The first ones give the default behaviour.
-
-    comptry arguments values
-    comptry options
-    comptry globbed-files
-    comptry directories
-    comptry all-files
+    # Use default tags...
 
+    if (( $+_comp_default_tags )); then
+      for tag in "$_comp_default_tags[@]"; do
+        comptry "$tag"
+      done
+    else
+      comptry arguments values
+      comptry options
+    fi
     comptry "$@"
   fi