parent
5c73cb671b
commit
d34ab7f373
1 changed files with 113 additions and 0 deletions
@ -0,0 +1,113 @@ |
||||
# oh-my-zsh Bureau Theme |
||||
|
||||
### NVM |
||||
|
||||
ZSH_THEME_NVM_PROMPT_PREFIX="%B⬡%b " |
||||
ZSH_THEME_NVM_PROMPT_SUFFIX="" |
||||
|
||||
### Git [±master ▾●] |
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX="[%{$fg_bold[green]%}±%{$reset_color%}%{$fg_bold[white]%}" |
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}]" |
||||
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[cyan]%}▴%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[magenta]%}▾%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg_bold[yellow]%}●%{$reset_color%}" |
||||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}" |
||||
|
||||
bureau_git_branch () { |
||||
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \ |
||||
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return |
||||
echo "${ref#refs/heads/}" |
||||
} |
||||
|
||||
bureau_git_status () { |
||||
_INDEX=$(command git status --porcelain -b 2> /dev/null) |
||||
_STATUS="" |
||||
if $(echo "$_INDEX" | grep '^[AMRD]. ' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED" |
||||
fi |
||||
if $(echo "$_INDEX" | grep '^.[MTD] ' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED" |
||||
fi |
||||
if $(echo "$_INDEX" | grep -E '^\?\? ' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED" |
||||
fi |
||||
if $(echo "$_INDEX" | grep '^UU ' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED" |
||||
fi |
||||
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STASHED" |
||||
fi |
||||
if $(echo "$_INDEX" | grep '^## .*ahead' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_AHEAD" |
||||
fi |
||||
if $(echo "$_INDEX" | grep '^## .*behind' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_BEHIND" |
||||
fi |
||||
if $(echo "$_INDEX" | grep '^## .*diverged' &> /dev/null); then |
||||
_STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_DIVERGED" |
||||
fi |
||||
|
||||
echo $_STATUS |
||||
} |
||||
|
||||
bureau_git_prompt () { |
||||
local _branch=$(bureau_git_branch) |
||||
local _status=$(bureau_git_status) |
||||
local _result="" |
||||
if [[ "${_branch}x" != "x" ]]; then |
||||
_result="$ZSH_THEME_GIT_PROMPT_PREFIX$_branch" |
||||
if [[ "${_status}x" != "x" ]]; then |
||||
_result="$_result $_status" |
||||
fi |
||||
_result="$_result$ZSH_THEME_GIT_PROMPT_SUFFIX" |
||||
fi |
||||
echo $_result |
||||
} |
||||
|
||||
|
||||
_PATH="%{$fg_bold[white]%}%~%{$reset_color%}" |
||||
|
||||
if [[ "%#" == "#" ]]; then |
||||
_USERNAME="%{$fg_bold[red]%}%n" |
||||
_LIBERTY="%{$fg[red]%}#" |
||||
else |
||||
_USERNAME="%{$fg_bold[white]%}%n" |
||||
_LIBERTY="%{$fg[green]%}$" |
||||
fi |
||||
_USERNAME="$_USERNAME%{$reset_color%}@%m" |
||||
_LIBERTY="$_LIBERTY%{$reset_color%}" |
||||
|
||||
|
||||
get_space () { |
||||
local STR=$1$2 |
||||
local zero='%([BSUbfksu]|([FB]|){*})' |
||||
local LENGTH=${#${(S%%)STR//$~zero/}} |
||||
local SPACES="" |
||||
(( LENGTH = ${COLUMNS} - $LENGTH - 1)) |
||||
|
||||
for i in {0..$LENGTH} |
||||
do |
||||
SPACES="$SPACES " |
||||
done |
||||
|
||||
echo $SPACES |
||||
} |
||||
|
||||
_1LEFT="$_USERNAME $_PATH" |
||||
_1RIGHT="[%*] " |
||||
|
||||
bureau_precmd () { |
||||
_1SPACES=`get_space $_1LEFT $_1RIGHT` |
||||
echo |
||||
} |
||||
|
||||
setopt prompt_subst |
||||
PROMPT='$_1LEFT$_1SPACES$_1RIGHT |
||||
> $_LIBERTY ' |
||||
RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)' |
||||
|
||||
autoload -U add-zsh-hook |
||||
add-zsh-hook precmd bureau_precmd |
||||
Loading…
Reference in new issue