Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: minor variable allocation change in add-zsh-hook



The 'local usage' variable is allocated in main, outside of the if loop
that determines if it is going to print the usage information. This
means time is spent allocating that variable, when in most cases, it
will never be printed. It would be better to set it within the if loop,
or alternatively, not using a variable and simply output the usage text
as as literal string (as many other functions do).

A trace of the time being needlessly being spent allocating the variable
can be seen here: https://gist.github.com/Eriner/3192c9eb98fabdd70607

It's not that much time, but it adds up and is inefficient/unnecessary.

diff --git a/Functions/Misc/add-zsh-hook b/Functions/Misc/add-zsh-hook
index ee37d67..bccd115 100644
--- a/Functions/Misc/add-zsh-hook
+++ b/Functions/Misc/add-zsh-hook
@@ -19,7 +19,6 @@ 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
@@ -58,6 +57,7 @@ if (( list )); then
   typeset -mp "(${1:-${(@j:|:)hooktypes}})_functions"
   return $?
 elif (( help || $# != 2 || ${hooktypes[(I)$1]} == 0 )); then
+  local usage="Usage: $0 hook function\nValid hooks are:\n  $hooktypes"
   print -u$(( 2 - help )) $usage
   return $(( 1 - help ))
 fi



Messages sorted by: Reverse Date, Date, Thread, Author