From 5ea4b989b1f7345e0777162664e8a80a8bf91719 Mon Sep 17 00:00:00 2001 From: Zoey Llewellyn Hewll Date: Sat, 7 Oct 2017 10:41:48 +0800 Subject: [PATCH] Add rudimentary error-state detection in git-info * If status_cmd fails, increment the error count * Add :prezto:module:git:info:error (%E) to format error count --- modules/git/functions/git-info | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index fe8ca2ac..2384131f 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -139,6 +139,9 @@ function git-info { local dirty=0 local dirty_format local dirty_formatted + local error=0 + local error_format + local error_formatted local ignore_submodules local indexed=0 local indexed_format @@ -351,6 +354,7 @@ function git-info { else # Use porcelain status for easy parsing. status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}" + ${(z)status_cmd} &> /dev/null || error=1 # Get current status. while IFS=$'\n' read line; do @@ -411,6 +415,12 @@ function git-info { zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted' fi + # Format error. + if (( error > 0 )); then + zstyle -s ':prezto:module:git:info:error' format 'error_format' + zformat -f error_formatted "$error_format" "E:$error" + fi + # Format info. zstyle -a ':prezto:module:git:info:keys' format 'info_formats' for info_format in ${(k)info_formats}; do @@ -423,6 +433,7 @@ function git-info { "c:$commit_formatted" \ "d:$deleted_formatted" \ "D:$dirty_formatted" \ + "E:$error_formatted" \ "i:$indexed_formatted" \ "I:$unindexed_formatted" \ "m:$modified_formatted" \