Use zle reset-prompt to restore cursor instead of relying on ansi codes
This fixes #191 and can be considered a more robust method of restoring cursor position.
This commit is contained in:
8
pure.zsh
8
pure.zsh
@@ -177,9 +177,6 @@ prompt_pure_preprompt_render() {
|
||||
elif (( last_lines < lines )); then
|
||||
# move cursor using newlines because ansi cursor movement can't push the cursor beyond the last line
|
||||
printf $'\n'%.0s {1..$(( lines - last_lines ))}
|
||||
|
||||
# redraw the prompt since it has been moved by print
|
||||
zle && zle .reset-prompt
|
||||
fi
|
||||
|
||||
# disable clearing of line if last char of preprompt is last column of terminal
|
||||
@@ -187,7 +184,10 @@ prompt_pure_preprompt_render() {
|
||||
(( COLUMNS * lines == preprompt_length )) && clr=
|
||||
|
||||
# modify previous preprompt
|
||||
print -Pn "\e7${clr_prev_preprompt}\e[${lines}A\e[1G${preprompt}${clr}\e8"
|
||||
print -Pn "${clr_prev_preprompt}\e[${lines}A\e[${COLUMNS}D${preprompt}${clr}\n"
|
||||
|
||||
# redraw prompt (also resets cursor position)
|
||||
zle && zle .reset-prompt
|
||||
fi
|
||||
|
||||
# store previous preprompt for comparison
|
||||
|
||||
Reference in New Issue
Block a user