about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Base/_arguments14
1 files changed, 6 insertions, 8 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments
index 44895d9d3..5581e5bd9 100644
--- a/Completion/Base/_arguments
+++ b/Completion/Base/_arguments
@@ -168,7 +168,7 @@ zstyle -s ":completion:${curcontext}:options" auto-description autod
 if (( $# )) && comparguments -i "$autod" "$@"; then
   local action noargs aret expl local tried
   local next direct odirect equal single matcher matched ws tmp1 tmp2 tmp3
-  local opts subc tc prefix suffix descrs actions subcs
+  local opts subc tc prefix suffix descrs actions subcs anum
   local origpre="$PREFIX" origipre="$IPREFIX" nm="$compstate[nmatches]"
 
   if comparguments -D descrs actions subcs; then
@@ -203,11 +203,12 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
 
   while true; do
     while _tags; do
-      while (( $#descrs )); do
+      anum=1
+      while [[ anum -le  $#descrs ]]; do
 
-	action="$actions[1]"
-	descr="$descrs[1]"
-	subc="$subcs[1]"
+	action="$actions[anum]"
+	descr="$descrs[anum]"
+	subc="$subcs[anum++]"
 
         if [[ -n "$matched" ]] || _requested "$subc"; then
 
@@ -293,9 +294,6 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
             fi
           fi
         fi
-        shift descrs
-        shift actions
-        shift subcs
       done
 
       if [[ -z "$matched$hasopts" ]] && _requested options &&