diff --git a/bash/prompt b/bash/prompt index e4d0d42..dc8d7cb 100644 --- a/bash/prompt +++ b/bash/prompt @@ -63,7 +63,7 @@ clear_incomplete_line() { } # git prompt info -source $DOTFILES_BASH_DIR/git_prompt_info +source $DOTFILES_SHELL_DIR/git_prompt_info GIT_PS1_SHOWDIRTYSTATE=1 GIT_PS1_SHOWSTASHSTATE=1 GIT_PS1_SHOWUNTRACKEDFILES=1 diff --git a/bash/git_prompt_info b/shell/git_prompt_info similarity index 98% rename from bash/git_prompt_info rename to shell/git_prompt_info index 22c58d9..da39075 100644 --- a/bash/git_prompt_info +++ b/shell/git_prompt_info @@ -1,6 +1,6 @@ # extracted from git's bash completion contrib # don't redefine it if it's there already -if [[ -z "$(type -t __gitdir)" ]]; then +if [[ -z $BASH_VERSION || -z "$(type -t __gitdir)" ]]; then __gitdir () { if [ -z "${1-}" ]; then diff --git a/zsh/prompt b/zsh/prompt index 3e6330c..5892b4d 100644 --- a/zsh/prompt +++ b/zsh/prompt @@ -127,16 +127,15 @@ prompt_dir() { } prompt_git() { - if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then + if [[ -n $GIT_PS1_STATUS ]]; then PROMPT_VCS_TYPE='git' - PROMPT_VCS_REF=$(git symbolic-ref HEAD 2> /dev/null) - PROMPT_VCS_REF="${PROMPT_VCS_REF/refs\/heads\//}" - PROMPT_VCS_WPATH=$(cd $(dirname $(git rev-parse --git-dir)) && pwd) - PROMPT_VCS_WNAME=$(basename $PROMPT_VCS_WPATH) - PROMPT_VCS_WPWD="${PWD#$PROMPT_VCS_WPATH}" - PROMPT_VCS_WPWD="${PROMPT_VCS_WPWD#/}" - git diff --ignore-submodules --quiet - PROMPT_VCS_DIRTY=$? + PROMPT_VCS_REF="$GIT_PS1_BRANCH" + PROMPT_VCS_WPATH="$GIT_PS1_TOPLEVEL" + PROMPT_VCS_WNAME="$GIT_PS1_NAME" + PROMPT_VCS_WPWD="$GIT_PS1_PREFIX" + [[ "$GIT_PS1_STATUS" == *t* ]] && PROMPT_VCS_DIRTY=1 + [[ "$GIT_PS1_STATUS" == *u* ]] && PROMPT_VCS_DIRTY=1 + [[ "$GIT_PS1_STATUS" == *s* ]] && PROMPT_VCS_DIRTY=1 return 0 else unset PROMPT_VCS_TYPE diff --git a/zsh/rc b/zsh/rc index 3a6ec09..881d019 100644 --- a/zsh/rc +++ b/zsh/rc @@ -13,6 +13,12 @@ source $DOTFILES_ZSH_DIR/completion source $DOTFILES_ZSH_DIR/prompt source $DOTFILES_ZSH_DIR/bundler +source $DOTFILES_SHELL_DIR/git_prompt_info +GIT_PS1_SHOWDIRTYSTATE=1 +GIT_PS1_SHOWSTASHSTATE=1 +GIT_PS1_SHOWUNTRACKEDFILES=1 +__git_ps1_vars + precmd() { LAST_CMD_RC=$? psvar=() @@ -26,6 +32,7 @@ preexec() { } chpwd() { + __git_ps1_vars #set_term_title }