about summary refs log tree commit diff
path: root/Functions/Misc/add-zsh-hook
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Misc/add-zsh-hook')
-rw-r--r--Functions/Misc/add-zsh-hook22
1 files changed, 17 insertions, 5 deletions
diff --git a/Functions/Misc/add-zsh-hook b/Functions/Misc/add-zsh-hook
index c49688643..ee37d674d 100644
--- a/Functions/Misc/add-zsh-hook
+++ b/Functions/Misc/add-zsh-hook
@@ -19,12 +19,13 @@ hooktypes=(
   chpwd precmd preexec periodic zshaddhistory zshexit
   zsh_directory_name
 )
+local usage="Usage: $0 hook function\nValid hooks are:\n  $hooktypes"
 
 local opt
 local -a autoopts
-integer del
+integer del list help
 
-while getopts "dDUzk" opt; do
+while getopts "dDhLUzk" opt; do
   case $opt in
     (d)
     del=1
@@ -34,6 +35,14 @@ while getopts "dDUzk" opt; do
     del=2
     ;;
 
+    (h)
+    help=1
+    ;;
+
+    (L)
+    list=1
+    ;;
+
     ([Uzk])
     autoopts+=(-$opt)
     ;;
@@ -45,9 +54,12 @@ while getopts "dDUzk" opt; do
 done
 shift $(( OPTIND - 1 ))
 
-if (( $# != 2 || ${hooktypes[(I)$1]} == 0 )); then
-  print "Usage: $0 hook function\nValid hooks are:\n  $hooktypes"
-  return 1
+if (( list )); then
+  typeset -mp "(${1:-${(@j:|:)hooktypes}})_functions"
+  return $?
+elif (( help || $# != 2 || ${hooktypes[(I)$1]} == 0 )); then
+  print -u$(( 2 - help )) $usage
+  return $(( 1 - help ))
 fi
 
 local hook="${1}_functions"