diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index c2f68d7..2586206 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -553,7 +553,17 @@ _zsh_highlight_main_highlighter_highlight_list() [[ ${parameter_name} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] && (( ${+parameters[(e)${MATCH}]} )) && [[ ${parameters[(e)$MATCH]} != *special* ]] then - arg=${(P)MATCH} + # Set $arg. + case ${(tP)MATCH} in + (*array*|*assoc*) + local -a words; words=( ${(P)MATCH} ) + arg=${words[1]} + ;; + (*) + # scalar, presumably + arg=${(P)MATCH} + ;; + esac _zsh_highlight_main__type "$arg" res=$REPLY fi diff --git a/highlighters/main/test-data/commmand-parameter.zsh b/highlighters/main/test-data/commmand-parameter.zsh index afa9bc5..48d20ba 100644 --- a/highlighters/main/test-data/commmand-parameter.zsh +++ b/highlighters/main/test-data/commmand-parameter.zsh @@ -29,9 +29,10 @@ local x=/usr/bin/env local y=sudo +local -a z; z=(zsh -f) sudo(){} -BUFFER='$x "argument"; $y' +BUFFER='$x "argument"; $y; $z' expected_region_highlight=( "1 2 command" # $x @@ -39,4 +40,6 @@ expected_region_highlight=( "4 13 double-quoted-argument" # "argument" "14 14 commandseparator" # ; "16 17 precommand" # $y (sudo) + "18 18 unknown-token" # ; + "20 21 command" # $z - 'zsh' being the command )