Merge remote-tracking branch 'upstream/pr/374' into HEAD

* upstream/pr/374:
  'main': Directly count spaces to skip, don't leverage proc_buf length
This commit is contained in:
Daniel Shahaf 2016-09-25 15:58:35 +00:00
commit dd51b7bebe

View File

@ -256,6 +256,8 @@ _zsh_highlight_highlighter_main_paint()
'!' # reserved word; unrelated to $histchars[1] '!' # reserved word; unrelated to $histchars[1]
) )
local -a match mbegin mend
# State machine # State machine
# #
# The states are: # The states are:
@ -344,7 +346,22 @@ _zsh_highlight_highlighter_main_paint()
(( start_pos += offset )) (( start_pos += offset ))
(( end_pos = start_pos + $#arg )) (( end_pos = start_pos + $#arg ))
else else
integer offset=$(((len-start_pos)-${#${proc_buf##([[:space:]]|\\[[:space:]])#}})) # The line was:
#
# integer offset=$(((len-start_pos)-${#${proc_buf##([[:space:]]|\\[[:space:]])#}}))
#
# - len-start_pos is length of current proc_buf; basically: initial length minus where
# we are, and proc_buf is chopped to the "where we are" (compare the "previous value
# of start_pos" below, and the len-(start_pos-offset) = len-start_pos+offset)
# - what's after main minus sign is: length of proc_buf without spaces at the beginning
# - so what the line actually did, was computing length of the spaces!
# - this can be done via (#b) flag, like below
if [[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\[[:space:]])##)* ]]; then
# The first, outer parenthesis
integer offset="${#match[1]}"
else
integer offset=0
fi
((start_pos+=offset)) ((start_pos+=offset))
((end_pos=$start_pos+${#arg})) ((end_pos=$start_pos+${#arg}))
fi fi