From 4523ff9383b93360f8031050061fe9e7fabde34a Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 16 Feb 2010 10:47:06 +0000 Subject: Frank Terbeck, Seth House: 27712, 22713, 27714: VCS Info hooks and Mercurial improvements --- Functions/VCS_Info/VCS_INFO_hook | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Functions/VCS_Info/VCS_INFO_hook (limited to 'Functions/VCS_Info/VCS_INFO_hook') diff --git a/Functions/VCS_Info/VCS_INFO_hook b/Functions/VCS_Info/VCS_INFO_hook new file mode 100644 index 000000000..71845d808 --- /dev/null +++ b/Functions/VCS_Info/VCS_INFO_hook @@ -0,0 +1,42 @@ +### vim:ft=zsh:foldmethod=marker +## Written by Frank Terbeck +## Distributed under the same BSD-ish license as zsh itself. + +local hook func +local -x context hook_name +local -xi ret +local -a hooks +local -i debug + +ret=0 +hook_name="$1" +shift +context=":vcs_info:${vcs}+${hook_name}:${usercontext}:${rrn}" + +zstyle -t "${context}" debug && debug=1 || debug=0 +if (( debug )); then + printf 'VCS_INFO_hook: running hook: "%s"\n' "${hook_name}" + printf 'VCS_INFO_hook: current context: "%s"\n' "${context}" +fi + +zstyle -a "${context}" hooks hooks || return 0 +# protect some internal variables in hooks +typeset -r vcs rrn usercontext maxexports msgs vcs_comm +for hook in ${hooks} ; do + func="+vi-${hook}" + if (( ${+functions[$func]} == 0 )); then + (( debug )) && printf ' + Unknown function: "%s"\n' "${func}" + continue + fi + (( debug )) && printf ' + Running function: "%s"\n' "${func}" + ${func} "$@" + case $? in + (0) + ;; + (*) + break + ;; + esac +done +typeset +r vcs rrn usercontext maxexports msgs vcs_comm +return $ret -- cgit 1.4.1