Skip to content

Instantly share code, notes, and snippets.

@dillonkearns
Last active December 9, 2015 20:58
Show Gist options
  • Save dillonkearns/4327599 to your computer and use it in GitHub Desktop.
Save dillonkearns/4327599 to your computer and use it in GitHub Desktop.
# ------------------------------------------------------------------------
# Based on Juan G. Hurtado oh-my-zsh theme
# (Needs Git plugin for current_branch method)
# ------------------------------------------------------------------------
# save this under .oh-my-zsh/themes/dillon.zsh-theme
# then, in your .zshrc, replace the line:
# ZSH_THEME="robbyrussell"
# with:
# ZSH_THEME="dillon"
# Get the status of the working tree (copied and modified from git.zsh)
dillon_git_prompt_status() {
INDEX=$(git status --porcelain 2> /dev/null)
STATUS=""
# Non-staged
if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
fi
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
fi
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
fi
if $(echo "$INDEX" | grep '^.M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
fi
# Staged
if $(echo "$INDEX" | grep '^D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_DELETED$STATUS"
fi
if $(echo "$INDEX" | grep '^R' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_RENAMED$STATUS"
fi
if $(echo "$INDEX" | grep '^M' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED$STATUS"
fi
if $(echo "$INDEX" | grep '^A' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_ADDED$STATUS"
fi
if $(echo -n "$STATUS" | grep '.*' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_STATUS_PREFIX$STATUS"
fi
echo $STATUS
}
# Staged
ZSH_THEME_GIT_PROMPT_STAGED_ADDED="%{$fg[green]%}A"
ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED="%{$fg[green]%}M"
ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$fg[green]%}R"
ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$fg[green]%}D"
# Not-staged
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[red]%}⁇"
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[red]%}M"
ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%}D"
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}UU"
# Format for git_remote_status()
ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="%{$fg_bold[magenta]%}↓%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE="%{$fg_bold[magenta]%}↑%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="%{$fg_bold[magenta]%}↕%{$reset_color%}"
# Format for git_prompt_long_sha() and git_prompt_short_sha()
ZSH_THEME_GIT_PROMPT_SHA_BEFORE=" %{$fg[yellow]%}"
ZSH_THEME_GIT_PROMPT_SHA_AFTER=""
# source: afowler.zsh-theme
local return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})"
# Prompt format
PROMPT='%{$fg[green]%}%~%u%{$reset_color%} '
RPROMPT='${return_code}%{$fg[green]%}$(current_branch)%{$reset_color%}$(git_remote_status)$(git_prompt_short_sha)%{$reset_color%} $(dillon_git_prompt_status) %{$reset_color%}%T'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment