Subject: Re: [PATCH] _subscript: fix the completion of associative array keys
From: Eric Cook <[email-masked]>
To: [email-masked]
Date: Tue, 26 Jan 2016 02:18:06 -0500
List-Id: Zsh Workers List <zsh-workers.zsh.org>

On 01/26/2016 01:49 AM, Eric Cook wrote:
> iirc the way ${(P)var} works was changed/"fix"(?) recently, but i can't find
> the thread now so i may be wrong. But currently: $options[<tab>
> completes values not the keys.

Now without empty argument removal: typeset -A foo; foo=('' bar) # is legal.
diff --git a/Completion/Zsh/Context/_subscript b/Completion/Zsh/Context/_subscript
index 0ccc0c4..679f129 100644
--- a/Completion/Zsh/Context/_subscript
+++ b/Completion/Zsh/Context/_subscript
@@ -81,8 +81,8 @@ elif compset -P '\('; then
 elif [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then
   local suf MATCH MBEGIN MEND
   local -a keys
-  keys=(${${(kP)compstate[parameter]}//(#m)[\$\\\[\]\(\)\[\{\}]/\\$MATCH})
-  keys=(${keys//#%(#m)[*@]/(e)$MATCH})
+  keys=("${(@)${(@k)${(P)compstate[parameter]}}//(#m)[\$\\\[\]\(\)\[\{\}]/\\$MATCH}")
+  keys=("${(@)keys//#%(#m)[*@]/(e)$MATCH}")
   [[ "$RBUFFER" != (|\\)\]* ]] && suf="$osuf"

   _wanted association-keys expl 'association key' \