[prompt] steef: Update it to be customizable

and to have a help and a preview too.

Inspired by #192, and by having (few but) good prompt themes to serve as
starting points for the users to customize or implement their own.

Also removed the colors functions, since we don't need that. We're using
the newer '%F{red}color%f' code instead. (Actually all our themes are)

Closes #245
This commit is contained in:
Eric Nielsen 2018-01-12 16:03:42 -05:00
parent fd9274ea91
commit e9171405cf
1 changed files with 81 additions and 31 deletions

View File

@ -1,8 +1,39 @@
# prompt style and colors based on Steve Losh's Prose theme: # vim:et sts=2 sw=2 ft=zsh
# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme #
# A customizable version of the steeef theme from
# https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/steeef.zsh-theme
# #
# Requires the `git-info` zmodule to be included in the .zimrc file. # Requires the `git-info` zmodule to be included in the .zimrc file.
prompt_steeef_help () {
cat <<EOH
This prompt can be customized with:
prompt steeef [username_color] [hostname_color] [pwd_color] [branch_color]
[unindexed_color] [unindexed_indicator]
[indexed_color] [indexed_indicator]
[untracked_color] [untracked_indicator]
[stashed_color] [stashed_indicator]
The default values for each parameter, for 256-color terminals (or otherwise)
are the following:
1. username color: 135 (or magenta)
2. hostname color: 166 (or yellow)
3. current working directory color: 118 (or green)
4. git branch name color: 81 (or cyan)
5. git unindexed color: 166 (or yellow)
6. git unindexed indicator: ●
7. git indexed color: 118 (or green)
8. git indexed indicator: ●
9. git untracked color: 161 (or red)
10. git untracked indicator: ●
The git stashed color and indicator are not defined by default, and will not be
shown unless defined.
EOH
}
prompt_steeef_git() { prompt_steeef_git() {
[[ -n ${git_info} ]] && print -n " ${(e)git_info[prompt]}" [[ -n ${git_info} ]] && print -n " ${(e)git_info[prompt]}"
} }
@ -18,47 +49,66 @@ prompt_steeef_precmd() {
prompt_steeef_setup() { prompt_steeef_setup() {
[[ -n ${VIRTUAL_ENV} ]] && export VIRTUAL_ENV_DISABLE_PROMPT=1 [[ -n ${VIRTUAL_ENV} ]] && export VIRTUAL_ENV_DISABLE_PROMPT=1
local purple local col_user
local orange local col_host
local limegreen local col_pwd
local turquoise local col_brnch
local hotpink local col_unidx
local col_idx
local col_untrk
# use extended color palette if available # use extended color palette if available
if [[ -n ${terminfo[colors]} && ${terminfo[colors]} -ge 256 ]]; then if (( terminfo[colors] >= 256 )); then
purple='%F{135}' col_user="%F{${1:-135}}"
orange='%F{166}' col_host="%F{${2:-166}}"
limegreen='%F{118}' col_pwd="%F{${3:-118}}"
turquoise='%F{81}' col_brnch="%F{${4:-81}}"
hotpink='%F{161}' col_unidx="%F{${5:-166}}"
col_idx="%F{${7:-118}}"
col_untrk="%F{${9:-161}}"
else else
purple='%F{magenta}' col_user="%F{${1:-magenta}}"
orange='%F{yellow}' col_host="%F{${2:-yellow}}"
limegreen='%F{green}' col_pwd="%F{${3:-green}}"
turquoise='%F{cyan}' col_brnch="%F{${4:-cyan}}"
hotpink='%F{red}' col_unidx="%F{${5:-yellow}}"
col_idx="%F{${7:-green}}"
col_untrk="%F{${9:-red}}"
fi fi
local ind_unidx=${6:-●}
local ind_idx=${8:-●}
local ind_untrk=${10:-●}
local col_stash=${11:+%F{${11}}}
local ind_stash=${12}
autoload -Uz add-zsh-hook autoload -Uz add-zsh-hook && add-zsh-hook precmd prompt_steeef_precmd
autoload -Uz colors && colors
prompt_opts=(cr percent sp subst) prompt_opts=(cr percent sp subst)
add-zsh-hook precmd prompt_steeef_precmd
zstyle ':zim:git-info' verbose 'yes' zstyle ':zim:git-info' verbose 'yes'
zstyle ':zim:git-info:branch' format '%b' zstyle ':zim:git-info:branch' format '%b'
zstyle ':zim:git-info:commit' format '%c' zstyle ':zim:git-info:commit' format '%c'
zstyle ':zim:git-info:action' format "(${limegreen}%s%f)" zstyle ':zim:git-info:action' format "(${col_idx}%s%f)"
zstyle ':zim:git-info:unindexed' format "${orange}●" zstyle ':zim:git-info:unindexed' format "${col_unidx}${ind_unidx}"
zstyle ':zim:git-info:indexed' format "${limegreen}●" zstyle ':zim:git-info:indexed' format "${col_idx}${ind_idx}"
zstyle ':zim:git-info:untracked' format "${hotpink}●" zstyle ':zim:git-info:untracked' format "${col_untrk}${ind_untrk}"
zstyle ':zim:git-info:stashed' format "${col_stash}${ind_stash}"
zstyle ':zim:git-info:keys' format \ zstyle ':zim:git-info:keys' format \
'prompt' "(${turquoise}%b%c%I%i%u%f)%s" 'prompt' "(${col_brnch}%b%c%I%i%u%f%S%f)%s"
PROMPT=" PS1="
${purple}%n%f at ${orange}%m%f in ${limegreen}%~%f\$(prompt_steeef_git)\$(prompt_steeef_virtualenv) ${col_user}%n%f at ${col_host}%m%f in ${col_pwd}%~%f\$(prompt_steeef_git)\$(prompt_steeef_virtualenv)
%(!.#.$) " %(!.#.$) "
RPROMPT='' RPS1=''
} }
prompt_steeef_setup "$@" prompt_steeef_preview () {
if (( ${#} )); then
prompt_preview_theme steeef "${@}"
else
prompt_preview_theme steeef
print
prompt_preview_theme steeef magenta yellow green cyan magenta '!' green '+' red '?' yellow '$'
fi
}
prompt_steeef_setup "${@}"