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