Skip to content

Instantly share code, notes, and snippets.

@cstrahan
Forked from scelis/chpwd_update_git_vars.sh
Created March 19, 2012 16:07
Show Gist options
  • Select an option

  • Save cstrahan/2117475 to your computer and use it in GitHub Desktop.

Select an option

Save cstrahan/2117475 to your computer and use it in GitHub Desktop.
Add git information to your ZSH prompt.
update_current_git_vars
if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
update_current_git_vars
unset __EXECUTED_GIT_COMMAND
fi
case "$1" in
git*)
__EXECUTED_GIT_COMMAND=1
;;
esac
if [ -n "$__CURRENT_GIT_BRANCH" ]; then
local s="("
s+="$__CURRENT_GIT_BRANCH"
case "$__CURRENT_GIT_BRANCH_STATUS" in
ahead)
s+=""
;;
diverged)
s+=""
;;
behind)
s+=""
;;
esac
if [ -n "$__CURRENT_GIT_BRANCH_IS_DIRTY" ]; then
s+=""
fi
s+=")"
printf " %s%s" "%{${fg[yellow]}%}" $s
fi
unset __CURRENT_GIT_BRANCH
unset __CURRENT_GIT_BRANCH_STATUS
unset __CURRENT_GIT_BRANCH_IS_DIRTY
local st="$(git status 2>/dev/null)"
if [[ -n "$st" ]]; then
local -a arr
arr=(${(f)st})
if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
__CURRENT_GIT_BRANCH='no-branch'
else
__CURRENT_GIT_BRANCH="${arr[1][(w)4]}";
fi
if [[ $arr[2] =~ 'Your branch is' ]]; then
if [[ $arr[2] =~ 'ahead' ]]; then
__CURRENT_GIT_BRANCH_STATUS='ahead'
elif [[ $arr[2] =~ 'diverged' ]]; then
__CURRENT_GIT_BRANCH_STATUS='diverged'
else
__CURRENT_GIT_BRANCH_STATUS='behind'
fi
fi
if [[ ! $st =~ 'nothing to commit' ]]; then
__CURRENT_GIT_BRANCH_IS_DIRTY='1'
fi
fi
# Initialize colors.
autoload -U colors
colors
# Allow for functions in the prompt.
setopt PROMPT_SUBST
# Autoload zsh functions.
fpath=(~/.zsh/functions $fpath)
autoload -U ~/.zsh/functions/*(:t)
# Enable auto-execution of functions.
typeset -ga preexec_functions
typeset -ga precmd_functions
typeset -ga chpwd_functions
# Append git functions needed for prompt.
preexec_functions+='preexec_update_git_vars'
precmd_functions+='precmd_update_git_vars'
chpwd_functions+='chpwd_update_git_vars'
# Set the prompt.
PROMPT=$'%{${fg[cyan]}%}%B%~%b$(prompt_git_info)%{${fg[default]}%} '
@j3j3

j3j3 commented May 16, 2012

Copy link
Copy Markdown

What an amazing gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment