From dbdebfaaa5d4ac7af8ab6ea5fc168620137a575f Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Mon, 25 Dec 2017 05:20:40 +0000 Subject: [PATCH] =?UTF-8?q?'main':=20Following=20up=20to=20the=20last=20co?= =?UTF-8?q?mmit,=20also=20highlight=20braced=20parameter=20expansions:=20?= =?UTF-8?q?=C2=AB${foo}=C2=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- highlighters/main/main-highlighter.zsh | 8 +++++++- highlighters/main/test-data/path-dollared-word3.zsh | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index 667b0ac..e53c93e 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -509,8 +509,14 @@ _zsh_highlight_main_highlighter_highlight_list() # parameters that refer to commands, functions, and builtins. local -a match mbegin mend local MATCH; integer MBEGIN MEND + local parameter_name + if [[ $arg[1] == '$' ]] && [[ ${arg[2]} == '{' ]] && [[ ${arg[-1]} == '}' ]]; then + parameter_name=${${arg:2}%?} + elif [[ $arg[1] == '$' ]]; then + parameter_name=${arg:1} + fi if [[ $res == none ]] && (( ${+parameters} )) && - [[ ${arg[1]} == \$ ]] && [[ ${arg:1} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] && + [[ ${parameter_name} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] && (( ${+parameters[(e)${MATCH}]} )) && [[ ${parameters[(e)$MATCH]} != *special* ]] then arg=${(P)MATCH} diff --git a/highlighters/main/test-data/path-dollared-word3.zsh b/highlighters/main/test-data/path-dollared-word3.zsh index 911ea81..6921cba 100644 --- a/highlighters/main/test-data/path-dollared-word3.zsh +++ b/highlighters/main/test-data/path-dollared-word3.zsh @@ -36,5 +36,5 @@ BUFFER='$PWD; ${PWD}' expected_region_highlight=( "1 4 path" # $PWD "5 5 commandseparator" # ; - "7 12 unknown-token" # ${PWD} + "7 12 path" # ${PWD} )