#compdef getopts unset vared # This will handle completion of keys of associative arrays, e.g. at # `vared foo['. local ret=1 if [[ $PREFIX = *\[* ]]; then local var=${PREFIX%%\[*} local elt="${PREFIX#*\]}${SUFFIX%\]}" local addclose compset -p $(( ${#var} + 1 )) if ! compset -S \]; then addclose=(-S "${${QIPREFIX:+]}:-\]}") fi if [[ ${(tP)var} = assoc* ]]; then local expl _wanted -C subscript association-keys expl 'association key' \ compadd $addclose -k "$var" fi 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