Declare styles in an associative array to make it easily overridable
This commit is contained in:
		
							parent
							
								
									00427081d1
								
							
						
					
					
						commit
						91760946f3
					
				|  | @ -5,26 +5,27 @@ | ||||||
| 
 | 
 | ||||||
| # Token types styles. | # Token types styles. | ||||||
| # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135 | # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135 | ||||||
| ZLE_RESERVED_WORD_STYLE='fg=yellow,bold' | typeset -A ZSH_SYNTAX_HIGHLIGHTING_STYLES | ||||||
| ZLE_ALIAS_STYLE='fg=green,bold' | ZSH_SYNTAX_HIGHLIGHTING_STYLES=( | ||||||
| ZLE_BUILTIN_STYLE='fg=cyan,bold' |   default                       'none' | ||||||
| ZLE_FUNCTION_STYLE='fg=blue,bold' |   unknown-token                 'fg=red,bold' | ||||||
| ZLE_COMMAND_STYLE='fg=green,bold' |   reserved-word                 'fg=yellow,bold' | ||||||
| ZLE_PATH_STYLE='fg=white,underline' |   alias                         'fg=green,bold' | ||||||
| ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold' |   builtin                       'fg=cyan,bold' | ||||||
|  |   function                      'fg=blue,bold' | ||||||
|  |   command                       'fg=green,bold' | ||||||
|  |   path                          'fg=white,underline' | ||||||
|  |   globbing                      'fg=blue,bold' | ||||||
|  |   single-hyphen-option          'fg=yellow' | ||||||
|  |   double-hyphen-option          'fg=yellow' | ||||||
|  |   single-quoted-argument        'fg=yellow' | ||||||
|  |   double-quoted-argument        'fg=yellow' | ||||||
|  |   dollar-double-quoted-argument 'fg=cyan' | ||||||
|  |   back-quoted-argument          'fg=cyan,bold' | ||||||
|  |   back-double-quoted-argument   'fg=magenta' | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| ZLE_HYPHEN_CLI_OPTION='fg=white' | ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' 'noglob' 'command' 'builtin') | ||||||
| ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=white' |  | ||||||
| ZLE_SINGLE_QUOTED='fg=yellow' |  | ||||||
| ZLE_DOUBLE_QUOTED='fg=yellow' |  | ||||||
| ZLE_DOLLAR_DOUBLE_QUOTED='fg=cyan' |  | ||||||
| ZLE_BACK_DOUBLE_QUOTED='fg=magenta' |  | ||||||
| ZLE_BACK_QUOTED='fg=cyan,bold' |  | ||||||
| ZLE_GLOBING='fg=blue,bold' |  | ||||||
| 
 |  | ||||||
| ZLE_DEFAULT='fg=white,bold' |  | ||||||
| 
 |  | ||||||
| ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' 'noglob' 'command' 'builtin') |  | ||||||
| 
 | 
 | ||||||
| _check_path() { | _check_path() { | ||||||
|   [[ -z $arg ]] && return 1 |   [[ -z $arg ]] && return 1 | ||||||
|  | @ -44,10 +45,10 @@ _hl_string() { | ||||||
|     (( j = i + start_pos - 1 )) |     (( j = i + start_pos - 1 )) | ||||||
|     (( k = j + 1 )) |     (( k = j + 1 )) | ||||||
|     c="$arg[$i]" |     c="$arg[$i]" | ||||||
|     [[ "$c" = '$' ]] && region_highlight+=("$j $k $ZLE_DOLLAR_DOUBLE_QUOTED") |     [[ "$c" = '$' ]] && region_highlight+=("$j $k $ZSH_SYNTAX_HIGHLIGHTING_STYLES[dollar-double-quoted-argument]") | ||||||
|     if [[ "$c" = "\\" ]] ; then |     if [[ "$c" = "\\" ]] ; then | ||||||
|       (( k = k + 1 )) |       (( k = k + 1 )) | ||||||
|       region_highlight+=("$j $k $ZLE_BACK_DOUBLE_QUOTED") |       region_highlight+=("$j $k $ZSH_SYNTAX_HIGHLIGHTING_STYLES[back-double-quoted-argument]") | ||||||
|     fi |     fi | ||||||
|   done |   done | ||||||
| } | } | ||||||
|  | @ -66,44 +67,44 @@ colorize-zle-buffer() { | ||||||
|       colorize=false |       colorize=false | ||||||
|       res=$(LC_ALL=C builtin type -w $arg 2>/dev/null) |       res=$(LC_ALL=C builtin type -w $arg 2>/dev/null) | ||||||
|       case $res in |       case $res in | ||||||
|         *': reserved')  style=$ZLE_RESERVED_WORD_STYLE;; |         *': reserved')  style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[reserved-word];; | ||||||
|         *': alias')     style=$ZLE_ALIAS_STYLE;; |         *': alias')     style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[alias];; | ||||||
|         *': builtin')   style=$ZLE_BUILTIN_STYLE;; |         *': builtin')   style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[builtin];; | ||||||
|         *': function')  style=$ZLE_FUNCTION_STYLE;; |         *': function')  style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[function];; | ||||||
|         *': command')   style=$ZLE_COMMAND_STYLE;; |         *': command')   style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[command];; | ||||||
|         *) |         *) | ||||||
|           if _check_path; then |           if _check_path; then | ||||||
|             style=$ZLE_PATH_STYLE |             style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[path] | ||||||
|           else |           else | ||||||
|             style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE |             style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[unknown-token] | ||||||
|           fi |           fi | ||||||
|           ;; |           ;; | ||||||
|       esac |       esac | ||||||
|     else |     else | ||||||
|       case $arg in |       case $arg in | ||||||
|           '--'*)   style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;; |           '--'*)   style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[double-hyphen-option];; | ||||||
|           '-'*)    style=$ZLE_HYPHEN_CLI_OPTION;; |           '-'*)    style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[single-hyphen-option];; | ||||||
|           "'"*"'") style=$ZLE_SINGLE_QUOTED;; |           "'"*"'") style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[single-quoted-argument];; | ||||||
|           '"'*'"') style=$ZLE_DOUBLE_QUOTED |           '"'*'"') style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[double-quoted-argument] | ||||||
|                    region_highlight+=("$start_pos $end_pos $style") |                    region_highlight+=("$start_pos $end_pos $style") | ||||||
|                    _hl_string |                    _hl_string | ||||||
|                    substr_color=1 |                    substr_color=1 | ||||||
|                    ;; |                    ;; | ||||||
|           '`'*'`') style=$ZLE_BACK_QUOTED;; |           '`'*'`') style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[back-quoted-argument];; | ||||||
|           *"*"*)   style=$ZLE_GLOBING;; |           *"*"*)   style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[globbing];; | ||||||
|           *)       style=$ZLE_DEFAULT |           *)       style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[default] | ||||||
|                    _check_path && style=$ZLE_PATH_STYLE |                    _check_path && style=$ZSH_SYNTAX_HIGHLIGHTING_STYLES[path] | ||||||
|                    ;; |                    ;; | ||||||
|       esac |       esac | ||||||
|     fi |     fi | ||||||
|     [[ $substr_color = 0 ]] && region_highlight+=("$start_pos $end_pos $style") |     [[ $substr_color = 0 ]] && region_highlight+=("$start_pos $end_pos $style") | ||||||
|     [[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]:-}:+yes} = 'yes' ]] && colorize=true |     [[ ${${ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]:-}:+yes} = 'yes' ]] && colorize=true | ||||||
|     start_pos=$end_pos |     start_pos=$end_pos | ||||||
|   done |   done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Bind the function to ZLE events. | # Bind the function to ZLE events. | ||||||
| ZLE_COLORED_FUNCTIONS=( | ZSH_HIGHLIGHT_COLORED_FUNCTIONS=( | ||||||
|   self-insert |   self-insert | ||||||
|   magic-space |   magic-space | ||||||
|   delete-char |   delete-char | ||||||
|  | @ -119,7 +120,7 @@ ZLE_COLORED_FUNCTIONS=( | ||||||
|   yank |   yank | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| for f in $ZLE_COLORED_FUNCTIONS; do | for f in $ZSH_HIGHLIGHT_COLORED_FUNCTIONS; do | ||||||
|   eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f" |   eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f" | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue