1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-24 17:00:32 +02:00

Lionel Flandrin: 27307: enhanced Mecurial VCS_INFO support

This commit is contained in:
Peter Stephenson 2009-10-04 18:18:12 +00:00
parent 500431077b
commit 179cd828a5
2 changed files with 48 additions and 6 deletions

View file

@ -3,7 +3,21 @@
## Distributed under the same BSD-ish license as zsh itself.
setopt localoptions NO_shwordsplit
local file hgbranch hgbranch_name hgbase hghash hglrev r_branch r_info
local file hgbranch hgbranch_name hgbase hghash hglrev hgmisc r_branch r_info revformat
VCS_INFO_hg_get_mq_top_patch () {
local patchdir=$1
if [[ -e "${patchdir}/status" ]]; then
local -a patches
patches=(${(f)"$(< "${patchdir}/status")"})
printf "%s" "${patches[-1]/[^:]*:/}"
return 0
fi
return 1
}
hgbase=${vcs_comm[basedir]}
rrn=${hgbase:t}
@ -34,6 +48,8 @@ if zstyle -t ":vcs_info:${vcs}:${usercontext}:${rrn}" get-revision ; then
done
if [[ -n ${hglrev} ]] ; then
zstyle -s ":vcs_info:${vcs}:${usercontext}:${rrn}" hgrevformat revformat || revformat="%r:%h"
zformat -f hglrev "${revformat}" "r:${hglrev}" "h:${hghash}"
zstyle -s ":vcs_info:${vcs}:${usercontext}:${rrn}" branchformat hgbranch || hgbranch="%b:%r"
zformat -f hgbranch "${hgbranch}" "b:${hgbranch_name}" "r:${hglrev}"
fi
@ -41,5 +57,15 @@ else
hgbranch="${hgbranch_name}"
fi
VCS_INFO_formats '' "${hgbranch}" "${hgbase}" '' '' "${hglrev}" "${hghash}"
local patchdir=${hgbase}/.hg/patches/
if [[ -d $patchdir ]] ; then
hgmisc=$(VCS_INFO_hg_get_mq_top_patch "${patchdir}")
hgmisc=${hgmisc:-"no patch applied"}
else
hgmisc=''
fi
VCS_INFO_formats '' "${hgbranch}" "${hgbase}" '' '' "${hglrev}" "${hgmisc}"
return 0