move subtraction by one out of prompt_pure_string_length
prompt_pure_string_length is used for calculating the length of the preprompt, but the preprompt doesn't contain a newline, so we shouldn't subtract by one in prompt_pure_string_length. What should happen instead is that when we subtract one from the length when we calculate the number of lines the preprompt occupies.
This commit is contained in:
5
pure.zsh
5
pure.zsh
@@ -76,8 +76,7 @@ prompt_pure_preexec() {
|
|||||||
|
|
||||||
# string length ignoring ansi escapes
|
# string length ignoring ansi escapes
|
||||||
prompt_pure_string_length() {
|
prompt_pure_string_length() {
|
||||||
# Subtract one since newline is counted as two characters
|
echo $(( ${#${(S%%)1//(\%([KF1]|)\{*\}|\%[Bbkf])}} ))
|
||||||
echo $(( ${#${(S%%)1//(\%([KF1]|)\{*\}|\%[Bbkf])}} - 1 ))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt_pure_preprompt_render() {
|
prompt_pure_preprompt_render() {
|
||||||
@@ -108,7 +107,7 @@ prompt_pure_preprompt_render() {
|
|||||||
|
|
||||||
# calculate length of preprompt for redraw purposes
|
# calculate length of preprompt for redraw purposes
|
||||||
local preprompt_length=$(prompt_pure_string_length $preprompt)
|
local preprompt_length=$(prompt_pure_string_length $preprompt)
|
||||||
local lines=$(( $preprompt_length / $COLUMNS + 1 ))
|
local lines=$(( ($preprompt_length - 1) / $COLUMNS + 1 ))
|
||||||
|
|
||||||
# disable clearing of line if last char of preprompt is last column of terminal
|
# disable clearing of line if last char of preprompt is last column of terminal
|
||||||
local clr="\e[K"
|
local clr="\e[K"
|
||||||
|
|||||||
Reference in New Issue
Block a user