local yellow="%{${fg[yellow]}%}"
local default="%{${fg[default]}%}"
-# Set the default prompt. The current host and working directory is displayed,
-# the exit code of the last command if it wasn't 0, the number of running jobs
-# if not 0.
-#
-# 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 \
-%(1j.$yellow%j$default.)%# \
-%(?..($red%B%?%b$default%) )"
-
# vcs_info was added in 4.3.9 but it works in earlier versions too. So load it
# if the necessary files are available in ~/.zsh/functions/vcs_info (often a
# symbolic link to current checkout of Zsh's sources).
$fpath)
fi
- # Allow substitutions and expansions in the prompt, necessary for
- # vcs_info.
- setopt promptsubst
# Load vcs_info to display information about version control repositories.
autoload -Uz vcs_info
# Only look for git and mercurial repositories; the only I use.
}
add-zsh-hook chpwd prompt_chpwd
- # Call vcs_info as precmd before every prompt.
- prompt_precmd() {
+ # Used by prompt code below to determine if vcs_info should be run.
+ RUN_VCS_INFO=1
+else
+ RUN_VCS_INFO=
+fi
+
+# Set the default prompt. The current host and working directory is displayed,
+# the exit code of the last command if it wasn't 0, the number of running jobs
+# if not 0.
+#
+# 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_precmd() {
+ # Call vcs_info before every prompt.
+ if [[ -n $RUN_VCS_INFO ]]; then
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
- RPROMPT='${vcs_info_msg_0_}'
- # There is a bug in Zsh below 4.3.9 which displays a wrong symbol when
- # ${vcs_info_msg_0_} is empty. Provide a workaround for those versions,
- # thanks to Frank Terbeck <ft@bewatermyfriend.org> for it.
- else
- RPROMPT='${vcs_info_msg_0_:- }'
+
+ # Display the VCS information in the right prompt.
+ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ]]; then
+ RPROMPT="${vcs_info_msg_0_}"
+ # There is a bug in Zsh below 4.3.9 which displays a wrong symbol when
+ # ${vcs_info_msg_0_} is empty. Provide a workaround for those
+ # versions, thanks to Frank Terbeck <ft@bewatermyfriend.org> for it.
+ else
+ RPROMPT="${vcs_info_msg_0_:- }"
+ fi
fi
-fi
-unset red blue green yellow default
+ PROMPT="$green%B%m%b$default:$blue%B%~%b$default \
+%(1j.$yellow%j$default.)%# \
+%(?..($red%B%?%b$default%) )"
+}
+add-zsh-hook precmd prompt_precmd
+
# When screen, xterm or rxvt is used set the name of the window to the
# currently running program.