--- /dev/null
+# zshrc/80_prompt
+#
+# Formats the shell prompt
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: git://git.madduck.net/etc/zsh.git
+#
+
+is_root && _PS1_HL=U
+_PS1_PREFIX="%(2L.+.)%${_PS1_HL:=B}%m%${(L)_PS1_HL}"
+_PS1_PREFIX="$_PS1_PREFIX${debian_chroot:+/%S$debian_chroot%s}:"
+
+_PS1_SUFFIX='%# '
+
+_make_ps1() {
+ PS1="${_PS1_PREFIX}$@${_PS1_SUFFIX}"
+}
+
+[[ $PS1 = '%m%# ' ]] && _make_ps1 '%25<..<%~%<<'
+
+: ${RPS1:="#%(0?..%?,)%!"}
+
+# vim:ft=zsh
autoload -Uz vcs_info
-zstyle ':vcs_info:*' actionformats \
- '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
-zstyle ':vcs_info:*' formats \
- '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '
-zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
-
-#PS1=’%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_}’"%f%# ’
+# %s The vcs in use (git, hg, svn etc.)
+# %b Information about the current branch.
+# %a An identifier, that describes the action. Only makes sense in actionformats.
+# %i The current revision number or identifier.
+# %c The string from the stagedstr style if there are staged changes in the repository.
+# %u The string from the unstagedstr style if there are unstaged changes in the repository.
+# %R base directory of the repository.
+# %r repository name. If %R is /foo/bar/repoXY, %r is repoXY.
+# %S subdirectory within a repository. If $PWD is /foo/bar/reposXY/beer/tasty, %S is
+# beer/tasty.
+# %m A "misc" replacement. It is at the discretion of the backend to decide what this
+# replacement expands to. It is currently used only by the hg backend. The hg backend
+# replaces %m with the global hash value of the current revision.
zstyle ':vcs_info:*' disable cdv darcs mtn svk p4 tla
+zstyle ':vcs_info:*' check-for-changes true
+zstyle ':vcs_info:*' max-exports 6
+zstyle ':vcs_info:*' formats '%R' '%s' '%b' '' '%c%u' '%S'
+zstyle ':vcs_info:*' actionformats '%R' '%s' '%b' '%a' '%c%u' '%S'
+
+__vcs_info_precmd() {
+ vcs_info
+
+ local prefix="${vcs_info_msg_0_/$HOME/~}"
+ local suffix="$vcs_info_msg_5_"
+ [[ $suffix = . ]] && suffix=''
+
+ local type="$vcs_info_msg_1_"
+ [[ $type = git ]] && type=''
+ local branch="$vcs_info_msg_2_"
+ local action="$vcs_info_msg_3_"
+ local changes="$vcs_info_msg_4_"
+ local vcsinfo="${type:+${type}:}%B${branch}%b${action:+|%B${action}%b}"
-#this enables vcs_info
-#precmd_functions+=vcs_info
+ _make_ps1 "$prefix|$vcsinfo|$suffix${changes:+|%S${changes}%s}"
+}
+precmd_functions+=__vcs_info_precmd
+++ /dev/null
-# zshrc/80_prompt
-#
-# Formats the shell prompt
-#
-# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
-# Released under the terms of the Artistic Licence 2.0
-#
-# Source repository: git://git.madduck.net/etc/zsh.git
-#
-
-if [ "${PS1:-}" = '%m%# ' ]; then
- local _MIDDLE="%1v%(2v.|%B%2v%b|.)%(3v.%3v.)"
- if is_root; then
- _MIDDLE="%25<..<%~%<<"
- local _PS1_HL=U
- fi
-
- local _MACHINE_NAME="${_PS1_HL:=B}%m%${(L)_PS1_HL}"
- _MACHINE_NAME="$_MACHINE_NAME${debian_chroot:+/%S$debian_chroot%s}"
-
- PS1="%(2L.+.)%${_MACHINE_NAME}:${_MIDDLE}%# "
-fi
-
-: ${RPS1:="#%(0?..%?,)%!"}
-
-# vim:ft=zsh