about summary refs log tree commit diff
path: root/Completion/Zsh
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Zsh')
-rw-r--r--Completion/Zsh/Type/_vars25
1 files changed, 25 insertions, 0 deletions
diff --git a/Completion/Zsh/Type/_vars b/Completion/Zsh/Type/_vars
new file mode 100644
index 000000000..dece0fecb
--- /dev/null
+++ b/Completion/Zsh/Type/_vars
@@ -0,0 +1,25 @@
+#compdef getopts unset vared
+
+# This will handle completion of keys of associative arrays, e.g. at
+# `vared foo[<TAB>'.
+
+local ret=1
+
+if [[ $PREFIX = *\[* ]]; then
+  compstate[parameter]=${PREFIX%%(|\\)\[*}
+
+  IPREFIX=${PREFIX%%\[*}\[
+  PREFIX=${PREFIX#*\[}
+
+  _subscript -q
+else
+  _parameters -g '^a*' "$@" && ret=0
+  
+  if compset -S '\[*'; then
+    set - -S "" "$@"
+  else
+    set - -qS"${${QIPREFIX:+[}:-\[}" "$@"
+  fi
+  _parameters -g 'a*' "$@" && ret=0
+  return ret
+fi