From 65246f791fb0ebd4c723b35077fed4c68ff3bd08 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Wed, 22 Sep 2010 11:50:39 +0200 Subject: [Prompts] corrects prompt lines calculation --- 12_Prompts.zsh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/12_Prompts.zsh b/12_Prompts.zsh index b3e0806..0ebc21f 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -30,15 +30,14 @@ set_prompt_colors expand_text() { - # strips the %{...%} - print -Pn -- "$(echo $@ | sed 's/%{[^(%})]*%}//g')" + # strips the %{...%} and newlines characters + print -Pn -- "$(echo $@ | tr -d '\n' | sed 's/%{[^(%})]*%}//g')" } preexec () { term_title "$(echo $1 | tr ' \n' ' ;' | sed 's/%/%%/g;s/\\/\\\\/g;s/;$//')" - local lines="$(expand_text "$PROMPT$1" | sed "s/\\(.\{$COLUMNS\}\\)/\\1\\n/g" | wc -l)" prompt_colors[date]=$date_colors[exec] set_prompt_date prompt_colors[date]=$date_colors[normal] @@ -51,9 +50,8 @@ preexec () done redefine_prompt - local string="$(expand_text "$PROMPT$1")" - local lines=$(( (${#string} - 1) / $COLUMNS + $(echo ${string} | wc -l) - 2 )) - for i in {0..$lines} ; print -Pn "\e[1A\e[2K" + local lines="$(($(expand_text "$PROMPT$1" | sed "s/\\(.\{0,$COLUMNS\}\\)/\\1\\n/g" | wc -l)))" + for i in {1..$lines} ; print -Pn "\e[1A\e[2K" print -Pn "\r$PROMPT" print -Pn "$C_$color[cyan]$_C" print "${(q)1}" | sed "s/'$//;s/^'//" -- cgit v1.2.3