From 2bbbfa4de0b01fd3b082f6bc95634b0d529d248c Mon Sep 17 00:00:00 2001 From: Colin Hebert Date: Wed, 14 Mar 2012 22:02:16 +0000 Subject: [PATCH] Git-plugin: Move file statuses count Count file status in an external loop. git status shouldn't be used in a non porcelain mode --- plugins/git/functions/git-info | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/plugins/git/functions/git-info b/plugins/git/functions/git-info index eb0796d5..fcd5b24f 100644 --- a/plugins/git/functions/git-info +++ b/plugins/git/functions/git-info @@ -273,20 +273,23 @@ function git-info() { elif [[ "$branch_info[2]" == (#b)(?##) ]]; then branch="$match[1]" fi - else - # Count added, deleted, modified, renamed, unmerged, untracked, dirty. - # T (type change) is undocumented, see http://git.io/FnpMGw. - # For a table of scenarii, see http://i.imgur.com/2YLu1.png. - [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) - [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) - [[ "$line" == ?[MT]\ * ]] && (( modified++ )) - [[ "$line" == R?\ * ]] && (( renamed++ )) - [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) - [[ "$line" == \?\?\ * ]] && (( untracked++ )) - (( dirty++ )) fi done < <("${(z)status_cmd}" 2>/dev/null) + # Get current status. + while IFS=$'\n' read line; do + # Count added, deleted, modified, renamed, unmerged, untracked, dirty. + # T (type change) is undocumented, see http://git.io/FnpMGw. + # For a table of scenarii, see http://i.imgur.com/2YLu1.png. + [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) + [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) + [[ "$line" == ?[MT]\ * ]] && (( modified++ )) + [[ "$line" == R?\ * ]] && (( renamed++ )) + [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) + [[ "$line" == \?\?\ * ]] && (( untracked++ )) + (( dirty++ )) + done < <(${(z)status_cmd} 2>/dev/null) + # Format branch. if [[ -n "$branch" ]]; then zstyle -s ':omz:plugin:git:prompt' branch 'branch_format'