]> git.donarmstrong.com Git - zsh.git/commitdiff
smarter printing of git-diff
authormartin f. krafft <madduck@madduck.net>
Fri, 27 Jun 2008 18:04:32 +0000 (20:04 +0200)
committermartin f. krafft <madduck@madduck.net>
Fri, 27 Jun 2008 18:04:32 +0000 (20:04 +0200)
.zsh/zshrc/60_vcsprompt

index 22b6e5154cd4918205b37470c319cfed9ecf9577..a23aab5cbf21a0b52f2f2307eaf35d5b141edf6d 100644 (file)
@@ -32,6 +32,21 @@ __git_get_branch()
   echo "${ref#refs/heads/}"
 }
 
+__git_print_preprompt()
+{
+  local output
+  output=(${(f):-"$(git diff --stat --relative)"})
+  if [[ ${#output} -gt 1 ]]; then
+    echo changes on filesystem:
+    print "${(F)output[1,-2]}"
+  fi
+  output=(${(f):-"$(git diff --cached --stat --relative)"})
+  if [[ ${#output} -gt 1 ]]; then
+    echo cached/staged changes:
+    print "${(F)output[1,-2]}"
+  fi
+}
+
 __hg_get_reporoot()
 {
   hg root
@@ -147,18 +162,6 @@ __vcs_set_prompt_variables()
         local _D="${GIT_DIR/$HOME/~}"
         set -- "$_D" "$2" "${${1#$_D}%/}"
       fi
-
-      output=(${(f):-"$(git diff --stat --relative)"})
-      if [[ ${#output} -gt 1 ]]; then
-        echo changes on filesystem:
-        print "${(F)output[1,-2]}"
-      fi
-      output=(${(f):-"$(git diff --cached --stat --relative)"})
-      if [[ ${#output} -gt 1 ]]; then
-        echo cached/staged changes:
-        print "${(F)output[1,-2]}"
-      fi
-      unset output
       ;;
     hg)
       reporoot="$(__hg_get_reporoot)" ||
@@ -190,6 +193,18 @@ __vcs_set_prompt_variables()
   psvar[1,3]=($1 $2 $3)
 }
 
+__vcs_print_preprompt()
+{
+  local reporoot
+  repotype="${1:-$(__vcs_get_repo_type)}"
+
+  case "$repotype" in
+    git)
+      __git_print_preprompt
+      ;;
+  esac
+}
+
 if ! is_root; then
   # too dangerous to be run as root
 
@@ -207,6 +222,12 @@ if ! is_root; then
   }
   chpwd_functions+=_update_vcs_prompt_vars
 
+  _print_preprompt() {
+    [[ $? -eq 0 ]] && __vcs_print_preprompt
+  }
+  chpwd_functions+=_print_preprompt
+  precmd_functions+=_print_preprompt
+
   # call it once
   _update_vcs_prompt_vars
 fi