Last active
August 29, 2015 13:56
-
-
Save briancain/8984522 to your computer and use it in GitHub Desktop.
My custom theme for oh-my-zsh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Display user and host in prompt | |
local user_host='%{$terminfo[bold]$fg[blue]%}%n@%m%{$reset_color%}' | |
# Build left hand prompt | |
PROMPT="${user_host}:%{$fg_bold[green]%}%p%{$fg[cyan]%}%c%{$reset_color%} $ " | |
# rvm development | |
# local rvm_ruby='' | |
# if which rvm-prompt &> /dev/null; then | |
# rvm_ruby='%{$fg[red]%}[$(rvm-prompt i v g)]%{$reset_color%}' | |
# else | |
# if which rbenv &> /dev/null; then | |
# rvm_ruby='%{$fg[red]%}[$(rbenv version | sed -e "s/ (set.*$//")]%{$reset_color%}' | |
# fi | |
# fi | |
# Modify the colors and symbols in these variables as desired. | |
GIT_PROMPT_SYMBOL="%{$fg[blue]%}±" | |
GIT_PROMPT_PREFIX="%{$fg[green]%}[%{$reset_color%}" | |
GIT_PROMPT_SUFFIX="%{$fg[green]%}]%{$reset_color%}" | |
GIT_PROMPT_AHEAD="%{$fg[red]%}ANUM%{$reset_color%}" | |
GIT_PROMPT_BEHIND="%{$fg[cyan]%}BNUM%{$reset_color%}" | |
GIT_PROMPT_MERGING="%{$fg_bold[magenta]%}⚡︎%{$reset_color%}" | |
GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}" | |
GIT_PROMPT_MODIFIED="%{$fg_bold[yellow]%}●%{$reset_color%}" | |
GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}" | |
# Show Git branch/tag, or name-rev if on detached head | |
parse_git_branch() { | |
(git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null | |
} | |
# Show different symbols as appropriate for various Git repository states | |
parse_git_state() { | |
# Compose this value via multiple conditional appends. | |
local GIT_STATE="" | |
local NUM_AHEAD="$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')" | |
if [ "$NUM_AHEAD" -gt 0 ]; then | |
GIT_STATE=$GIT_STATE${GIT_PROMPT_AHEAD//NUM/$NUM_AHEAD} | |
fi | |
local NUM_BEHIND="$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')" | |
if [ "$NUM_BEHIND" -gt 0 ]; then | |
GIT_STATE=$GIT_STATE${GIT_PROMPT_BEHIND//NUM/$NUM_BEHIND} | |
fi | |
local GIT_DIR="$(git rev-parse --git-dir 2> /dev/null)" | |
if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then | |
GIT_STATE=$GIT_STATE$GIT_PROMPT_MERGING | |
fi | |
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then | |
GIT_STATE=$GIT_STATE$GIT_PROMPT_UNTRACKED | |
fi | |
if ! git diff --quiet 2> /dev/null; then | |
GIT_STATE=$GIT_STATE$GIT_PROMPT_MODIFIED | |
fi | |
if ! git diff --cached --quiet 2> /dev/null; then | |
GIT_STATE=$GIT_STATE$GIT_PROMPT_STAGED | |
fi | |
if [[ -n $GIT_STATE ]]; then | |
echo "$GIT_PROMPT_PREFIX$GIT_STATE$GIT_PROMPT_SUFFIX" | |
fi | |
} | |
# If inside a Git repository, print its branch and state | |
git_custom_status() { | |
local git_where="$(parse_git_branch)" | |
[ -n "$git_where" ] && echo "$GIT_PROMPT_SYMBOL$(parse_git_state)$GIT_PROMPT_PREFIX%{$fg[yellow]%}${git_where#(refs/heads/|tags/)}$GIT_PROMPT_SUFFIX" | |
} | |
# Set the right-hand prompt | |
RPS1='$(git_custom_status)' | |
# RPS1+="${rvm_ruby}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment