main: Allow for patterned fallbacks
This commit is contained in:
		
							parent
							
								
									2fd7fbc3c2
								
							
						
					
					
						commit
						8a0ffe1c43
					
				|  | @ -67,37 +67,34 @@ _zsh_highlight_main_add_region_highlight() { | ||||||
|   integer start=$1 end=$2 |   integer start=$1 end=$2 | ||||||
|   shift 2 |   shift 2 | ||||||
| 
 | 
 | ||||||
|   if (( $+argv[2] )); then |   # Automate inheritance. | ||||||
|     # Caller specified inheritance explicitly. |   typeset -A fallback_of; fallback_of=( | ||||||
|   else |       alias arg0 | ||||||
|     # Automate inheritance. |       suffix-alias arg0 | ||||||
|     typeset -A fallback_of; fallback_of=( |       builtin arg0 | ||||||
|         alias arg0 |       function arg0 | ||||||
|         suffix-alias arg0 |       command arg0 | ||||||
|         builtin arg0 |       precommand arg0 | ||||||
|         function arg0 |       hashed-command arg0 | ||||||
|         command arg0 |       arg0_\* arg0 | ||||||
|         precommand arg0 |  | ||||||
|         hashed-command arg0 |  | ||||||
| 
 | 
 | ||||||
|         path_prefix path |       path_prefix path | ||||||
|         # The path separator fallback won't ever be used, due to the optimisation |       # The path separator fallback won't ever be used, due to the optimisation | ||||||
|         # in _zsh_highlight_main_highlighter_highlight_path_separators(). |       # in _zsh_highlight_main_highlighter_highlight_path_separators(). | ||||||
|         path_pathseparator path |       path_pathseparator path | ||||||
|         path_prefix_pathseparator path_prefix |       path_prefix_pathseparator path_prefix | ||||||
| 
 | 
 | ||||||
|         single-quoted-argument{-unclosed,} |       single-quoted-argument{-unclosed,} | ||||||
|         double-quoted-argument{-unclosed,} |       double-quoted-argument{-unclosed,} | ||||||
|         dollar-quoted-argument{-unclosed,} |       dollar-quoted-argument{-unclosed,} | ||||||
|         back-quoted-argument{-unclosed,} |       back-quoted-argument{-unclosed,} | ||||||
|     ) |   ) | ||||||
|     local needle=$1 value |   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 |     unset "fallback_of[$needle]" # paranoia against infinite loops | ||||||
|       argv+=($value) |     argv+=($value) | ||||||
|       needle=$value |     needle=$value | ||||||
|     done |   done | ||||||
|   fi |  | ||||||
| 
 | 
 | ||||||
|   # The calculation was relative to $PREBUFFER$BUFFER, but region_highlight is |   # The calculation was relative to $PREBUFFER$BUFFER, but region_highlight is | ||||||
|   # relative to $BUFFER. |   # relative to $BUFFER. | ||||||
|  | @ -640,7 +637,7 @@ _zsh_highlight_highlighter_main_paint() | ||||||
|                           fi |                           fi | ||||||
|                         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 |                         already_added=1 | ||||||
|                         ;; |                         ;; | ||||||
|       esac |       esac | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue