mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-19 23:41:31 +01:00
0501efc54a
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.
135 lines
3.2 KiB
Bash
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 "$@"
|