1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-19 23:41:31 +01:00
zsh/Functions/VCS_Info/vcs_info
Frank Terbeck 0501efc54a Seth House, Simon Ruderich and myself: 27948: various vcs_info changes
Here's a diff-stat:

 Doc/Zsh/contrib.yo                                |  506 ++++++++++++++-------
 Functions/VCS_Info/.distfiles                     |    1 +
 Functions/VCS_Info/Backends/VCS_INFO_detect_hg    |   14 +-
 Functions/VCS_Info/Backends/VCS_INFO_get_data_git |   35 +-
 Functions/VCS_Info/Backends/VCS_INFO_get_data_hg  |  295 +++++++++----
 Functions/VCS_Info/VCS_INFO_formats               |   26 +-
 Functions/VCS_Info/VCS_INFO_hook                  |   10 +-
 Functions/VCS_Info/VCS_INFO_quilt                 |  190 ++++++++
 Functions/VCS_Info/vcs_info                       |   30 +-
 Misc/.distfiles                                   |    1 +
 Misc/vcs_info-examples                            |  496 ++++++++++++++++++++
 11 files changed, 1303 insertions(+), 301 deletions(-)

The major changes are vast improvements for the mercurial (hg) backend
(which was done almost entirely by Seth); improved documentation (mostly
done by Simon and again Seth); quilt support (as an addon and stand
alone, see the manual for details); a number of new hooks and a fair
share of bugfixes.
2010-05-10 10:46:48 +00:00

135 lines
3.2 KiB
Bash

## vim:ft=zsh:foldmethod=marker
##
## vcs_info - provide version control information
##
## Written by Frank Terbeck <ft@bewatermyfriend.org>
##
## This file and all corresponding files in Functions/VCS_Info/ are
## distributed under the same BSD-ish license as zsh itself.
##
setopt localoptions noksharrays extendedglob NO_shwordsplit
local file func sys
local -a static_functions
static_functions=(
VCS_INFO_adjust
VCS_INFO_bydir_detect
VCS_INFO_check_com
VCS_INFO_formats
VCS_INFO_get_cmd
VCS_INFO_hook
VCS_INFO_maxexports
VCS_INFO_nvcsformats
VCS_INFO_quilt
VCS_INFO_realpath
VCS_INFO_reposub
VCS_INFO_set
vcs_info_lastmsg
vcs_info_printsys
vcs_info_setsys
)
for func in ${static_functions} ; do
autoload -Uz ${func}
done
VCS_INFO_set --nvcs '-preinit-'
vcs_info_setsys
# and now, finally create the real vcs_info function
vcs_info () {
emulate -L zsh
setopt extendedglob NO_warn_create_global
[[ -r . ]] || return 0
local pat
local -i found retval
local -a enabled disabled dps
local -x usercontext vcs rrn quiltmode LC_MESSAGES
local -ix maxexports
local -ax msgs
local -Ax vcs_comm hook_com backend_misc user_data
LC_MESSAGES=C
if [[ -n ${LC_ALL} ]]; then
local -x LANG
LANG=${LC_ALL}
local -x LC_ALL
fi
vcs='-init-'; rrn='-all-'; quiltmode='addon'
usercontext=${1:-default}
VCS_INFO_hook "start-up"
retval=$?
if (( retval == 1 )); then
return 0
elif (( retval == 2 )); then
VCS_INFO_set --nvcs
return 0
fi
zstyle -a ":vcs_info:${vcs}:${usercontext}:${rrn}" "enable" enabled
(( ${#enabled} == 0 )) && enabled=( all )
if [[ -n ${(M)enabled:#(#i)none} ]] ; then
[[ -n ${vcs_info_msg_0_} ]] && VCS_INFO_set --clear
return 0
fi
if [[ -n ${(M)enabled:#(#i)all} ]] ; then
enabled=( ${VCS_INFO_backends} )
zstyle -a ":vcs_info:${vcs}:${usercontext}:${rrn}" "disable" disabled
fi
zstyle -a ":vcs_info:${vcs}:${usercontext}:${rrn}" "disable-patterns" dps
for pat in ${dps} ; do
if [[ ${PWD} == ${~pat} ]] ; then
[[ -n ${vcs_info_msg_0_} ]] && VCS_INFO_set --clear
return 0
fi
done
VCS_INFO_maxexports
(( found = 0 ))
for vcs in ${enabled} ; do
[[ -n ${(M)disabled:#${vcs}} ]] && continue
if (( ${+functions[VCS_INFO_detect_${vcs}]} == 0 )) ; then
printf 'vcs_info: configured unknown backend: '\''%s'\''\n' ${vcs}
printf 'vcs_info: use '\''vcs_info_printsys'\'' to find supported systems.\n'
continue
fi
vcs_comm=()
VCS_INFO_get_cmd
VCS_INFO_detect_${vcs} && (( found = 1 )) && break
done
(( found == 0 )) && {
vcs='-quilt-'; quiltmode='standalone'
VCS_INFO_quilt standalone || VCS_INFO_set --nvcs
return 0
}
VCS_INFO_hook "pre-get-data"
retval=$?
if (( retval == 1 )); then
return 0
elif (( retval == 2 )); then
VCS_INFO_set --nvcs
return 0
fi
VCS_INFO_get_data_${vcs} || {
VCS_INFO_set --nvcs
return 1
}
VCS_INFO_set
return 0
}
vcs_info "$@"