about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Base/_arguments14
2 files changed, 9 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 80bc5ea58..17de62c48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2000-05-29  Sven Wischnowsky  <wischnow@zsh.org>
 
+	* 11631: Completion/Base/_arguments: keep information about things
+ 	to complete in _arguments
+	
 	* 11624: Completion/Base/_arguments, Completion/Builtins/_zpty,
  	Doc/Zsh/compsys.yo, Src/Zle/computil.c: fixes for _arguments with
  	sets; make _zpty not use sets
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 &&