diff --git a/lib/git.zsh b/lib/git.zsh index 889dd98df..e4fe4852e 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -5,9 +5,23 @@ function git_prompt_info() { } parse_git_dirty () { - if [[ -n $(git status -s 2> /dev/null) ]]; then - echo "$ZSH_THEME_GIT_PROMPT_DIRTY" - else - echo "$ZSH_THEME_GIT_PROMPT_CLEAN" + gitstat=$(git status -s 2>/dev/null | grep -v '\(^A|^M|^.M|??\)') + + if [[ $(echo ${gitstat} | grep -v '^$' | wc -l | tr -d ' ') == 0 ]]; then + echo -n "$ZSH_THEME_GIT_PROMPT_CLEAN" + else + echo -n "$ZSH_THEME_GIT_PROMPT_UNCLEAN_SPACER" + fi + + if [[ $(echo ${gitstat} | grep -c "^.M") > 0 ]]; then + echo -n "$ZSH_THEME_GIT_PROMPT_DIRTY" + fi + + if [[ $(echo ${gitstat} | grep -c "^[MA]") > 0 ]]; then + echo -n "$ZSH_THEME_GIT_PROMPT_STAGED" + fi + + if [[ $(echo ${gitstat} | grep -c '^??') > 0 ]]; then + echo -n "$ZSH_THEME_GIT_PROMPT_UNTRACKED" fi } diff --git a/themes/lukerandall.zsh-theme b/themes/lukerandall.zsh-theme index 24a0612b7..a6686beae 100644 --- a/themes/lukerandall.zsh-theme +++ b/themes/lukerandall.zsh-theme @@ -8,3 +8,9 @@ RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(" ZSH_THEME_GIT_PROMPT_SUFFIX=") %{$reset_color%}" + +ZSH_THEME_GIT_PROMPT_DIRTY="*" +ZSH_THEME_GIT_PROMPT_STAGED="+" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%%" + +ZSH_THEME_GIT_PROMPT_UNCLEAN_SPACER=" " \ No newline at end of file