From 514aaa014b32f2fa71def679dc9775ec9e13bd4b Mon Sep 17 00:00:00 2001 From: Colin Hebert Date: Wed, 14 Mar 2012 23:13:38 +0000 Subject: [PATCH] [Fix #42] Count dirty files in Git repositories --- plugins/git/functions/git-info | 21 +++++++++++---------- plugins/git/style.zsh | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/plugins/git/functions/git-info b/plugins/git/functions/git-info index 8f31a75f..8e551aeb 100644 --- a/plugins/git/functions/git-info +++ b/plugins/git/functions/git-info @@ -145,7 +145,8 @@ function git-info() { local deleted=0 local deleted_format local deleted_formatted - local dirty + local dirty=0 + local dirty_format local dirty_formatted local line_number=0 local modified=0 @@ -277,21 +278,14 @@ function git-info() { branch="$match[1]" fi else - # Format dirty. - if [[ -z "$dirty" ]]; then - zstyle -s ':omz:plugin:git:prompt' dirty 'dirty_formatted' - if [[ -z "$dirty_formatted" ]]; then - unset clean_formatted - fi - fi - - # Count: added/deleted/modified/renamed/unmerged/untracked + # Count added, deleted, modified, renamed, unmerged, untracked, dirty. [[ "$line" == (((A|M|D|T) )|(AD|AM|AT|MM))\ * ]] && (( added++ )) [[ "$line" == ( D|AD)\ * ]] && (( deleted++ )) [[ "$line" == (( (M|T))|(AM|AT|MM))\ * ]] && (( modified++ )) [[ "$line" == R\ \ * ]] && (( renamed++ )) [[ "$line" == UU\ * ]] && (( unmerged++ )) [[ "$line" == \?\?\ * ]] && (( untracked++ )) + (( dirty++ )) fi done < <("${(z)status_cmd}" 2>/dev/null) @@ -359,6 +353,13 @@ function git-info() { zformat -f untracked_formatted "$untracked_format" "u:$untracked" fi + # Format dirty. + if (( $dirty > 0 )); then + zstyle -s ':omz:plugin:git:prompt' dirty 'dirty_format' + zformat -f dirty_formatted "$dirty_format" "D:$dirty" + unset clean_formatted + fi + # Format prompts. zstyle -s ':omz:plugin:git:prompt' prompt 'prompt_format' zstyle -s ':omz:plugin:git:prompt' rprompt 'rprompt_format' diff --git a/plugins/git/style.zsh b/plugins/git/style.zsh index 9f0a6102..94123089 100644 --- a/plugins/git/style.zsh +++ b/plugins/git/style.zsh @@ -29,8 +29,8 @@ zstyle ':omz:plugin:git:prompt' commit 'commit:%c' # %d - Indicator to notify of deleted files. zstyle ':omz:plugin:git:prompt' deleted 'deleted:%d' -# %D - Indicator to notify of dirty branch. -zstyle ':omz:plugin:git:prompt' dirty 'dirty' +# %D - Indicator to notify of dirty files. +zstyle ':omz:plugin:git:prompt' dirty 'dirty:%D' # %m - Indicator to notify of modified files. zstyle ':omz:plugin:git:prompt' modified 'modified:%m'