]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
zsh/rc: Set PROMPT in a precmd() hook.
authorSimon Ruderich <simon@ruderich.org>
Mon, 17 May 2010 10:34:24 +0000 (12:34 +0200)
committerSimon Ruderich <simon@ruderich.org>
Mon, 17 May 2010 10:36:03 +0000 (12:36 +0200)
zsh/rc

diff --git a/zsh/rc b/zsh/rc
index e29219af05bfa5d838054800abf923e1b9634b44..635ea6df8489b7dbb11818c4c0fd8e3d85d25c0c 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -241,11 +241,6 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ||
     }
     add-zsh-hook chpwd prompt_chpwd
 
-    # Call vcs_info as precmd before every prompt.
-    prompt_precmd() {
-        vcs_info
-    }
-    add-zsh-hook precmd prompt_precmd
 
     # Display the VCS information in the right prompt.
     if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ]]; then
@@ -256,6 +251,10 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ||
     else
         RPROMPT='${vcs_info_msg_0_:- }'
     fi
+
+    RUN_VCS_INFO=1
+else
+    RUN_VCS_INFO=
 fi
 
 # Set the default prompt. The current host and working directory is displayed,
@@ -264,11 +263,18 @@ fi
 #
 # The prompt is in green and blue to make easily detectable, the error exit
 # code in red and bold and the job count in yellow.
-PROMPT="$green%B%m%b$default:$blue%B%~%b$default \
+prompt_precmd() {
+    # Call vcs_info before every prompt.
+    if [[ -n $RUN_VCS_INFO ]]; then
+        vcs_info
+    fi
+
+    PROMPT="$green%B%m%b$default:$blue%B%~%b$default \
 %(1j.$yellow%j$default.)%# \
 %(?..($red%B%?%b$default%) )"
+}
+add-zsh-hook precmd prompt_precmd
 
-unset red blue green yellow default
 
 # When screen, xterm or rxvt is used set the name of the window to the
 # currently running program.