gists/zsh/themes/deblan/deblan.zsh-theme

74 lines
1.7 KiB
Bash

PS1=
RPROMPT=
ZSH_THEME_GIT_PROMPT_PREFIX=""
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_SEPARATOR=" "
ZSH_THEME_DEBLAN_USE_GIT=${ZSH_THEME_DEBLAN_USE_GIT:-1}
function deblan_precmd() {
local exit_code=$?
local datetime="%T"
local current_directory="%~"
local final_char="%%"
local is_privilegied=${(%):-%(\!.1.0)}
local prompt_width=
local prompt_content=
local term_width=
local rprompt_content=
PS1=
RPROMPT=
prompt_content="$(deblan_last_status)"
prompt_content="$prompt_content %{$fg_bold[cyan]%}${datetime}"
if [ $is_privilegied -eq 1 ]; then
prompt_content="$prompt_content %{$fg_bold[red]%}%n@%m"
final_char="%{$fg_bold[red]%}#"
else
prompt_content="$prompt_content %{$fg_bold[white]%}%n@%m"
fi
prompt_content="$prompt_content %{$fg_bold[white]%}$current_directory"
prompt_width="${#${(%):-$prompt_content}}"
term_width=$(tput cols)
if [[ "$prompt_width*1.3" -gt $term_width ]]; then
prompt_content="$prompt_content
"
else
prompt_content="$prompt_content "
fi
prompt_content="$prompt_content%{$fg_bold[yellow]%}$final_char"
prompt_content="$prompt_content %{$reset_color%}"
if [ $ZSH_THEME_DEBLAN_USE_GIT -eq 1 ]; then
if (command -v git_super_status >/dev/null); then
rprompt_content='%{$fg[$NCOLOR]%} $(git_super_status)%{$reset_color%}'
fi
fi
PS1="$prompt_content"
RPROMPT="$rprompt_content"
}
function deblan_last_status() {
local value=
if [ $exit_code -eq 0 ]; then
value="%{$fg_bold[green]%}●"
elif [ $exit_code -eq 1 ]; then
value="%{$fg_bold[red]%}●"
elif [ $exit_code -eq 130 ]; then
value="%{$fg_bold[grey]%}●"
else
value="%{$fg_bold[yellow]%}● [$exit_code]"
fi
echo -n "$value"
}
setopt prompt_subst
autoload -U add-zsh-hook
add-zsh-hook precmd deblan_precmd