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
|
typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW
|
||||||
local -a options_to_set # used in callees
|
local -a options_to_set # used in callees
|
||||||
local buf="$PREBUFFER$BUFFER"
|
local buf="$PREBUFFER$BUFFER"
|
||||||
|
integer len="${#buf}"
|
||||||
region_highlight=()
|
region_highlight=()
|
||||||
|
|
||||||
if (( path_dirs_was_set )); then
|
if (( path_dirs_was_set )); then
|
||||||
@ -234,11 +235,13 @@ _zsh_highlight_main_highlighter()
|
|||||||
# indistinguishable from 'echo foo echo bar' (one command with three
|
# indistinguishable from 'echo foo echo bar' (one command with three
|
||||||
# words for arguments).
|
# words for arguments).
|
||||||
local needle=$'[;\n]'
|
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 ))
|
(( start_pos += offset - 1 ))
|
||||||
(( end_pos = start_pos + $#arg ))
|
(( end_pos = start_pos + $#arg ))
|
||||||
else
|
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}))
|
((end_pos=$start_pos+${#arg}))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user