### 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