Highlight 'noglob' correctly in more cases.
Fixes zsh-users/zsh-syntax-highlighting#189.
This commit is contained in:
@@ -103,7 +103,9 @@ _zsh_highlight_main_highlighter()
|
||||
for arg in ${(z)buf}; do
|
||||
local substr_color=0
|
||||
local style_override=""
|
||||
[[ $start_pos -eq 0 && $arg = 'noglob' ]] && highlight_glob=false
|
||||
if $new_expression && [[ $arg = 'noglob' ]]; then
|
||||
highlight_glob=false
|
||||
fi
|
||||
|
||||
# advance $start_pos, skipping over whitespace in $buf.
|
||||
if [[ $arg == ';' ]] ; then
|
||||
@@ -135,7 +137,7 @@ _zsh_highlight_main_highlighter()
|
||||
sudo_arg=false
|
||||
else
|
||||
sudo=false
|
||||
new_expression=true
|
||||
new_expression=true; highlight_glob=true
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@@ -167,7 +169,7 @@ _zsh_highlight_main_highlighter()
|
||||
if [[ $arg[-1] != '(' ]]; then
|
||||
# assignment to a scalar parameter.
|
||||
# (For array assignments, the command doesn't start until the ")" token.)
|
||||
new_expression=true
|
||||
new_expression=true; highlight_glob=true
|
||||
fi
|
||||
elif _zsh_highlight_main_highlighter_check_path; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[path]
|
||||
@@ -185,7 +187,7 @@ _zsh_highlight_main_highlighter()
|
||||
else # $arg is the file target of a prefix redirection, or a non-command word
|
||||
if $redirection; then
|
||||
redirection=false
|
||||
new_expression=true
|
||||
new_expression=true; highlight_glob=true
|
||||
fi
|
||||
case $arg in
|
||||
'--'*) style=$ZSH_HIGHLIGHT_STYLES[double-hyphen-option];;
|
||||
@@ -214,6 +216,7 @@ _zsh_highlight_main_highlighter()
|
||||
[[ -n $style_override ]] && style=$ZSH_HIGHLIGHT_STYLES[$style_override]
|
||||
[[ $substr_color = 0 ]] && _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style
|
||||
[[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS:#"$arg"} ]] && new_expression=true
|
||||
[[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]] && highlight_glob=true
|
||||
start_pos=$end_pos
|
||||
done
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user