main: Make " and $' helper functions responsible for highlighting quote
This commit is contained in:
		
							parent
							
								
									f623b07fb0
								
							
						
					
					
						commit
						dcb115c74c
					
				|  | @ -103,6 +103,12 @@ _zsh_highlight_main_add_region_highlight() { | ||||||
|   _zsh_highlight_add_highlight $start $end "$@" |   _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. | ||||||
| # | # | ||||||
| # Uses the zsh/parameter module if available to avoid forks, and a | # Uses the zsh/parameter module if available to avoid forks, and a | ||||||
|  | @ -670,14 +676,10 @@ _zsh_highlight_highlighter_main_paint() | ||||||
|         '--'*)   style=double-hyphen-option;; |         '--'*)   style=double-hyphen-option;; | ||||||
|         '-'*)    style=single-hyphen-option;; |         '-'*)    style=single-hyphen-option;; | ||||||
|         "'"*)    style=single-quoted-argument;; |         "'"*)    style=single-quoted-argument;; | ||||||
|         '"'*)    style=double-quoted-argument |         '"'*)    _zsh_highlight_main_highlighter_highlight_double_quote | ||||||
|                  _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style |  | ||||||
|                  _zsh_highlight_main_highlighter_highlight_string |  | ||||||
|                  already_added=1 |                  already_added=1 | ||||||
|                  ;; |                  ;; | ||||||
|         \$\'*)   style=dollar-quoted-argument |         \$\'*)   _zsh_highlight_main_highlighter_highlight_dollar_quote | ||||||
|                  _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style |  | ||||||
|                  _zsh_highlight_main_highlighter_highlight_dollar_string |  | ||||||
|                  already_added=1 |                  already_added=1 | ||||||
|                  ;; |                  ;; | ||||||
|         '`'*)    style=back-quoted-argument;; |         '`'*)    style=back-quoted-argument;; | ||||||
|  | @ -801,11 +803,12 @@ _zsh_highlight_main_highlighter_check_path() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Highlight special chars inside double-quoted strings | # Highlight special chars inside double-quoted strings | ||||||
| _zsh_highlight_main_highlighter_highlight_string() | _zsh_highlight_main_highlighter_highlight_double_quote() | ||||||
| { | { | ||||||
|   local -a match mbegin mend |   local -a highlights match mbegin mend | ||||||
|   local MATCH; integer MBEGIN MEND |   local MATCH; integer MBEGIN MEND | ||||||
|   local i j k style |   local i j k style | ||||||
|  | 
 | ||||||
|   # Starting quote is at 1, so start parsing at offset 2 in the string. |   # Starting quote is at 1, so start parsing at offset 2 in the string. | ||||||
|   for (( i = 2 ; i < end_pos - start_pos ; i += 1 )) ; do |   for (( i = 2 ; i < end_pos - start_pos ; i += 1 )) ; do | ||||||
|     (( j = i + start_pos - 1 )) |     (( j = i + start_pos - 1 )) | ||||||
|  | @ -851,18 +854,22 @@ _zsh_highlight_main_highlighter_highlight_string() | ||||||
|       *) continue ;; |       *) continue ;; | ||||||
| 
 | 
 | ||||||
|     esac |     esac | ||||||
|     _zsh_highlight_main_add_region_highlight $j $k $style |     highlights+=($j $k $style) | ||||||
|   done |   done | ||||||
|  | 
 | ||||||
|  |   highlights=($start_pos $end_pos double-quoted-argument $highlights) | ||||||
|  |   _zsh_highlight_main_add_many_region_highlights $highlights | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Highlight special chars inside dollar-quoted strings | # Highlight special chars inside dollar-quoted strings | ||||||
| _zsh_highlight_main_highlighter_highlight_dollar_string() | _zsh_highlight_main_highlighter_highlight_dollar_quote() | ||||||
| { | { | ||||||
|   local -a match mbegin mend |   local -a highlights match mbegin mend | ||||||
|   local MATCH; integer MBEGIN MEND |   local MATCH; integer MBEGIN MEND | ||||||
|   local i j k style |   local i j k style | ||||||
|   local AA |   local AA | ||||||
|   integer c |   integer c | ||||||
|  | 
 | ||||||
|   # Starting dollar-quote is at 1:2, so start parsing at offset 3 in the string. |   # Starting dollar-quote is at 1:2, so start parsing at offset 3 in the string. | ||||||
|   for (( i = 3 ; i < end_pos - start_pos ; i += 1 )) ; do |   for (( i = 3 ; i < end_pos - start_pos ; i += 1 )) ; do | ||||||
|     (( j = i + start_pos - 1 )) |     (( j = i + start_pos - 1 )) | ||||||
|  | @ -893,8 +900,11 @@ _zsh_highlight_main_highlighter_highlight_dollar_string() | ||||||
|       *) continue ;; |       *) continue ;; | ||||||
| 
 | 
 | ||||||
|     esac |     esac | ||||||
|     _zsh_highlight_main_add_region_highlight $j $k $style |     highlights+=($j $k $style) | ||||||
|   done |   done | ||||||
|  | 
 | ||||||
|  |   highlights=($start_pos $end_pos dollar-quoted-argument $highlights) | ||||||
|  |   _zsh_highlight_main_add_many_region_highlights $highlights | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Called with a single positional argument. | # Called with a single positional argument. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue