summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--01_Functions.zsh25
-rw-r--r--11_Colors.zsh1
2 files changed, 26 insertions, 0 deletions
diff --git a/01_Functions.zsh b/01_Functions.zsh
index d4c77bf..be04aba 100644
--- a/01_Functions.zsh
+++ b/01_Functions.zsh
@@ -84,6 +84,27 @@ get_git_branch ()
get_git_status ()
{
local my_git_status cached not_up_to_date managment_folder
+ local lockfile previous
+
+ lockfile="$(git rev-parse --git-dir)/.zsh.get_git_status.lock"
+ previous="$(git rev-parse --git-dir)/.zsh.get_git_status.prev"
+
+ if [ -e $lockfile ] ; then
+
+ my_git_status=$git_colors[running]
+
+ [ "$DEBUG" == "yes" ] && echo >&2 "lockfile $lockfile already present.."
+ if [ -e $previous ] ; then
+ [ "$DEBUG" == "yes" ] && eecho >&2 "getting previous status.."
+ my_git_status=$(cat $previous)
+ fi
+
+ echo $my_git_status
+ return
+ fi
+
+ [ "$DEBUG" == "yes" ] && echo >&2 "creating $lockfile.."
+ touch $lockfile
if [ "$(git-rev-parse --git-dir)" == "." ] ; then
echo "$git_colors[managment_folder]"
@@ -107,6 +128,10 @@ get_git_status ()
my_git_status="$git_colors[up_to_date]"
fi
+ [ "$DEBUG" == "yes" ] && echo >&2 "removing $lockfile.."
+ echo $my_git_status > $previous
+ rm -f $lockfile
+
echo $my_git_status
}
diff --git a/11_Colors.zsh b/11_Colors.zsh
index 73f94e2..a610064 100644
--- a/11_Colors.zsh
+++ b/11_Colors.zsh
@@ -73,6 +73,7 @@ set_prompt_colors ()
git_colors[cached_and_not_up_to_date]="$prompt_colors[not_up_to_date];$color[bold]"
git_colors[not_up_to_date]="$prompt_colors[not_up_to_date];$color[normal]" # git changes in working tree
git_colors[up_to_date]="$prompt_colors[up_to_date]" # git up-to-date
+ git_colors[running]="$color[magenta]" # currently running git-status..
}
set_prompt_colors