main: Move fallback calculation to a function
No functional change.
This commit is contained in:
		
							parent
							
								
									8a0ffe1c43
								
							
						
					
					
						commit
						b1eb0358fa
					
				|  | @ -65,10 +65,30 @@ _zsh_highlight_highlighter_main_predicate() | ||||||
| # Helper to deal with tokens crossing line boundaries. | # Helper to deal with tokens crossing line boundaries. | ||||||
| _zsh_highlight_main_add_region_highlight() { | _zsh_highlight_main_add_region_highlight() { | ||||||
|   integer start=$1 end=$2 |   integer start=$1 end=$2 | ||||||
|  |   local reply | ||||||
|   shift 2 |   shift 2 | ||||||
| 
 | 
 | ||||||
|   # Automate inheritance. |   # The calculation was relative to $PREBUFFER$BUFFER, but region_highlight is | ||||||
|   typeset -A fallback_of; fallback_of=( |   # relative to $BUFFER. | ||||||
|  |   (( start -= $#PREBUFFER )) | ||||||
|  |   (( end -= $#PREBUFFER )) | ||||||
|  | 
 | ||||||
|  |   (( start >= end )) && { print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_main_add_region_highlight: start($start) >= end($end)"; return } | ||||||
|  |   (( end <= 0 )) && return | ||||||
|  |   (( start < 0 )) && start=0 # having start<0 is normal with e.g. multiline strings | ||||||
|  | 
 | ||||||
|  |   _zsh_highlight_main_calculate_fallback $1 | ||||||
|  |   _zsh_highlight_add_highlight $start $end $reply | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _zsh_highlight_main_add_many_region_highlights() { | ||||||
|  |   for 1 2 3; do | ||||||
|  |     _zsh_highlight_main_add_region_highlight $1 $2 $3 | ||||||
|  |   done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _zsh_highlight_main_calculate_fallback() { | ||||||
|  |   local -A fallback_of; fallback_of=( | ||||||
|       alias arg0 |       alias arg0 | ||||||
|       suffix-alias arg0 |       suffix-alias arg0 | ||||||
|       builtin arg0 |       builtin arg0 | ||||||
|  | @ -90,27 +110,12 @@ _zsh_highlight_main_add_region_highlight() { | ||||||
|       back-quoted-argument{-unclosed,} |       back-quoted-argument{-unclosed,} | ||||||
|   ) |   ) | ||||||
|   local needle=$1 value |   local needle=$1 value | ||||||
|  |   reply=($1) | ||||||
|   while [[ -n ${value::=$fallback_of[(k)$needle]} ]]; do |   while [[ -n ${value::=$fallback_of[(k)$needle]} ]]; do | ||||||
|     unset "fallback_of[$needle]" # paranoia against infinite loops |     unset "fallback_of[$needle]" # paranoia against infinite loops | ||||||
|     argv+=($value) |     reply+=($value) | ||||||
|     needle=$value |     needle=$value | ||||||
|   done |   done | ||||||
| 
 |  | ||||||
|   # The calculation was relative to $PREBUFFER$BUFFER, but region_highlight is |  | ||||||
|   # relative to $BUFFER. |  | ||||||
|   (( start -= $#PREBUFFER )) |  | ||||||
|   (( end -= $#PREBUFFER )) |  | ||||||
| 
 |  | ||||||
|   (( start >= end )) && { print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_main_add_region_highlight: start($start) >= end($end)"; return } |  | ||||||
|   (( end <= 0 )) && return |  | ||||||
|   (( start < 0 )) && start=0 # having start<0 is normal with e.g. multiline strings |  | ||||||
|   _zsh_highlight_add_highlight $start $end "$@" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| _zsh_highlight_main_add_many_region_highlights() { |  | ||||||
|   for 1 2 3; do |  | ||||||
|     _zsh_highlight_main_add_region_highlight $1 $2 $3 |  | ||||||
|   done |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Get the type of a command. | # Get the type of a command. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue