summaryrefslogtreecommitdiff
path: root/Completion/Builtins/_vars
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Builtins/_vars')
-rw-r--r--Completion/Builtins/_vars17
1 files changed, 13 insertions, 4 deletions
diff --git a/Completion/Builtins/_vars b/Completion/Builtins/_vars
index a46b99de0..501e37b4f 100644
--- a/Completion/Builtins/_vars
+++ b/Completion/Builtins/_vars
@@ -1,8 +1,9 @@
#compdef getopts unset vared
# This will handle completion of keys of associative arrays, e.g. at
-# `vared foo[<TAB>'. However, in this version the [ must be added
-# by hand.
+# `vared foo[<TAB>'.
+
+local ret=1
if [[ $PREFIX = *\[* ]]; then
local var=${PREFIX%%\[*}
@@ -11,7 +12,7 @@ if [[ $PREFIX = *\[* ]]; then
compset -p $(( ${#var} + 1 ))
if ! compset -S \]; then
- addclose=(-S ']')
+ addclose=(-S "${${QIPREFIX:+]}:-\]}")
fi
if [[ ${(tP)var} = assoc* ]]; then
local expl
@@ -20,5 +21,13 @@ if [[ $PREFIX = *\[* ]]; then
compadd $addclose -k "$var"
fi
else
- _parameters "$@"
+ _parameters -g '^a*' "$@" && ret=0
+
+ if compset -S '\[*'; then
+ set - -S "" "$@"
+ else
+ set - -qS"${${QIPREFIX:+[}:-\[}" "$@"
+ fi
+ _parameters -g 'a*' "$@" && ret=0
+ return ret
fi