# Use colorized output, necessary for prompts and completions.
autoload -U colors && colors
+# Some shortcuts for colors.
+local red="%{${fg[red]}%}"
+local blue="%{${fg[blue]}%}"
+local green="%{${fg[green]}%}"
+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 and a + if this shell is running inside another shell.
# 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="%{${fg[green]}%}%B%m%b%{${fg[default]}%}:\
-%{${fg[blue]}%}%B%~%b%{${fg[default]}%} \
-%(1j.%{${fg[yellow]}%}%j%{${fg[default]}%}.)%(2L.+.)%# \
-%(?..(%{${fg[red]}%}%B%?%b%{${fg[default]}%}%) )"
+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
autoload -Uz vcs_info
# Only look for git and mercurial repositories; the only I use.
zstyle ':vcs_info:*' enable git hg
+ # Check the repository for changes so they can be used in %u/%c (see
+ # below). This comes with a speed penalty for bigger repositories.
+ zstyle ':vcs_info:*' check-for-changes true
+
# Set style of VCS_info display. The current branch (green) and VCS (blue)
# is displayed. If there is an special action going on (merge, rebase)
# it's also displayed (red).
zstyle ':vcs_info:*' formats \
- "(%{${fg[green]}%}%b%{${fg[default]}%}:\
-%{${fg[blue]}%}%s%{${fg[default]}%})"
+ "($green%b%u%c$default:$blue%s$default)"
zstyle ':vcs_info:*' actionformats \
- "(%{${fg[green]}%}%b%{${fg[default]}%}/\
-%{${fg[red]}%}%a%{${fg[default]}%}:\
-%{${fg[blue]}%}%s%{${fg[default]}%})"
+ "($green%b$default/$red%a$default:$blue%s$default)"
+ # Set style for formats/actionformats when unstaged (%u) and staged (%c)
+ # changes are detected in the repository; check-for-changes must be set to
+ # true for this to work. Thanks to Bart Trojanowski
+ # (http://jukie.net/~bart/blog/pimping-out-zsh-prompt) for the idea
+ # (2010-03-11 00:20).
+ zstyle ':vcs_info:*' unstagedstr '¹'
+ zstyle ':vcs_info:*' stagedstr '²'
+
# Call VCS_info as precmd before every prompt.
prompt_precmd() {
vcs_info
fi
fi
+unset red blue green yellow default
+
# When screen, xterm or rxvt is used set the name of the window to the
# currently running program.
#