summaryrefslogtreecommitdiff
path: root/Functions/VCS_Info/vcs_info_hookdel
diff options
context:
space:
mode:
authorFrank Terbeck <ft@bewatermyfriend.org>2011-06-02 10:50:35 +0200
committerFrank Terbeck <ft@bewatermyfriend.org>2011-06-02 10:50:35 +0200
commit2438a0e95aa448f0aeda468752444306b44fe7d0 (patch)
tree8477e9c6af360f6a89af13e8cb5f2a4f9c1cff2c /Functions/VCS_Info/vcs_info_hookdel
parentb495ba1e5a3ab1396844490ad8cad17dec23d6c1 (diff)
parent21266db1d9ae433bf1dcb196a4e258c00541b599 (diff)
downloadzsh-2438a0e95aa448f0aeda468752444306b44fe7d0.tar.gz
zsh-2438a0e95aa448f0aeda468752444306b44fe7d0.zip
Merge commit 'zsh-4.3.12' into debian
Diffstat (limited to 'Functions/VCS_Info/vcs_info_hookdel')
-rw-r--r--Functions/VCS_Info/vcs_info_hookdel45
1 files changed, 45 insertions, 0 deletions
diff --git a/Functions/VCS_Info/vcs_info_hookdel b/Functions/VCS_Info/vcs_info_hookdel
new file mode 100644
index 000000000..e09a0575e
--- /dev/null
+++ b/Functions/VCS_Info/vcs_info_hookdel
@@ -0,0 +1,45 @@
+## vim:ft=zsh
+## Written by Frank Terbeck <ft@bewatermyfriend.org>
+## Distributed under the same BSD-ish license as zsh itself.
+
+emulate -L zsh
+setopt extendedglob
+
+local -i all
+
+if [[ "x$1" == 'x-a' ]]; then
+ all=1
+ shift
+else
+ all=0
+fi
+
+if (( ${#argv} < 2 )); then
+ print 'usage: vcs_info_hookdel [-a] <HOOK> <FUNCTION(s)...>'
+ return 1
+fi
+
+local hook func context
+local -a old
+
+hook=$1
+shift
+context=":vcs_info-static_hooks:${hook}"
+
+zstyle -a "${context}" hooks old || return 0
+for func in "$@"; do
+ if [[ -n ${(M)old:#$func} ]]; then
+ old[(Re)$func]=()
+ else
+ printf 'Not statically registered to `%s'\'': "%s"\n' \
+ "${hook}" "${func}"
+ continue
+ fi
+ if (( all )); then
+ while [[ -n ${(M)old:#$func} ]]; do
+ old[(Re)$func]=()
+ done
+ fi
+done
+zstyle "${context}" hooks "${old[@]}"
+return $?