From 9ba0df7fa201845211ffec10021b250e8f255d37 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 12 Aug 2008 12:03:30 +0200 Subject: [PATCH 1/5] Corrects an error while calculating spaceleft.. --- 12_Prompts.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/12_Prompts.zsh b/12_Prompts.zsh index b3d2ed7..af9ec6c 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -86,7 +86,7 @@ old_precmd() spaceleft=$((1 + $COLUMNS - $ERRORSIZE - $MAILSTATSIZE - $DATESIZE)) unset HBAR - for h in {1..$(($spaceleft - 1))} + for h in {1..$spaceleft} do HBAR=$HBAR- done From 44eaa93460f73a6c72e6c75085d129ab055f97b2 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Wed, 13 Aug 2008 16:03:43 +0200 Subject: [PATCH 2/5] First tests with termcaps for drawing borders into prompt --- 10_Environment.zsh | 23 +++++++++++++++++++++++ 11_Colors.zsh | 6 +----- 12_Prompts.zsh | 25 ++++++++++++------------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/10_Environment.zsh b/10_Environment.zsh index 4d7adfe..970a6ce 100644 --- a/10_Environment.zsh +++ b/10_Environment.zsh @@ -34,6 +34,29 @@ _c=m C_="%{$c_" _C="$_c%}" +## Termcaps ########################### + +# Activates the alternate charset +echo $termcap[eA] + +typeset -A chars + +chars['-']="$termcap[as]q$termcap[ae]" +chars['|']="$termcap[as]x$termcap[ae]" + +chars[lr]="$termcap[as]j$termcap[ae]" +chars[ur]="$termcap[as]k$termcap[ae]" +chars[ul]="$termcap[as]l$termcap[ae]" +chars[ll]="$termcap[as]m$termcap[ae]" + +chars['+']="$termcap[as]n$termcap[ae]" + +chars[lT]="$termcap[as]t$termcap[ae]" +chars[rT]="$termcap[as]u$termcap[ae]" +chars[bT]="$termcap[as]v$termcap[ae]" +chars[tT]="$termcap[as]w$termcap[ae]" + + ## Variables d'environnement ``classiques'' # # L'utilisation de la forme ${VARIABLE:+$VARIABLE:} permet d'accoler ``:'' diff --git a/11_Colors.zsh b/11_Colors.zsh index 73f94e2..9bb7d3b 100644 --- a/11_Colors.zsh +++ b/11_Colors.zsh @@ -45,16 +45,12 @@ set_prompt_colors () my_generic=${1:-$prompt_colors[generic]} prompt_colors[path]="$my_generic;$color[bold]" # pwd - #prompt_colors[term]="$my_generic" # tty prompt_colors[user]="$my_generic" # login prompt_colors[host]="$my_generic" # hostname - #prompt_colors[hist]="$color[none]" # history number prompt_colors[arob]="$color[bold];$my_generic" # @ prompt_colors[dies]="$my_generic" # the bottom-end of the prompt prompt_colors[doubledot]="$color[none]" # separates pwd from git-branch - #prompt_colors[paren]="$color[cyan]" # parenthesis (around tty) - prompt_colors[bar]="$my_generic;$color[bold]" # horizontal bar - prompt_colors[braces]="$prompt_colors[bar]" # braces (around date) + prompt_colors[border]="$my_generic;$color[bold]" # horizontal bar prompt_colors[error]="$color[bold];$color[yellow]" # error code prompt_colors[date]="$my_generic" # full date diff --git a/12_Prompts.zsh b/12_Prompts.zsh index af9ec6c..3130aaf 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -31,8 +31,8 @@ preexec () expand_text() { - # strips the %{...%} - print -Pn -- "$(echo $@ | sed 's/%{[^(%})]*%}//g')" + # strips the %{...%} and $termcap special keys + print -Pn -- $(echo $@ | sed "s/%{[^(%})]*%}//g;s/$termcap[as]//g;s/$termcap[ae]//g") } new_precmd() @@ -48,18 +48,18 @@ new_precmd() typeset -A ERROR DATE MAILS LOGIN HOST CWD GITINFO SVNINFO PRECMD ERROR[color] = $prompt_colors[error] ERROR[string] = "%(?;;%?)" - ERROR[pre] = "-" + ERROR[pre] = $chars['-'] ERROR[post] = - ERROR[size] = ${#$(print -Pn $ERROR[pre]$ERROR[string]$ERROR[post])} + ERROR[size] = ${#$(expand_text $ERROR[pre]$ERROR[string]$ERROR[post])} } old_precmd() { # Error error=$(print -Pn "%(?;;-%?)") - [ "$DEBUG" = "yes" ] && echo -n " Error code..." + [ "$DEBUG" = "yes" ] && echo -n " Error code... ($error)" ERRORSIZE=${#error} - ERROR="%(?;;"$C_$prompt_colors[bar]$_C"-"$C_$prompt_colors[error]$_C"%?)" + ERROR="%(?;;$C_$prompt_colors[border]$_C"-"$C_$prompt_colors[error]$_C%?)" [ "$DEBUG" = "yes" ] && echo [ "$DEBUG" = "yes" ] && echo -n " Term title..." @@ -69,26 +69,26 @@ old_precmd() # Date [ "$DEBUG" = "yes" ] && echo -n " Date..." - DATE=$C_$prompt_colors[braces]$_C"[ "$C_$prompt_colors[date]$_C"%D{%a-%d-%b-%Y %H:%M:%S}"$C_$prompt_colors[braces]$_C" ]"$C_$prompt_colors[bar]$_C"-" + DATE=$C_$prompt_colors[border]$_C"$chars[rT] "$C_$prompt_colors[date]$_C"%D{%a-%d-%b-%Y %H:%M:%S}"$C_$prompt_colors[border]$_C" $chars[lT]"$C_$prompt_colors[border]$_C$chars['-'] DATEEXPAND=$(expand_text "$DATE") DATESIZE=${#DATEEXPAND} [ "$DEBUG" = "yes" ] && echo # Mailcheck [ "$DEBUG" = "yes" ] && echo -n " Mails..." - MAILSTAT=$(eval echo "`[ -s ~/.procmail/procmail.log ] && < ~/.procmail/procmail.log awk 'BEGIN {RS="From" ; HAM=-1 ; LISTES=0 } !/JUNK/ { HAM++ } /Listes|Newsletters|Notifications/ { LISTES++ } END { if ((HAM - LISTES) > 0) { print "$C_$prompt_colors[bar]$_C""-""$C_$mail_colors[unread]$_C""@" } else if (LISTES > 0) { print "$C_$prompt_colors[bar]$_C""-""$C_$mail_colors[listes]$_C""@" } }'`") + MAILSTAT=$(eval echo "`[ -s ~/.procmail/procmail.log ] && < ~/.procmail/procmail.log awk 'BEGIN {RS="From" ; HAM=-1 ; LISTES=0 } !/JUNK/ { HAM++ } /Listes|Newsletters|Notifications/ { LISTES++ } END { if ((HAM - LISTES) > 0) { print "$C_$prompt_colors[border]$_C'-'$C_$mail_colors[unread]$_C""@" } else if (LISTES > 0) { print "$C_$prompt_colors[border]$_C'-'$C_$mail_colors[listes]$_C""@" } }'`") MAILSTATEXPAND=$(expand_text "$MAILSTAT") MAILSTATSIZE=${#MAILSTATEXPAND} [ "$DEBUG" = "yes" ] && echo [ "$DEBUG" = "yes" ] && echo -n " Horizontal bar..." # First line of prompt, calculation of the remaining place - spaceleft=$((1 + $COLUMNS - $ERRORSIZE - $MAILSTATSIZE - $DATESIZE)) + spaceleft=$((1 + $COLUMNS - $ERRORSIZE - $MAILSTATSIZE - $DATESIZE + 6)) unset HBAR for h in {1..$spaceleft} do - HBAR=$HBAR- + HBAR=$HBAR$chars['-'] done [ "$DEBUG" = "yes" ] && echo @@ -104,7 +104,7 @@ old_precmd() if [ "$SVNREV" != "" ] then SVNSTATUS="$(svn diff 2>&-)" - SVNSTATUS=${${SVNSTATUS:+$prompt_colors[not_up_to_date]}:-$prompt_colors[up_to_date]} + SVNSTATUS=${${SVNSTATUS:+$prompt_colors[not_up_to_date]}:$chars['-']$prompt_colors[up_to_date]} fi SVNREV=${SVNREV:+$C_$prompt_colors[doubledot]$_C $C_$SVNSTATUS$_C"r"$SVNREV} [ "$DEBUG" = "yes" ] && echo @@ -160,10 +160,9 @@ old_precmd() # Affiche l'user, l'host, le tty et le pwd. Rien que ça... # Note que pour le pwd, on n'affiche que les 4 derniers dossiers pour éviter # de pourrir le fenêtre de terminal avec un prompt à rallonge. - PS1="$MAILSTAT""$ERROR"$C_$prompt_colors[bar]$_C"$HBAR""$DATE + PS1="$MAILSTAT""$ERROR"$C_$prompt_colors[border]$_C"$HBAR""$DATE "$C_$prompt_colors[user]$_C"%n"$C_$prompt_colors[arob]$_C"@"$C_$prompt_colors[host]$_C"%m $CURDIR$SVNREV$GITBRANCH "$C_$prompt_colors[dies]$_C"%#"$C_$prompt_colors[cmd]$_C" " - } precmd() From dd311b941af91e392e6504b5ec10d2b95abc38be Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Wed, 13 Aug 2008 16:20:56 +0200 Subject: [PATCH 3/5] Cleaning up in variable namings. --- 10_Environment.zsh | 13 +++++++++---- 12_Prompts.zsh | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/10_Environment.zsh b/10_Environment.zsh index 970a6ce..82a9ec1 100644 --- a/10_Environment.zsh +++ b/10_Environment.zsh @@ -51,10 +51,15 @@ chars[ll]="$termcap[as]m$termcap[ae]" chars['+']="$termcap[as]n$termcap[ae]" -chars[lT]="$termcap[as]t$termcap[ae]" -chars[rT]="$termcap[as]u$termcap[ae]" -chars[bT]="$termcap[as]v$termcap[ae]" -chars[tT]="$termcap[as]w$termcap[ae]" +chars[rT]="$termcap[as]t$termcap[ae]" +chars[lT]="$termcap[as]u$termcap[ae]" +chars[uT]="$termcap[as]v$termcap[ae]" +chars[dT]="$termcap[as]w$termcap[ae]" + +chars[uA]="$termcap[as]A$termcap[ae]" +chars[dA]="$termcap[as]B$termcap[ae]" +chars[rA]="$termcap[as]C$termcap[ae]" +chars[lA]="$termcap[as]D$termcap[ae]" ## Variables d'environnement ``classiques'' diff --git a/12_Prompts.zsh b/12_Prompts.zsh index 3130aaf..766d57e 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -69,7 +69,7 @@ old_precmd() # Date [ "$DEBUG" = "yes" ] && echo -n " Date..." - DATE=$C_$prompt_colors[border]$_C"$chars[rT] "$C_$prompt_colors[date]$_C"%D{%a-%d-%b-%Y %H:%M:%S}"$C_$prompt_colors[border]$_C" $chars[lT]"$C_$prompt_colors[border]$_C$chars['-'] + DATE=$C_$prompt_colors[border]$_C"$chars[lT] "$C_$prompt_colors[date]$_C"%D{%a-%d-%b-%Y %H:%M:%S}"$C_$prompt_colors[border]$_C" $chars[rT]"$C_$prompt_colors[border]$_C$chars['-'] DATEEXPAND=$(expand_text "$DATE") DATESIZE=${#DATEEXPAND} [ "$DEBUG" = "yes" ] && echo From d7b33432c1d2cc325bf800078978dc19cb8373ba Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Mon, 25 Aug 2008 11:24:32 +0200 Subject: [PATCH 4/5] Some cleaning up for SVN status --- 12_Prompts.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/12_Prompts.zsh b/12_Prompts.zsh index 766d57e..5be8eea 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -104,7 +104,7 @@ old_precmd() if [ "$SVNREV" != "" ] then SVNSTATUS="$(svn diff 2>&-)" - SVNSTATUS=${${SVNSTATUS:+$prompt_colors[not_up_to_date]}:$chars['-']$prompt_colors[up_to_date]} + SVNSTATUS=${${SVNSTATUS:+$prompt_colors[not_up_to_date]}:-$prompt_colors[up_to_date]} fi SVNREV=${SVNREV:+$C_$prompt_colors[doubledot]$_C $C_$SVNSTATUS$_C"r"$SVNREV} [ "$DEBUG" = "yes" ] && echo From 5dcc03c2e4dac79b6451acec8c11f6b1cdd0765d Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Mon, 25 Aug 2008 11:25:24 +0200 Subject: [PATCH 5/5] Preprint with termcaps --- 01_Functions.zsh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/01_Functions.zsh b/01_Functions.zsh index 11124de..fb13fe4 100644 --- a/01_Functions.zsh +++ b/01_Functions.zsh @@ -50,9 +50,11 @@ preprint() hbar= for i in {1..$(($COLUMNS - ${#1} - 5))} do - hbar=$hbar- + hbar=${hbar}q done - print -Pn "${C_}$my_color${_C}${hbar}[ $1 ]-\r${C_}0${_C}" + hbar=$termcap[as]$hbar$termcap[ae] + + print -Pn "${C_}$my_color${_C}${hbar}$termcap[as]u$termcap[ae] $1 $termcap[as]tq$termcap[ae]\r${C_}0${_C}" } get_git_branch ()