main: Allow for patterned fallbacks

This commit is contained in:
Matthew Martin 2018-03-12 19:34:25 -05:00
parent 2fd7fbc3c2
commit 8a0ffe1c43

View File

@ -67,9 +67,6 @@ _zsh_highlight_main_add_region_highlight() {
integer start=$1 end=$2
shift 2
if (( $+argv[2] )); then
# Caller specified inheritance explicitly.
else
# Automate inheritance.
typeset -A fallback_of; fallback_of=(
alias arg0
@ -79,6 +76,7 @@ _zsh_highlight_main_add_region_highlight() {
command arg0
precommand arg0
hashed-command arg0
arg0_\* arg0
path_prefix path
# The path separator fallback won't ever be used, due to the optimisation
@ -92,12 +90,11 @@ _zsh_highlight_main_add_region_highlight() {
back-quoted-argument{-unclosed,}
)
local needle=$1 value
while [[ -n ${value::=$fallback_of[$needle]} ]]; do
while [[ -n ${value::=$fallback_of[(k)$needle]} ]]; do
unset "fallback_of[$needle]" # paranoia against infinite loops
argv+=($value)
needle=$value
done
fi
# The calculation was relative to $PREBUFFER$BUFFER, but region_highlight is
# relative to $BUFFER.
@ -640,7 +637,7 @@ _zsh_highlight_highlighter_main_paint()
fi
fi
;;
*) _zsh_highlight_main_add_region_highlight $start_pos $end_pos arg0_$res arg0
*) _zsh_highlight_main_add_region_highlight $start_pos $end_pos arg0_$res
already_added=1
;;
esac