'main': Add infrastructure for treating literal newlines differently to semicolons.
Used by the next commit.
This commit is contained in:
		
							parent
							
								
									e58e45273f
								
							
						
					
					
						commit
						a4525a0826
					
				|  | @ -359,6 +359,7 @@ _zsh_highlight_highlighter_main_paint() | |||
| 
 | ||||
|   ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR=( | ||||
|     '|' '||' ';' '&' '&&' | ||||
|     $'\n' # ${(z)} returns ';' but we convert it to $'\n' | ||||
|     '|&' | ||||
|     '&!' '&|' | ||||
|     # ### 'case' syntax, but followed by a pattern, not by a command | ||||
|  | @ -535,12 +536,17 @@ _zsh_highlight_main_highlighter_highlight_list() | |||
| 
 | ||||
|     if (( in_alias == 0 && in_param == 0 )); then | ||||
|       # Compute the new $start_pos and $end_pos, skipping over whitespace in $buf. | ||||
|       [[ "$proc_buf" = (#b)(#s)(([ $'\t']|\\$'\n')#)* ]] | ||||
|       [[ "$proc_buf" = (#b)(#s)(([ $'\t']|[\\]$'\n')#)(?|)* ]] | ||||
|       # The first, outer parenthesis | ||||
|       integer offset="${#match[1]}" | ||||
|       (( start_pos = end_pos + offset )) | ||||
|       (( end_pos = start_pos + $#arg )) | ||||
| 
 | ||||
|       # The zsh lexer considers ';' and newline to be the same token, so | ||||
|       # ${(z)} converts all newlines to semicolons. Convert them back here to | ||||
|       # make later processing simplier. | ||||
|       [[ $arg == ';' && ${match[3]} == $'\n' ]] && arg=$'\n' | ||||
| 
 | ||||
|       # Compute the new $proc_buf. We advance it | ||||
|       # (chop off characters from the beginning) | ||||
|       # beyond what end_pos points to, by skipping | ||||
|  | @ -731,7 +737,7 @@ _zsh_highlight_main_highlighter_highlight_list() | |||
|      else | ||||
|        style=unknown-token | ||||
|      fi | ||||
|      if [[ $arg == ';' ]] && $in_array_assignment; then | ||||
|      if [[ $arg == (';'|$'\n') ]] && $in_array_assignment; then | ||||
|        # literal newline inside an array assignment | ||||
|        next_word=':regular:' | ||||
|      else | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue