'main': Don't match redirection operators in command substitutions as <-> number range globs. Fixes #483.

This commit is contained in:
Daniel Shahaf 2018-01-18 23:25:42 +00:00
parent 901063aa0f
commit 0458b0c16f
3 changed files with 16 additions and 11 deletions

View file

@ -801,6 +801,9 @@ _zsh_highlight_main_highlighter_highlight_argument()
local i path_eligible style
path_eligible=1
local -a match mbegin mend
local MATCH; integer MBEGIN MEND
_zsh_highlight_main_add_region_highlight $start_pos $end_pos default
for (( i = 1 ; i <= end_pos - start_pos ; i += 1 )); do
case "$arg[$i]" in
@ -822,14 +825,16 @@ _zsh_highlight_main_highlighter_highlight_argument()
elif [[ $arg[i+1] == [*@#?-$!] ]]; then
(( i += 1 ))
fi;;
[*?]|\<)
# The '<' is for the <-> globbing syntax. (This function doesn't get called on redirection tokens.)
if $highlight_glob; then
*)
if $highlight_glob && [[ ${arg[$i]} == [*?] || ${arg:$i-1} == \<[0-9]#-[0-9]#\>* ]]; then
(( i += $#MATCH - 1 ))
_zsh_highlight_main_add_region_highlight $start_pos $end_pos globbing
path_eligible=0
break
fi;;
*) continue;;
else
continue
fi
;;
esac
done

View file

@ -28,13 +28,13 @@
# vim: ft=zsh sw=2 ts=2 et
# -------------------------------------------------------------------------------------------------
BUFFER='print <-> x<-> <foo2-3>'
BUFFER='print <-> x<->y <foo2-3>'
expected_region_highlight=(
'1 5 builtin' # print
'7 9 globbing' # <->
'11 14 globbing' # x<->
'16 16 redirection' # <
'17 22 default' # foo2-3 (the filename)
'23 23 redirection' # >
'11 15 globbing' # x<->
'17 17 redirection' # <
'18 23 default' # foo2-3 (the filename)
'24 24 redirection' # >
)

View file

@ -32,5 +32,5 @@ BUFFER=$': $(<foo)'
expected_region_highlight=(
'1 1 builtin' # :
'3 9 default "issue #483"' # $(<foo)
'3 9 default' # $(<foo)
)