-# vcs_info() documentation: {{{
-#
-# This functionality requires zsh version >= 4.1.*.
-# To load vcs_info(), copy this file to your $fpath[] and do:
-# % autoload -Uz vcs_info && vcs_info
-#
-# The vcs_info() feature can be configured via zstyle:
-# First, the context in which we are working:
-# :vcs_info:<user-context>:<vcs-string>
-# ...where <vcs-string> is one of:
-# - git, git-svn, hg, darcs, bzr, mtn, svn, cvs or svk
-# ...and <user-context> is a freely configurable string, assignable
-# by the user as the first argument to vcs_info().
-#
-# There is one special value for <vcs-string> named 'init', that
-# is in effect as long as there was no decision what vcs backend to use.
-#
-# There are two pre-defined values for <user-context>:
-# default - the one used if none is specified
-# command - used by vcs_info_lastmsg to lookup its styles.
-# You may *not* use 'print_systems_' as a user-context string,
-# because it is used internally.
-#
-# You can of course use ':vcs_info:*' to match all VCSs in all
-# user-contexts at once.
-#
-# Another special context is 'formats', it is used by the
-# vcs_info_lastmsg() utility function (see below).
-#
-#
-# This is a description of all styles, that are looked up:
-# format - Used in most circumstances.
-# actionformat - Used if a there is a special action going on;
-# (like an interactive rebase or a merge conflict)
-# branchformat - Some backends replace %b in the format and
-# actionformat styles above, not only by a branch
-# name but also by a revision number. This style
-# let's you modify how that string should look like.
-# enable - Check in the 'init' context. If set to false,
-# vcs_info() will do nothing.
-# disable - Provide a list of systems, you don't want
-# the vcs_info() to check for repositories
-# (checked in the 'init' context, too).
-# use-simple - If there are two different ways of gathering
-# information, you can select the simpler one
-# by setting this style to true; the default
-# is to use the not-that-simple code, which is
-# potentially a lot slower but might be more
-# accurate in all possible cases.
-# use-prompt-escapes - determines if we assume that the assembled
-# string from vcs_info() includes prompt escapes.
-# (Used by vcs_info_lastmsg().
-#
-# The use-simple style is currently only available for the bzr backend.
-#
-# The default values for these in all contexts are:
-# format " (%s)-[%b|%a]-"
-# actionformat " (%s)-[%b]-"
-# branchformat "%b:%r" (for bzr, svn and svk)
-# enable true
-# disable (empty list)
-# use-simple false
-# use-prompt-escapes true
-#
-#
-# In format and actionformat, the following replacements are done:
-# %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 actionformat.
-# %R - base directory of the repository.
-# %r - repository name
-# If %R is '/foo/bar/repoXY', %r is 'repoXY'.
-#
-#
-# In branchformat these replacements are done:
-# %b - the branch name
-# %r - the current revision number
-#
-# Not all vcs backends have to support all replacements.
-#
-#
-# Function descriptions:
-# vcs_info()
-# The main function, that runs all backends and assembles
-# all data into ${VCS_INFO_message_}. This is the function
-# you want to call from precmd() if you want to include
-# up-to-date information in your prompt (see Variable
-# description, too if you are interested in this).
-#
-# vcs_info_printsys()
-# Prints a list of all supported version control systems.
-# Useful to find out possible contexts or values for the
-# 'disable' style.
-#
-# vcs_info_lastmsg()
-# Outputs the last ${VCS_INFO_message_} value. Takes into account
-# the value of the use-prompt-escapes style in ':vcs_info:formats'.
-#
-#
-# Variable description:
-# ${VCS_INFO_message_} (Note the trailing underscore)
-# This is the storage for the message the last vcs_info()
-# call has assembled.
-#
-#
-# Examples:
-# Don't use vcs_info at all (even though it's in your prompt):
-# % zstyle ':vcs_info:*' enable false
-#
-# Disable the backends for bzr and svk:
-# % zstyle ':vcs_info:*' disable bzr svk
-#
-# Provide a special format for git:
-# % zstyle ':vcs_info:*:git' format ' GIT, BABY! [%b]'
-# % zstyle ':vcs_info:*:git' actionformat ' GIT ACTION! [%b|%a]'
-#
-# Use the quicker bzr backend (if you do, please report if it does
-# the-right-thing[tm] - thanks):
-# % zstyle ':vcs_info:*:bzr' use-simple true
-#
-# Display the revision number in yellow for bzr and svn:
-# % zstyle ':vcs_info:*:(svn|bzr)' branchformat '%b%{'${fg[yellow]}'%}:%r'
-#
-# If you want colors, make sure you enclose the color codes in %{...%},
-# if you want to use the string provided by vcs_info() in prompts.
-#
-# Here is an example of how to include vcs_info in PS1 (*requires*
-# 'setopt prompt_subst'):
-#
-# PS1='%(?..[%?]-)%3~%${VCS_INFO_message_}#'
-# precmd () { vcs_info; }
-#
-# Here is how to print the vcs infomation as a command:
-# alias vcsi='vcs_info command; vcs_info_lastmsg'
-#
-# This way, you can even define different formats for output via
-# vcs_info_lastmsg() in the ':vcs_info:command:*' namespace.
-#
-# }}}
-VCS_INFO_adjust () { #{{{
- [[ -n ${vcs_comm[overwrite_name]} ]] && vcs=${vcs_comm[overwrite_name]}
- return 0
-}
-# }}}
-VCS_INFO_check_com () { #{{{
- (( ${+commands[$1]} )) && [[ -x ${commands[$1]} ]] && return 0
- return 1
-}
-# }}}
-VCS_INFO_format () { # {{{
- local msg