about summary refs log tree commit diff
path: root/Completion/Core/_complete
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2000-05-02 08:18:54 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2000-05-02 08:18:54 +0000
commit3d088f16aab58abcedcad8720ffbbfadee38bdc3 (patch)
treed7c8bb53de457af2672f9db98b451b7977683a93 /Completion/Core/_complete
parente102702cd5c2372a248a9ddadad4dedeb7c55e8f (diff)
downloadzsh-3d088f16aab58abcedcad8720ffbbfadee38bdc3.tar.gz
zsh-3d088f16aab58abcedcad8720ffbbfadee38bdc3.tar.xz
zsh-3d088f16aab58abcedcad8720ffbbfadee38bdc3.zip
make completion-in-vared complete parameter values as default; cleanup for _path_files (11048)
Diffstat (limited to 'Completion/Core/_complete')
-rw-r--r--Completion/Core/_complete18
1 files changed, 18 insertions, 0 deletions
diff --git a/Completion/Core/_complete b/Completion/Core/_complete
index c2679dcb8..e50f73b2e 100644
--- a/Completion/Core/_complete
+++ b/Completion/Core/_complete
@@ -33,6 +33,24 @@ if [[ ! -z "$comp" ]]; then
   fi
 fi
 
+# If we are inside `vared' and we don't have a $compcontext, we treat
+# this like a parameter assignment. Which it is.
+
+if [[ -n $compstate[vared] ]]; then
+  if [[ $compstate[vared] = *\[* ]]; then
+    # vared on an array-element
+    compstate[parameter]=${compstate[vared]%%\[*}
+    compstate[context]=value
+  else
+    # vared on a parameter, let's see if it is an array
+    compstate[parameter]=$compstate[vared]
+    if [[ ${(tP)compstate[vared]} = *(array|assoc)* ]]; then
+      compstate[context]=array_value
+    else
+      compstate[context]=value
+    fi
+  fi
+fi
 
 # For arguments and command names we use the `_normal' function.