1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-22 16:20:23 +02: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

@ -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 "$@"