diff options
-rw-r--r-- | 01_Functions.zsh | 25 | ||||
-rw-r--r-- | 11_Colors.zsh | 1 |
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 |