# zshrc/75_vcsinfo # # Set up vcs_info subsystem # # Copyright © 1994–2008 martin f. krafft # Released under the terms of the Artistic Licence 2.0 # # Source repository: git://git.madduck.net/etc/zsh.git # # see zsh-betacontrib(1) autoload -Uz vcs_info # %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}" _make_ps1 "$prefix|$vcsinfo|$suffix${changes:+|%S${changes}%s}" } precmd_functions+=__vcs_info_precmd