1
0
Fork 0
mirror of synced 2024-06-01 06:41:12 -04:00

[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.
This commit is contained in:
Eric Nielsen 2018-01-12 16:03:42 -05:00
parent c501a1b64c
commit 7f6f8737ae

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,67 @@ 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 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 "${@}"