This commit is contained in:
GitHub Merge Button 2012-05-31 14:46:15 -07:00
commit d7fa3d36f8
2 changed files with 37 additions and 9 deletions

View file

@ -1,18 +1,20 @@
# get the name of the branch we are on
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
git rev-parse 2> /dev/null || return
ref=$(git symbolic-ref HEAD 2> /dev/null || print '(no branch)')
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
# Checks if working tree is dirty
parse_git_dirty() {
local SUBMODULE_SYNTAX=''
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
SUBMODULE_SYNTAX="--ignore-submodules=dirty"
fi
if [[ -n $(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null) ]]; then
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
gitstatus=$(git status --porcelain ${SUBMODULE_SYNTAX} 2> /dev/null)
if [[ -n "$gitstatus" ]]; then
if [[ "$gitstatus" =~ '^[MADRCU].*$' ]] && (($+ZSH_THEME_GIT_PROMPT_STAGED)); then
echo "$ZSH_THEME_GIT_PROMPT_STAGED"
else
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
fi
else
echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
fi
@ -21,8 +23,16 @@ parse_git_dirty() {
# Checks if there are commits ahead from remote
function git_prompt_ahead() {
if $(echo "$(git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
ahead=$(git rev-list origin/$(current_branch)..HEAD -- 2> /dev/null)
behind=$(git rev-list HEAD..origin/$(current_branch) -- 2> /dev/null)
if [[ -n $ahead && -n $behind ]]; then
echo "$ZSH_THEME_GIT_PROMPT_DIVERGED"
elif [[ -n $ahead ]]; then
echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
elif [[ -n $behind ]]; then
echo "$ZSH_THEME_GIT_PROMPT_BEHIND"
else
echo "$ZSH_THEME_GIT_PROMPT_UPTODATE"
fi
}

18
themes/jgosmann.zsh-theme Normal file
View file

@ -0,0 +1,18 @@
MODE_INDICATOR='%U'
ZSH_THEME_GIT_PROMPT_STAGED='%F{yellow}'
ZSH_THEME_GIT_PROMPT_DIRTY='%F{red}'
ZSH_THEME_GIT_PROMPT_CLEAN='%F{green}'
ZSH_THEME_GIT_PROMPT_DIVERGED='↕'
ZSH_THEME_GIT_PROMPT_AHEAD='↑'
ZSH_THEME_GIT_PROMPT_BEHIND='↓'
ZSH_THEME_GIT_PROMPT_UPTODATE='|'
function git_prompt_info() {
git rev-parse 2> /dev/null || return
ref=$(git symbolic-ref HEAD 2> /dev/null || print '(no branch)')
echo "$(git_prompt_ahead)$(parse_git_dirty)${ref#refs/heads/}"
}
PROMPT='$(vi_mode_prompt_info 2> /dev/null)%m:%F{blue}%1~%f$(git_prompt_info)%{%(?.%F{green}.%F{red})%}%(!.#.>)%f%u '
RPS1='%(?..%F{red}%? )%F{yellow}$(git_prompt_short_sha)%f'