summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugues Hiegel <hugues@hiegel.fr>2008-08-13 16:03:43 +0200
committerHugues Hiegel <hugues@hiegel.fr>2008-08-13 16:03:43 +0200
commit44eaa93460f73a6c72e6c75085d129ab055f97b2 (patch)
tree2d080a350927524b44c47fc7d7e197615f680771
parent9ba0df7fa201845211ffec10021b250e8f255d37 (diff)
First tests with termcaps for drawing borders into prompt
-rw-r--r--10_Environment.zsh23
-rw-r--r--11_Colors.zsh6
-rw-r--r--12_Prompts.zsh25
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" # <login>@<hostname>
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()