Skip to content
Browse files

Merge changes from zsh git gist

  • Loading branch information...
1 parent 74dd15c commit bf1c070ae668845fdfa138e0572bf50d4445485b @matzko committed Feb 6, 2012
View
1 zshfunctions/chpwd_update_git_vars.sh
@@ -0,0 +1 @@
+update_current_git_vars
View
4 zshfunctions/precmd_update_git_vars.sh
@@ -0,0 +1,4 @@
+if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
+ update_current_git_vars
+ unset __EXECUTED_GIT_COMMAND
+fi
View
5 zshfunctions/preexec_update_git_vars.sh
@@ -0,0 +1,5 @@
+case "$1" in
+ git*)
+ __EXECUTED_GIT_COMMAND=1
+ ;;
+esac
View
21 zshfunctions/prompt_git_info.sh
@@ -0,0 +1,21 @@
+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
View
29 zshfunctions/update_current_git_vars.sh
@@ -0,0 +1,29 @@
+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
View
23 zshfunctions/zshrc.sh
@@ -0,0 +1,23 @@
+# 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]}%} '

0 comments on commit bf1c070

Please sign in to comment.
Something went wrong with that request. Please try again.