mirror of
				https://github.com/zsh-users/zsh-syntax-highlighting.git
				synced 2025-11-03 19:45:46 +00:00 
			
		
		
		
	Optimization: -1 is extra computation of string length internally
./parse.zsh "zplugin.zsh" > out_norm.txt 106,17s user 7,84s system 98% cpu 1:55,85 total ./parse.zsh "zplugin.zsh" > out_opt.txt 51,91s user 7,44s system 99% cpu 59,912 total % wc -l zplugin.zsh 3188 zplugin.zsh
This commit is contained in:
		
							parent
							
								
									683f4837a0
								
							
						
					
					
						commit
						3cb58fd7d7
					
				@ -125,6 +125,7 @@ _zsh_highlight_main_highlighter()
 | 
			
		||||
  typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW
 | 
			
		||||
  local -a options_to_set # used in callees
 | 
			
		||||
  local buf="$PREBUFFER$BUFFER"
 | 
			
		||||
  integer len="${#buf}"
 | 
			
		||||
  region_highlight=()
 | 
			
		||||
 | 
			
		||||
  if (( path_dirs_was_set )); then
 | 
			
		||||
@ -234,11 +235,13 @@ _zsh_highlight_main_highlighter()
 | 
			
		||||
      # indistinguishable from 'echo foo echo bar' (one command with three
 | 
			
		||||
      # words for arguments).
 | 
			
		||||
      local needle=$'[;\n]'
 | 
			
		||||
      integer offset=${${buf[start_pos+1,-1]}[(i)$needle]}
 | 
			
		||||
      # Len-start_pos drops one character, but it should do it, as start_pos
 | 
			
		||||
      # starts from next, not from "start_pos", character
 | 
			
		||||
      integer offset=${${buf: start_pos: len-start_pos}[(i)$needle]}
 | 
			
		||||
      (( start_pos += offset - 1 ))
 | 
			
		||||
      (( end_pos = start_pos + $#arg ))
 | 
			
		||||
    else
 | 
			
		||||
      ((start_pos+=${#buf[$start_pos+1,-1]}-${#${buf[$start_pos+1,-1]##([[:space:]]|\\[[:space:]])#}}))
 | 
			
		||||
      ((start_pos+=(len-start_pos)-${#${${buf: start_pos: len-start_pos}##([[:space:]]|\\[[:space:]])#}}))
 | 
			
		||||
      ((end_pos=$start_pos+${#arg}))
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user