diff options
Diffstat (limited to 'themes/bureau.zsh-theme')
| -rw-r--r-- | themes/bureau.zsh-theme | 113 | 
1 files changed, 113 insertions, 0 deletions
diff --git a/themes/bureau.zsh-theme b/themes/bureau.zsh-theme new file mode 100644 index 000000000..1d88f54d0 --- /dev/null +++ b/themes/bureau.zsh-theme @@ -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  | 
