mirror of
https://github.com/zsh-users/zsh-syntax-highlighting.git
synced 2025-02-13 10:05:31 +08:00
Bug fix: when editing multi-line complex command highlighting was shifted by one character starting from second line. This behaviour was due to splitting of BUFFER using shell parser ${(z)BUFFER}, which basically changes all newlines to semicolons.
This commit is contained in:
parent
6d9a34065c
commit
df99f5f61a
@ -84,12 +84,19 @@ _zsh_highlight_main_highlighter()
|
|||||||
$ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR $ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS
|
$ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR $ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
splitbuf1=(${(z)BUFFER})
|
||||||
|
splitbuf2=(${(z)BUFFER//$'\n'/ \$\'\\\\n\' }) # ugly hack, but I have no other idea
|
||||||
|
local argnum=0
|
||||||
for arg in ${(z)BUFFER}; do
|
for arg in ${(z)BUFFER}; do
|
||||||
|
argnum=$((argnum+1))
|
||||||
|
if [[ $splitbuf1[$argnum] != $splitbuf2[$argnum] ]] && new_expression=true && continue
|
||||||
|
|
||||||
local substr_color=0 isfile=false
|
local substr_color=0 isfile=false
|
||||||
local style_override=""
|
local style_override=""
|
||||||
[[ $start_pos -eq 0 && $arg = 'noglob' ]] && highlight_glob=false
|
[[ $start_pos -eq 0 && $arg = 'noglob' ]] && highlight_glob=false
|
||||||
((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]##[[:space:]]#}}))
|
((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]##[[:space:]]#}}))
|
||||||
((end_pos=$start_pos+${#arg}))
|
((end_pos=$start_pos+${#arg}))
|
||||||
|
|
||||||
# Parse the sudo command line
|
# Parse the sudo command line
|
||||||
if $sudo; then
|
if $sudo; then
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
|
Loading…
Reference in New Issue
Block a user