diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index 29ba769..d235a95 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -722,7 +722,7 @@ _zsh_highlight_main_highlighter_highlight_list() elif (( in_redirection == 2 )); then style=redirection else - _zsh_highlight_main_highlighter_highlight_argument + _zsh_highlight_main_highlighter_highlight_argument 1 already_added=1 fi ;; @@ -838,19 +838,19 @@ _zsh_highlight_main_highlighter_check_path() return 1 } -# Highlight an argument and possibly special chars in quotes -# This command will at least highlight start_pos to end_pos with the default style +# Highlight an argument and possibly special chars in quotes starting at $1 in $arg +# This command will at least highlight $1 to end_pos with the default style _zsh_highlight_main_highlighter_highlight_argument() { - local base_style=default i=1 path_eligible=1 start style + local base_style=default i=$1 path_eligible=1 start style local -a highlights local -a match mbegin mend local MATCH; integer MBEGIN MEND - case "$arg[1]" in + case "$arg[i]" in '-') - if [[ $arg[2] == - ]]; then + if [[ $arg[i+1] == - ]]; then base_style=double-hyphen-option else base_style=single-hyphen-option @@ -858,11 +858,11 @@ _zsh_highlight_main_highlighter_highlight_argument() path_eligible=0 ;; '=') - if [[ $arg[2] == $'\x28' ]]; then + if [[ $arg[i+1] == $'\x28' ]]; then (( i += 2 )) _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,end_pos] (( i += REPLY )) - highlights+=($start_pos $(( start_pos + i )) process-substitution $reply) + highlights+=($(( start_pos + $1 - 1 )) $(( start_pos + i )) process-substitution $reply) fi esac @@ -928,13 +928,13 @@ _zsh_highlight_main_highlighter_highlight_argument() esac done - if (( path_eligible )) && _zsh_highlight_main_highlighter_check_path $arg; then + if (( path_eligible )) && _zsh_highlight_main_highlighter_check_path $arg[$1,end_pos]; then base_style=$REPLY _zsh_highlight_main_highlighter_highlight_path_separators $base_style highlights+=($reply) fi - highlights=($start_pos $end_pos $base_style $highlights) + highlights=($(( start_pos + $1 - 1 )) $end_pos $base_style $highlights) _zsh_highlight_main_add_many_region_highlights $highlights }