diff --git a/plugins/git/functions/git-info b/plugins/git/functions/git-info index 8f31a75f..fd711a1a 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,13 +278,7 @@ 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 + (( dirty++ )) # Count: added/deleted/modified/renamed/unmerged/untracked [[ "$line" == (((A|M|D|T) )|(AD|AM|AT|MM))\ * ]] && (( added++ )) @@ -359,6 +354,12 @@ 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" + 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..875c84fe 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 on branch. +zstyle ':omz:plugin:git:prompt' dirty 'dirty:%D' # %m - Indicator to notify of modified files. zstyle ':omz:plugin:git:prompt' modified 'modified:%m'