From 1bf54d7f268be78f71364f55485f081e5f91f323 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Fri, 12 Jan 2018 13:54:02 +0000 Subject: [PATCH] 'main': Highlight array parameters in command position. --- highlighters/main/main-highlighter.zsh | 12 +++++++++++- highlighters/main/test-data/commmand-parameter.zsh | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index 1e08f6b..ff06521 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -513,7 +513,17 @@ _zsh_highlight_highlighter_main_paint() [[ ${parameter_name} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] && (( ${+parameters[${MATCH}]} )) then - arg=${(P)MATCH} + # Set $arg. + case ${(tP)MATCH} in + (*array*|*assoc*) + local -a 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 8218afc..fa1a360 100644 --- a/highlighters/main/test-data/commmand-parameter.zsh +++ b/highlighters/main/test-data/commmand-parameter.zsh @@ -29,10 +29,12 @@ local x=/usr/bin/env local y=sudo -BUFFER='$x "argument"; $y' +local -a z; z=(zsh -f) +BUFFER='$x "argument"; $y; $z' expected_region_highlight=( "1 2 command" # $x "4 13 double-quoted-argument" # "argument" "16 17 precommand" # $y (sudo) + "20 21 command" # $z - 'zsh' being the command )