From d9e326b9936660e46dd15899d7080df749d2ebfa Mon Sep 17 00:00:00 2001 From: Matthew Martin Date: Sat, 20 Oct 2018 12:37:49 -0500 Subject: [PATCH] main: consume trailing whitespace in _highlight_list Fixes highlighting when an unclosed $( ends in whitespace. --- highlighters/main/main-highlighter.zsh | 3 ++- .../main/test-data/command-substitution-unclosed.zsh | 1 + highlighters/main/test-data/process-substitution2.zsh | 1 + .../main/test-data/quoted-command-substitution-empty.zsh | 9 +++++---- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index 76dfad0..b11b8f1 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -881,7 +881,8 @@ _zsh_highlight_main_highlighter_highlight_list() fi _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style done - REPLY=$(( end_pos - 1 )) + [[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\$'\n')#) ]] + REPLY=$(( end_pos + ${#match[1]} - 1 )) reply=($list_highlights) return $(( $#braces_stack > 0 )) } diff --git a/highlighters/main/test-data/command-substitution-unclosed.zsh b/highlighters/main/test-data/command-substitution-unclosed.zsh index bce6863..3229dfc 100644 --- a/highlighters/main/test-data/command-substitution-unclosed.zsh +++ b/highlighters/main/test-data/command-substitution-unclosed.zsh @@ -41,4 +41,5 @@ expected_region_highlight=( if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug expected_region_highlight[2]='3 16 default' # foo$(echo bar + expected_region_highlight[3]='6 16 command-substitution-unquoted' # $(echo bar fi diff --git a/highlighters/main/test-data/process-substitution2.zsh b/highlighters/main/test-data/process-substitution2.zsh index c8c9ffe..cc55090 100644 --- a/highlighters/main/test-data/process-substitution2.zsh +++ b/highlighters/main/test-data/process-substitution2.zsh @@ -47,4 +47,5 @@ expected_region_highlight=( if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug expected_region_highlight[8]='17 27 default' # =(echo foo + expected_region_highlight[9]='17 27 process-substitution' # =(echo foo fi diff --git a/highlighters/main/test-data/quoted-command-substitution-empty.zsh b/highlighters/main/test-data/quoted-command-substitution-empty.zsh index 099f3b0..daf3738 100644 --- a/highlighters/main/test-data/quoted-command-substitution-empty.zsh +++ b/highlighters/main/test-data/quoted-command-substitution-empty.zsh @@ -28,16 +28,17 @@ # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------------------------- -BUFFER='echo "foo$(' +BUFFER='echo "foo$( ' expected_region_highlight=( '1 4 builtin' # echo - '6 11 default' # "foo$( + '6 12 default' # "foo$( '6 9 double-quoted-argument-unclosed' # "foo - '10 11 command-substitution-quoted' # $( + '10 12 command-substitution-quoted' # $( '10 11 command-substitution-delimiter-quoted' # $( ) if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug - expected_region_highlight[2]='6 12 default' # "foo$( + expected_region_highlight[2]='6 13 default' # "foo$( + expected_region_highlight[4]='10 13 command-substitution-quoted' # $( fi