Last active
June 26, 2016 00:32
-
-
Save vilhelmen/d0d7abae17b46997b5c96de1b9349cd1 to your computer and use it in GitHub Desktop.
This file contains 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
#!/bin/zsh | |
# see documentation at http://linux.die.net/man/1/zshexpn | |
# A: finds the absolute path, even if this is symlinked | |
# h: equivalent to dirname | |
#local __GIT_PROMPT_DIR=${0:A:h} | |
local gitstatus="${0:A:h}/gitstatus" | |
#export GIT_PROMPT_EXECUTABLE=${GIT_PROMPT_USE_PYTHON:-"python"} | |
# Initialize colors. | |
#autoload -U colors | |
#colors | |
# SOLARIZE OVERRIDE | |
# Allow for functions in the prompt. | |
setopt PROMPT_SUBST | |
autoload -Uz add-zsh-hook | |
add-zsh-hook chpwd chpwd_update_git_vars | |
add-zsh-hook preexec preexec_update_git_vars | |
add-zsh-hook precmd precmd_update_git_vars | |
## Function definitions | |
function preexec_update_git_vars() { | |
case "$2" in | |
git*|hub*|gh*|stg*) | |
__EXECUTED_GIT_COMMAND=1 | |
;; | |
esac | |
} | |
function precmd_update_git_vars() { | |
if [ -n "$__EXECUTED_GIT_COMMAND" ] || [ ! -n "$ZSH_THEME_GIT_PROMPT_CACHE" ]; then | |
update_current_git_vars | |
unset __EXECUTED_GIT_COMMAND | |
fi | |
} | |
function chpwd_update_git_vars() { | |
update_current_git_vars | |
} | |
function update_current_git_vars() { | |
unset __CURRENT_GIT_STATUS | |
#if [[ "$GIT_PROMPT_EXECUTABLE" == "python" ]]; then | |
# local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py" | |
# _GIT_STATUS=`python ${gitstatus} 2>/dev/null` | |
#fi | |
#if [[ "$GIT_PROMPT_EXECUTABLE" == "haskell" ]]; then | |
#local gitstatus="${__GIT_PROMPT_DIR}/gitstatus" | |
_GIT_STATUS=$(git status --porcelain --branch --ignore-submodules &> /dev/null | ${gitstatus}) | |
#fi | |
__CURRENT_GIT_STATUS=("${(@s: :)_GIT_STATUS}") | |
GIT_BRANCH=$__CURRENT_GIT_STATUS[1] | |
GIT_AHEAD=$__CURRENT_GIT_STATUS[2] | |
GIT_BEHIND=$__CURRENT_GIT_STATUS[3] | |
GIT_STAGED=$__CURRENT_GIT_STATUS[4] | |
GIT_CONFLICTS=$__CURRENT_GIT_STATUS[5] | |
GIT_CHANGED=$__CURRENT_GIT_STATUS[6] | |
GIT_UNTRACKED=$__CURRENT_GIT_STATUS[7] | |
} | |
git_super_status() { | |
precmd_update_git_vars | |
if [ -n "$__CURRENT_GIT_STATUS" ]; then | |
STATUS="${ZSH_THEME_GIT_PROMPT_PREFIX}${ZSH_THEME_GIT_PROMPT_BRANCH}${GIT_BRANCH}%{${RESET}%}" | |
if (( GIT_BEHIND != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_BEHIND}${GIT_BEHIND}%{${RESET}%}" | |
fi | |
if (( GIT_AHEAD != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_AHEAD}${GIT_AHEAD}%{${RESET}%}" | |
fi | |
STATUS+="$ZSH_THEME_GIT_PROMPT_SEPARATOR" | |
if (( GIT_STAGED != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_STAGED}${GIT_STAGED}%{${RESET}%}" | |
fi | |
if (( GIT_CONFLICTS != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_CONFLICTS}${GIT_CONFLICTS}%{${RESET}%}" | |
fi | |
if (( GIT_CHANGED != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_CHANGED}${GIT_CHANGED}%{${RESET}%}" | |
fi | |
if (( GIT_UNTRACKED != 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_UNTRACKED}%{${RESET}%}" | |
fi | |
if (( GIT_CHANGED == 0 )) && (( GIT_CONFLICTS == 0 )) && (( GIT_STAGED == 0 )) && (( GIT_UNTRACKED == 0 )); then | |
STATUS+="${ZSH_THEME_GIT_PROMPT_CLEAN}" | |
fi | |
STATUS+="%{${RESET}%}${ZSH_THEME_GIT_PROMPT_SUFFIX}" | |
echo "$STATUS" | |
fi | |
} | |
# Default values for the appearance of the prompt. Configure at will. | |
ZSH_THEME_GIT_PROMPT_PREFIX="[" | |
ZSH_THEME_GIT_PROMPT_SUFFIX="]" | |
ZSH_THEME_GIT_PROMPT_SEPARATOR="|" | |
ZSH_THEME_GIT_PROMPT_BRANCH="%{${VIOLET}%}" | |
ZSH_THEME_GIT_PROMPT_STAGED="%{${CYAN}%}%{•%G%}" | |
ZSH_THEME_GIT_PROMPT_CONFLICTS="%{${MAGENTA}%}%{×%G%}" | |
ZSH_THEME_GIT_PROMPT_CHANGED="%{${GREEN}%}%{+%G%}" | |
ZSH_THEME_GIT_PROMPT_BEHIND="%{${RED}%}%{↓%G%}" | |
ZSH_THEME_GIT_PROMPT_AHEAD="%{${GREEN}%}%{↑%G%}" | |
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{${BLUE}%}%{…%G%}" | |
ZSH_THEME_GIT_PROMPT_CLEAN="%{${GREEN}%}%{✔%G%}" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment