1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-01 05:16:05 +01:00

25095: thorough modernization of prompt theme system

This commit is contained in:
Peter Stephenson 2008-05-17 22:42:16 +00:00
parent adeceae8bf
commit c894f695cc
22 changed files with 198 additions and 135 deletions

View file

@ -1,5 +1,7 @@
2008-05-17 Peter Stephenson <p.w.stephenson@ntlworld.com>
* unposted: Src/utils.c: unused variable in 25057.
* 25059: Functions/Misc/add-zsh-hook and virtually every
function under Functions/Prompts, also new
Functions/Prompts/pws, also unposted addition to

View file

@ -285,6 +285,37 @@ any prefix, even a single letter; thus tt(a) is the same as tt(aliases),
tt(z) is the same as tt(zstyles), etc.
enditem()
subsect(Manipulating Hook Functions)
cindex(hook function utility)
startitem()
findex(add-zsh-hook)
item(tt(add-zsh-hook) [-dD] var(hook) var(function))(
Several functions are special to the shell, as described in the section
ifnzman(Special Functions, noderef(Functions))\
ifzman(SPECIAL FUNCTIONS, see zmanref(zshmisc)),
in that they are automatic called at a specific point during shell execution.
Each has an associated array consisting of names of functions to be
called at the same point; these are so-called `hook functions'.
The shell function tt(add-zsh-hook) provides a simple way of adding or
removing functions from the array.
var(hook) is one of tt(chpwd), tt(periodic), tt(precmd) or tt(preexec),
the special functions in question.
var(functions) is name of an ordinary shell function. If no options
are given this will be added to the array of functions to be executed.
in the given context.
If the option tt(-d) is given, the var(function) is removed from
the array of functions to be executed.
If the option tt(-D) is given, the var(function) is treated as a pattern
and any matching names of functions are removed from the array of
functions to be executed.
)
enditem()
texinode(Prompt Themes)(ZLE Functions)(Utilities)(User Contributions)
sect(Prompt Themes)

View file

@ -4,6 +4,9 @@
#
# With -d, remove the function from the hook instead; delete the hook
# variable if it is empty.
#
# -D behaves like -d, but pattern characters are active in the
# function name, so any matching function will be deleted from the hook.
#
# Without -d, the FUNCTION is marked for autoload; -U is passed down to
# autoload if that is given. (This is harmless if the function is actually
@ -18,12 +21,16 @@ local opt
local -a autoopts
integer del
while getopts "d" opt; do
while getopts "dDU" opt; do
case $opt in
(d)
del=1
;;
(D)
del=2
;;
(U)
autoopts+=(-$opt)
;;
@ -46,7 +53,11 @@ local fn="$2"
if (( del )); then
# delete, if hook is set
if (( ${(P)+hook} )); then
set -A $hook ${(P)hook:#$fn}
if (( del == 2 )); then
set -A $hook ${(P)hook:#${~fn}}
else
set -A $hook ${(P)hook:#$fn}
fi
# unset if no remaining entries --- this can give better
# performance in some cases
(( ${(P)#hook} )) || unset $hook

View file

@ -24,14 +24,13 @@ prompt_adam1_setup () {
prompt_adam1_color2=${2:-'cyan'}
prompt_adam1_color3=${3:-'green'}
base_prompt="%{$bg_no_bold[$prompt_adam1_color1]%}%n@%m%{$reset_color%} "
post_prompt="%{$reset_color%}"
base_prompt="%K{$prompt_adam1_color1}%n@%m%k "
post_prompt="%b%f%k"
base_prompt_no_color=$(echo "$base_prompt" | perl -pe "s/%{.*?%}//g")
post_prompt_no_color=$(echo "$post_prompt" | perl -pe "s/%{.*?%}//g")
base_prompt_no_color=$(echo "$base_prompt" | perl -pe "s/%(K{.*?}|k)//g")
post_prompt_no_color=$(echo "$post_prompt" | perl -pe "s/%(K{.*?}|k)//g")
precmd () { prompt_adam1_precmd }
preexec () { }
add-zsh-hook precmd prompt_adam1_precmd
}
prompt_adam1_precmd () {
@ -43,10 +42,10 @@ prompt_adam1_precmd () {
base_prompt_etc=$(print -P "$base_prompt%(4~|...|)%3~")
prompt_length=${#base_prompt_etc}
if [[ $prompt_length -lt 40 ]]; then
path_prompt="%{$fg_bold[$prompt_adam1_color2]%}%(4~|...|)%3~%{$fg_bold[white]%}"
path_prompt="%B%F{$prompt_adam1_color2}%(4~|...|)%3~%F{white}"
else
space_left=$(( $COLUMNS - $#base_prompt_expanded_no_color - 2 ))
path_prompt="%{$fg_bold[$prompt_adam1_color3]%}%${space_left}<...<%~$prompt_newline%{$fg_bold_white%}"
path_prompt="%B%F{$prompt_adam1_color3}%${space_left}<...<%~$prompt_newline%F{white}"
fi
PS1="$base_prompt$path_prompt %# $post_prompt"
PS2="$base_prompt$path_prompt %_> $post_prompt"

View file

@ -49,42 +49,44 @@ prompt_adam2_setup () {
prompt_adam2_color4=${4:-'white'} # user input
local prompt_gfx_bbox
prompt_gfx_tbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_tlc}%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}"
prompt_gfx_bbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_blc}${prompt_gfx_hyphen}%{$fg_no_bold[$prompt_adam2_color1]%}"
prompt_gfx_tbox="%B%F{$prompt_adam2_color1}${prompt_gfx_tlc}%b%F{$prompt_adam2_color1}${prompt_gfx_hyphen}"
prompt_gfx_bbox="%B%F{$prompt_adam2_color1}${prompt_gfx_blc}${prompt_gfx_hyphen}%b%F{$prompt_adam2_color1}"
# This is a cute hack. Well I like it, anyway.
prompt_gfx_bbox_to_mbox=$'%{\e[A\r'"$fg_bold[$prompt_adam2_color1]${prompt_gfx_mlc}$fg_no_bold[$prompt_adam2_color1]${prompt_gfx_hyphen}"$'\e[B%}'
prompt_gfx_bbox_to_mbox=$'%{\e[A\r'"%}%B%F{$prompt_adam2_color1}${prompt_gfx_mlc}%b%F{$prompt_adam2_color1}${prompt_gfx_hyphen}%{"$'\e[B%}'
prompt_l_paren="%{$fg_bold[grey]%}("
prompt_r_paren="%{$fg_bold[grey]%})"
prompt_l_paren="%B%F{black}("
prompt_r_paren="%B%F{black})"
prompt_user_host="%{$fg_no_bold[$prompt_adam2_color3]%}%n%{$fg_bold[$prompt_adam2_color3]%}@%{$fg_no_bold[$prompt_adam2_color3]%}%m"
prompt_user_host="%b%F{$prompt_adam2_color3}%n%B%F{$prompt_adam2_color3}@%b%F{$prompt_adam2_color3}%m"
prompt_line_1a="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%~$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}"
prompt_line_1b="$prompt_l_paren$prompt_user_host$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}"
prompt_line_1a="$prompt_gfx_tbox$prompt_l_paren%B%F{$prompt_adam2_color2}%~$prompt_r_paren%b%F{$prompt_adam2_color1}"
prompt_line_1b="$prompt_l_paren$prompt_user_host$prompt_r_paren%b%F{$prompt_adam2_color1}${prompt_gfx_hyphen}"
prompt_line_2="$prompt_gfx_bbox${prompt_gfx_hyphen}%{$fg_bold[white]%}"
prompt_line_2="$prompt_gfx_bbox${prompt_gfx_hyphen}%B%F{white}"
prompt_char="%(!.#.>)"
precmd () { prompt_adam2_precmd; setopt promptsubst }
preexec () { prompt_adam2_preexec }
prompt_opts=(cr subst percent)
add-zsh-hook precmd prompt_adam2_precmd
}
prompt_adam2_precmd () {
prompt_adam2_precmd() {
setopt noxtrace localoptions extendedglob
local prompt_line_1
prompt_adam2_choose_prompt
PS1="$prompt_line_1$prompt_newline$prompt_line_2%{$fg_bold[white]%}$prompt_char %{$fg_bold[$prompt_adam2_color4]%}"
PS2="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}%_> %{$fg_bold[$prompt_adam2_color4]%}"
PS3="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}?# %{$fg_bold[$prompt_adam2_color4]%}"
PS1="$prompt_line_1$prompt_newline$prompt_line_2%B%F{white}$prompt_char %b%f%k"
PS2="$prompt_line_2$prompt_gfx_bbox_to_mbox%B%F{white}%_> %b%f%k"
PS3="$prompt_line_2$prompt_gfx_bbox_to_mbox%B%F{white}?# %b%f%k"
zle_highlight[(r)default:*]="default:fg=$prompt_adam2_color4,bold"
}
prompt_adam2_choose_prompt () {
local prompt_line_1a_width=${#${(S%%)prompt_line_1a//\%\{*\%\}}}
local prompt_line_1b_width=${#${(S%%)prompt_line_1b//\%\{*\%\}}}
local prompt_line_1a_width=${#${(S%%)prompt_line_1a//(\%([KF1]|)\{*\}|\%[Bbkf])}}
local prompt_line_1b_width=${#${(S%%)prompt_line_1b//(\%([KF1]|)\{*\}|\%[Bbkf])}}
local prompt_padding_size=$(( COLUMNS
- prompt_line_1a_width
@ -110,11 +112,7 @@ prompt_adam2_choose_prompt () {
# Still didn't fit; truncate
local prompt_pwd_size=$(( COLUMNS - 5 ))
prompt_line_1="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%$prompt_pwd_size<...<%~%<<$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]$prompt_gfx_hyphen%}"
}
prompt_adam2_preexec () {
print -n "$reset_color"
prompt_line_1="$prompt_gfx_tbox$prompt_l_paren%B%F{$prompt_adam2_color2}%$prompt_pwd_size<...<%~%<<$prompt_r_paren%b%F{$prompt_adam2_color1}$prompt_gfx_hyphen"
}
prompt_adam2_setup "$@"

View file

@ -70,7 +70,7 @@ integer PSCOL=1
prompt_bart_precmd () {
setopt localoptions noxtrace noksharrays unset
local zero='%([BSUbsu]|{*%})' escape colno lineno
local zero='%([BSUbfksu]|FB{*})' escape colno lineno
# Using psvar here protects against unwanted promptsubst expansions.
@ -102,7 +102,7 @@ prompt_bart_ps1 () {
setopt localoptions noxtrace noksharrays
local -ah ps1
local -h host hist1 hist2 dir space date time rs="%{$reset_color%}"
local -h host hist1 hist2 dir space date time rs="%b%f%k"
local -h eon="%(?.[.%20(?.[%U.%S[))" eoff="%(?.].%20(?.%u].]%s))"
# Set up the components of the upper line
@ -140,17 +140,19 @@ prompt_bart_winch () {
setopt localoptions nolocaltraps noksharrays unset
# Delete ourself from TRAPWINCH if not using our precmd insert.
[[ $functions[precmd] = *prompt_bart_precmd* ]] && prompt_bart_ps1 ||
[[ $precmd_functions = *prompt_bart_precmd* ]] && prompt_bart_ps1 ||
functions[TRAPWINCH]="${functions[TRAPWINCH]//prompt_bart_winch}"
}
prompt_bart_setup () {
setopt localoptions nolocaltraps noksharrays unset
typeset -gA fg
# A few extra niceties ...
repeat 1 case "$1:l" in
(off|disable)
functions[precmd]="${functions[precmd]//prompt_bart_precmd}"
precmd_functions[(r)prompt_*_precmd]=
precmd_functions=($precmd_functions)
functions[TRAPWINCH]="${functions[TRAPWINCH]//prompt_bart_winch}"
[[ $prompt_theme[1] = bart ]] && PS1=${${(f)PS1}[-1]}
return 1
@ -161,22 +163,22 @@ prompt_bart_setup () {
;&
(*)
# Abuse the fg assoc to hold our selected colors ...
fg[%m]=$fg[${1:-red}]
fg[%h]=$fg[${2:-blue}]
fg[%~]=$fg[${3:-none}]
fg[%D]=$fg[${4:-none}]
fg[%@]=$fg[${1:-red}]
fg[%m]="%F{${1:-red}}"
fg[%h]="%F{${2:-blue}}"
fg[%~]="%F{${3:-default}}"
fg[%D]="%F{${4:-default}}"
fg[%@]="%F{${1:-red}}"
;;
esac
prompt_bart_ps1
# No RPS1 by default because prompt_off_setup doesn't fix it.
(($#RPS1 && $# > 4)) && RPS1="%{$fg[$5]%}$RPS1%{$reset_color%}"
(($#RPS1 && $# > 4)) && RPS1="%F{$5}$RPS1%f"
# Paste our special commands into precmd and TRAPWINCH
functions[precmd]="${functions[precmd]//prompt_*_precmd}
prompt_bart_precmd"
add-zsh-hook precmd prompt_bart_precmd
functions[TRAPWINCH]="${functions[TRAPWINCH]//prompt_bart_winch}
prompt_bart_winch"

View file

@ -27,15 +27,14 @@ prompt_bigfade_setup () {
local date=${3:-'white'}
local cwd=${4:-'yellow'}
local char_333 char_262 char_261 char_260
local -A schars
autoload -U prompt_special_chars
prompt_special_chars
PS1="%{$bold_color$fg[$fadebar]$bold_color%}$char_333$char_262$char_261$char_260%{$bold_color$fg[$userhost]$bg[$fadebar]%}%n@%m%{$reset_color$fg[$fadebar]$bg[grey]%}$char_260$char_261$char_262$char_333%{$reset_color$fg[$fadebar]$bg[grey]%}$char_333$char_262$char_261$char_260%{$bold_color$fg[$date]$bg[grey]%} %D{%a %b %d} %D{%I:%M:%S%P}$prompt_newline%{$bold_color$fg[$cwd]$bg[grey]%}$PWD>%{$reset_color%} "
PS2="%{$bold_color$fg[$fadebar]$bold_color%}$char_333$char_262$char_261$char_260%{$reset_color$fg[$fadebar]$bg[grey]%}$char_260$char_261$char_262$char_333%{$reset_color$fg[$fadebar]$bg[grey]%}$char_333$char_262$char_261$char_260%{$bold_color$bold_color$fg[$fadebar]%}>%{$reset_color%} "
PS1="%B%F{$fadebar}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$userhost}%K{$fadebar}%n@%m%b%k%f%F{$fadebar}%K{black}$schars[260]$schars[261]$schars[262]$schars[333]%b%f%k%F{$fadebar}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$date}%K{black} %D{%a %b %d} %D{%I:%M:%S%P}$prompt_newline%B%F{$cwd}%K{black}$PWD>%b%f%k "
PS2="%B%F{$fadebar}$schars[333]$schars[262]$schars[261]$schars[260]%b%F{$fadebar}%K{black}$schars[260]$schars[261]$schars[262]$schars[333]%F{$fadebar}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$fadebar}>%b%f%k "
precmd () { setopt promptsubst }
preexec () { }
prompt_opts=(cr subst percent)
}
prompt_bigfade_preview () {

View file

@ -21,36 +21,35 @@ prompt_clint_setup () {
pcc[4]=${4:-'yellow'}
pcc[5]=${5:-'white'}
pc['\[']="%{$fg_no_bold[$pcc[1]]%}["
pc['\]']="%{$fg_no_bold[$pcc[1]]%}]"
pc['<']="%{$fg_no_bold[$pcc[1]]%}<"
pc['>']="%{$fg_no_bold[$pcc[1]]%}>"
pc['\(']="%{$fg_no_bold[$pcc[1]]%}("
pc['\)']="%{$fg_no_bold[$pcc[1]]%})"
pc['\[']="%F{$pcc[1]}["
pc['\]']="%F{$pcc[1]}]"
pc['<']="%F{$pcc[1]}<"
pc['>']="%F{$pcc[1]}>"
pc['\(']="%F{$pcc[1]}("
pc['\)']="%F{$pcc[1]})"
p_date="$pc['\[']%{$fg_no_bold[$pcc[2]]%}%D{%a %y/%m/%d %R %Z}$pc['\]']"
p_tty="$pc['\[']%{$fg_no_bold[$pcc[3]]%}%l$pc['\]']"
p_plat="$pc['\[']%{$fg_no_bold[$pcc[2]]%}${MACHTYPE}/${OSTYPE}/$(uname -r)$pc['\]']"
p_ver="$pc['\[']%{$fg_no_bold[$pcc[2]]%}${ZSH_VERSION}$pc['\]']"
p_date="$pc['\[']%F{$pcc[2]}%D{%a %y/%m/%d %R %Z}$pc['\]']"
p_tty="$pc['\[']%F{$pcc[3]}%l$pc['\]']"
p_plat="$pc['\[']%F{$pcc[2]}${MACHTYPE}/${OSTYPE}/$(uname -r)$pc['\]']"
p_ver="$pc['\[']%F{$pcc[2]}${ZSH_VERSION}$pc['\]']"
[[ -n "$WINDOW" ]] && p_win="$pc['\(']%{$fg_bold[$pcc[4]]%}$WINDOW$pc['\)']"
[[ -n "$WINDOW" ]] && p_win="$pc['\(']%F{$pcc[4]}$WINDOW$pc['\)']"
p_userpwd="$pc['<']%{$fg_no_bold[$pcc[3]]%}%n@%m$p_win%{$fg_bold[$pcc[5]]%}:%{$fg_no_bold[$pcc[4]]%}%~$pc['>']"
p_userpwd="$pc['<']%F{$pcc[3]}%n@%m$p_win%F{$pcc[5]}:%F{$pcc[4]}%~$pc['>']"
p_git="%(2v.-%U%2v%u-.)"
p_shlvlhist="%{$reset_color%}zsh%(2L./$SHLVL.) %B%h%b "
p_shlvlhist="%fzsh%(2L./$SHLVL.) %B%h%b "
p_rc="%(?..[%?%1v] )"
p_end="%{$reset_color%}%B%#%b %{$fg_no_bold[$pcc[2]]%}"
p_end="%f%B%#%b "
POSTEDIT="$reset_color"
zle_highlight[(r)default:*]=default:$pcc[2]
prompt="$p_date$p_tty$p_plat$p_ver
$p_userpwd
$p_shlvlhist$p_rc$p_git$p_end"
PS2='%(4_.\.)%3_> %E'
precmd () { prompt_clint_precmd }
preexec () { }
add-zsh-hook precmd prompt_clint_precmd
}
prompt_clint_precmd () {
@ -67,7 +66,6 @@ prompt_clint_precmd () {
git_dir=$(git-rev-parse --git-dir 2> /dev/null) || return
git_ref=$(git-symbolic-ref HEAD 2> /dev/null) || git_ref="(no branch)"
psvar[2]=${git_ref#refs/heads/}
}
prompt_clint_setup "$@"

View file

@ -21,24 +21,23 @@ prompt_elite2_setup () {
local text_col=${1:-'cyan'}
local parens_col=${2:-$text_col}
local char_333 char_262 char_261 char_260
local -A schars
autoload -U prompt_special_chars
prompt_special_chars
local text="%{$fg_no_bold[$text_col]%}"
local parens="%{$fg_bold[$parens_col]%}"
local punct="%{$fg_bold[grey]%}"
local reset="%{$reset_color%}"
local text="%b%F{$text_col}"
local parens="%B%F{$parens_col}"
local punct="%B%F{black}"
local reset="%b%f"
local lpar="$parens($text"
local rpar="$parens)$text"
PS1="$punct$char_332$text$char_304$lpar%n$punct@$text%m$rpar$char_304$lpar%!$punct/$text%y$rpar$char_304$lpar%D{%I:%M%P}$punct:$text%D{%m/%d/%y}$rpar$char_304$punct-$reset$prompt_newline$punct$char_300$text$char_304$lpar%#$punct:$text%~$rpar$char_304$punct-$reset "
PS1="$punct$schars[332]$text$schars[304]$lpar%n$punct@$text%m$rpar$schars[304]$lpar%!$punct/$text%y$rpar$schars[304]$lpar%D{%I:%M%P}$punct:$text%D{%m/%d/%y}$rpar$schars[304]$punct-$reset$prompt_newline$punct$schars[300]$text$schars[304]$lpar%#$punct:$text%~$rpar$schars[304]$punct-$reset "
PS2="$parens$char_304$text$char_304$punct-$reset "
PS2="$parens$schars[304]$text$schars[304]$punct-$reset "
precmd () { setopt promptsubst }
preexec () { }
prompt_opts=(cr subst percent)
}
prompt_elite2_preview () {

View file

@ -21,15 +21,14 @@ prompt_elite_setup () {
local text=${1:-'red'}
local punctuation=${2:-'blue'}
local char_333 char_262 char_261 char_260
local -A schars
autoload -U prompt_special_chars
prompt_special_chars
PS1="%{$fg[$text]%}$char_332$char_304%{$fg[$punctuation]%}(%{$fg[$text]%}%n%{$fg[$punctuation]%}@%{$fg[$text]%}%m%{$fg[$punctuation]%})%{$fg[$text]%}-%{$fg[$punctuation]%}(%{$fg[$text]%}%D{%I:%M%P}%{$fg[$punctuation]%}-:-%{$fg[$text]%}%D{%m}%{$fg[$punctuation]$fg[$text]%}/%D{%d}%{$fg[$punctuation]%})%{$fg[$text]%}$char_304-%{$fg[$punctuation]]%}$char_371%{$fg[$text]%}-$char_371$char_371%{$fg[$punctuation]%}$char_372$prompt_newline%{$fg[$text]%}$char_300$char_304%{$fg[$punctuation]%}(%{$fg[$text]%}%1~%{$fg[$punctuation]%})%{$fg[$text]%}$char_304$char_371%{$fg[$punctuation]%}$char_372%{$reset_color%}"
PS1="%F{$text}$schars[332]$schars[304]%F{$punctuation}(%F{$text}%n%F{$punctuation}@%F{$text}%m%F{$punctuation})%F{$text}-%F{$punctuation}(%F{$text}%D{%I:%M%P}%F{$punctuation}-:-%F{$text}%D{%m}%F{$punctuation}%F{$text}/%D{%d}%F{$punctuation})%F{$text}$schars[304]-%F{$punctuation}$schars[371]%F{$text}-$schars[371]$schars[371]%F{$punctuation}$schars[372]$prompt_newline%F{$text}$schars[300]$schars[304]%F{$punctuation}(%F{$text}%1~%F{$punctuation})%F{$text}$schars[304]$schars[371]%F{$punctuation}$schars[372]%f"
PS2="> "
precmd () { setopt promptsubst }
preexec () { }
prompt_opts=(cr subst percent)
}
prompt_elite_preview () {

View file

@ -27,15 +27,14 @@ prompt_fade_setup () {
local userhost=${2:-'white'}
local date=${3:-'white'}
local char_333 char_262 char_261 char_260
local -A schars
autoload -U prompt_special_chars
prompt_special_chars
PS1="%{$fg[$fadebar_cwd]$bg[$fadebar_cwd]$bold_color%}$char_333$char_262$char_261$char_260%{$fg[$userhost]$bg[$fadebar_cwd]$bold_color%}%n@%m%{$reset_color$fg[$fadebar_cwd]$bg[grey]%}$char_333$char_262$char_261$char_260%{$fg[$date]$bg[grey]$bold_color%} %D{%a %b %d} %D{%I:%M:%S%P} $prompt_newline%{$fg[$fadebar_cwd]$bg[grey]$bold_color%}%~/%{$reset_color%} "
PS2="%{$fg[$fadebar_cwd]$bg[grey]%}$char_333$char_262$char_261$char_260%{$reset_color%}>"
PS1="%F{$fadebar_cwd}%B%K{$fadebar_cwd}$schars[333]$schars[262]$schars[261]$schars[260]%F{$userhost}%K{$fadebar_cwd}%B%n@%m%b%F{$fadebar_cwd}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%F{$date}%K{black}%B %D{%a %b %d} %D{%I:%M:%S%P} $prompt_newline%F{fadebar_cwd}%K{black}%B%~/%b%k%f "
PS2="%F{$fadebar_cwd}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%f%k>"
precmd () { setopt promptsubst }
preexec () { }
prompt_opts=(cr subst percent)
}
prompt_fade_preview () {

View file

@ -29,25 +29,24 @@ prompt_fire_setup () {
local date=${5:-'white'}
local cwd=${6:-'yellow'}
local char_333 char_262 char_261 char_260
local -a schars
autoload -U prompt_special_chars
prompt_special_chars
local GRAD1="%{$char_333$char_262$char_261$char_260%}"
local GRAD2="%{$char_260$char_261$char_262$char_333%}"
local COLOR1="%{$bold_color$fg[$fire1]$bg[$fire2]%}"
local COLOR2="%{$bold_color$fg[$userhost]$bg[$fire2]%}"
local COLOR3="%{$reset_color$fg[$fire3]$bg[$fire2]%}"
local COLOR4="%{$reset_color$fg[$fire3]$bg[grey]%}"
local COLOR5="%{$bold_color$fg[$cwd]$bg[grey]%}"
local COLOR6="%{$bold_color$fg[$date]$bg[grey]%}"
local GRAD0="%{$reset_color%}"
local GRAD1="%{$schars[333]$schars[262]$schars[261]$schars[260]%}"
local GRAD2="%{$schars[260]$schars[261]$schars[262]$schars[333]%}"
local COLOR1="%B%F{$fire1}%K{$fire2}"
local COLOR2="%B%F{$userhost}%K{$fire2}"
local COLOR3="%b%F{$fire3}%K{$fire2}"
local COLOR4="%b%F{$fire3}%K{black}"
local COLOR5="%B%F{$cwd}%K{black}"
local COLOR6="%B%F{$date}%K{black}"
local GRAD0="%b%f%k"
PS1=$COLOR1$GRAD1$COLOR2'%n@%m'$COLOR3$GRAD2$COLOR4$GRAD1$COLOR6' %D{%a %b %d} %D{%I:%M:%S%P} '$prompt_newline$COLOR5'%~/'$GRAD0' '
PS2=$COLOR1$GRAD1$COLOR3$GRAD2$COLOR4$GRAD1$COLOR5'>'$GRAD0' '
precmd () { setopt promptsubst }
preexec () { }
prompt_opts=(cr subst percent)
}
prompt_fire_preview () {

View file

@ -4,8 +4,6 @@ prompt_off_setup () {
PS2="> "
prompt_opts=( cr percent )
precmd () { }
preexec () { }
}
prompt_off_setup "$@"

View file

@ -24,18 +24,18 @@ prompt_oliver_setup() {
[[ "${(t)pcolour}" != assoc* ]] && typeset -Ag pcolour
[[ "${(t)tcolour}" != assoc* ]] && typeset -Ag tcolour
local pcol=${1:-${pcolour[${HOST:=`hostname`}]:-bold}}
local pcolr=$fg[${pcol#bold}]
local pcolr="%F{${${pcol#bold}:-default}}"
[[ $pcol = bold* ]] && pcolr=%B$pcolr
local tcol=${2:-${tcolour[$HOST]}}
local tcolr="fg=${tcol#bold}"
local tcolr="fg=${${tcol#bold}:-default}"
[[ $tcol = bold* ]] && tcolr=bold,$tcolr
local a host="%m:" user="%n "
[[ $HOST == (${(j(|))~normal_hosts}) ]] && host=""
[[ $LOGNAME == (root|${(j(|))~normal_users}) ]] && user=""
PS1="%{$pcolr%}$user$host%~%"'$((COLUMNS-12))'"(l.$prompt_newline. )[%h%1(j.%%%j.)%0(?..:%?)]%# %{$reset_color%}" RPS2='<%^'
PS1="$pcolr$user$host%~%"'$((COLUMNS-12))'"(l.$prompt_newline. )[%h%1(j.%%%j.)%0(?..:%?)]%# %b%f%k" RPS2='<%^'
PS2=''
zle_highlight[(r)default:*]=default:$tcolr
}

View file

@ -0,0 +1,22 @@
# pws prompt theme
prompt_pws_help() {
cat <<'EOF'
Simple prompt which tries to display only the information you need.
- highlighted parenthesised status if last command had non-zero status
- bold + if shell is not at top level (may need tweaking if there
is another shell in the process history of your terminal)
- number of background jobs in square brackets if non-zero
- time in yellow on black, with Ding! on the hour.
I usually use this in a white on black terminal.
EOF
}
prompt_pws_setup() {
PS1='%K{white}%F{red}%(?..(%?%))'\
'%K{black}%F{white}%B%(2L.+.)%(1j.[%j].)'\
'%F{yellow}%(t.Ding!.%D{%L:%M})'\
'%f%k%b%# '
}
prompt_pws_setup "$@"

View file

@ -7,8 +7,6 @@ prompt_redhat_setup () {
PS2="> "
prompt_opts=( cr percent )
precmd () { }
preexec () { }
}
prompt_redhat_setup "$@"

View file

@ -6,13 +6,20 @@
# We still provide them in that form if the current character
# set isn't UTF-8. We could in principle use iconv if available.
typeset -gA schars
if [[ ${LC_ALL:-${LC_CTYPE:-$LANG}} = *UTF-8* ]]; then
char_333=$'\xe2\x96\x88'
char_262=$'\xe2\x96\x93'
char_261=$'\xe2\x96\x92'
char_260=$'\xe2\x96\x91'
schars[300]=$'\xe2\x94\x94'
schars[304]=$'\xe2\x94\x8c'
schars[332]=$'\xe2\x94\x8c'
schars[333]=$'\xe2\x96\x88'
schars[371]=$'\xc2\xa8'
schars[372]=$'\xcb\x99'
schars[262]=$'\xe2\x96\x93'
schars[261]=$'\xe2\x96\x92'
schars[260]=$'\xe2\x96\x91'
else
for code in 333 262 261 260; do
char_$code=$(echo -n "\\0$code")
for code in 300 304 332 333 371 372 262 261 260; do
eval "char[$code]=\$'\\$code'"
done
fi

View file

@ -7,8 +7,6 @@ prompt_suse_setup () {
PS2="> "
prompt_opts=( cr percent )
precmd () { }
preexec () { }
}
prompt_suse_setup "$@"

View file

@ -15,11 +15,12 @@ prompt_walters_setup () {
if [[ "$TERM" != "dumb" ]]; then
export PROMPT='%B%(?..[%?] )%b%n@%U%m%u> '
export RPROMPT="%{$fg_no_bold[${1:-green}]%}%~%{$reset_color%}"
export RPROMPT="%F{${1:-green}}%~%f"
else
export PROMPT="%(?..[%?] )%n@%m:%~> "
fi
prompt_opts=(cr percent)
}
prompt_walters_setup "$@"

View file

@ -12,8 +12,8 @@ function prompt_zefram_setup {
PS2='%(4_:... :)%3_> '
prompt_opts=( cr subst percent )
precmd () { prompt_zefram_precmd }
preexec () { }
add-zsh-hook precmd prompt_zefram_precmd
}
prompt_zefram_setup "$@"

View file

@ -30,9 +30,8 @@ promptinit () {
fi
done
# Color definitions come in handy
autoload -U colors
colors
# To manipulate precmd and preexec hooks...
autoload -U add-zsh-hook
# Variables common to all prompt styles
prompt_newline=$'\n%{\r%}'
@ -40,7 +39,7 @@ promptinit () {
prompt_preview_safely() {
emulate -L zsh
print $reset_color
print -P "%b%f%k"
if [[ -z "$prompt_themes[(r)$1]" ]]; then
print "Unknown theme: $1"
return
@ -48,7 +47,7 @@ prompt_preview_safely() {
local -a psv; psv=($psvar); local -a +h psvar; psvar=($psv) # Ick
local +h PS1=$PS1 PS2=$PS2 PS3=$PS3 PS4=$PS4 RPS1=$RPS1
trap "${$(functions precmd):-:} ; ${$(functions preexec):-:}" 0
local -a precmd_functions preexec_functions
# The next line is a bit ugly. It (perhaps unnecessarily)
# runs the prompt theme setup function to ensure that if
@ -85,7 +84,7 @@ Use prompt -h <theme> for help on specific themes.'
# Not using a prompt theme; save settings
local -a psv; psv=($psvar); local -a +h psvar; psvar=($psv) # Ick
local +h PS1=$PS1 PS2=$PS2 PS3=$PS3 PS4=$PS4 RPS1=$RPS1
trap "${$(functions precmd):-:} ; ${$(functions preexec):-:}" 0
local precmd_functions preexec_functions
else
trap 'prompt_${prompt_theme[1]}_setup "${(@)prompt_theme[2,-1]}"' 0
fi
@ -130,7 +129,7 @@ Use prompt -h <theme> for help on specific themes.'
[[ "$theme" == "$prompt_theme[*]" ]] && continue
prompt_preview_safely "$=theme"
done
print $reset_color
print -P "%b%f%k"
;;
s) print "Set and save not yet implemented. Please ensure your ~/.zshrc"
print "contains something similar to the following:\n"
@ -153,21 +152,21 @@ Use prompt -h <theme> for help on specific themes.'
print "$usage"
return
fi
prompt_$1_setup "$@[2,-1]" && prompt_theme=( "$@" )
# Avoid screwing up the environment listing
PSZZZZ=$reset_color
RPSZZZZ=$reset_color
PROMPTZZZZ=$reset_color
RPROMPTZZZZ=$reset_color
promptzzzz=$reset_color
# Reset some commonly altered bits to the default
add-zsh-hook -D precmd "prompt_*_precmd"
add-zsh-hook -D preexec "prompt_*_preexec"
set -A zle_highlight ${zle_highlight:#default:*}
(( ${#zle_highlight} )) || unset zle_highlight
prompt_$1_setup "$@[2,-1]" && prompt_theme=( "$@" )
;;
esac
}
prompt () {
local prompt_opts
set_prompt "$@"
(( $#prompt_opts )) &&
@ -180,16 +179,18 @@ prompt_preview_theme () {
emulate -L zsh
local -a psv; psv=($psvar); local -a +h psvar; psvar=($psv) # Ick
local +h PS1=$PS1 PS2=$PS2 PS3=$PS3 PS4=$PS4 RPS1=$RPS1
trap "${$(functions precmd):-:} ; ${$(functions preexec):-:}" 0
local precmd_functions preexec_functions
print -n "$1 theme"
(( $#* > 1 )) && print -n " with parameters \`$*[2,-1]'"
print ":"
prompt_${1}_setup "$@[2,-1]"
typeset +f precmd >&- && precmd
[[ -n ${precmd_functions[(r)prompt_${1}_precmd]} ]] &&
prompt_${1}_precmd
[[ -o promptcr ]] && print -n $'\r'; :
print -P "${PS1}command arg1 arg2 ... argn"
typeset +f preexec >&- && preexec
[[ -n ${preexec_functions[(r)prompt_${1}_preexec]} ]] &&
prompt_${1}_preexec
}
[[ -o kshautoload ]] || promptinit "$@"

View file

@ -255,7 +255,9 @@ zerrmsg(FILE *file, const char *fmt, va_list ap)
{
const char *str;
int num;
#ifdef DEBUG
long lnum;
#endif
#ifdef HAVE_STRERROR_R
#define ERRBUFSIZE (80)
int olderrno;