main: Allow for patterned fallbacks
This commit is contained in:
parent
2fd7fbc3c2
commit
8a0ffe1c43
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user