+++ /dev/null
-# Add to HOOK the given FUNCTION.
-# HOOK is one of chpwd, precmd, preexec, periodic, zshaddhistory,
-# zshexit (the _functions subscript is not required).
-#
-# With -d, remove the function from the hook instead; delete the hook
-# variable if it is empty.
-#
-# -D behaves like -d, but pattern characters are active in the
-# function name, so any matching function will be deleted from the hook.
-#
-# Without -d, the FUNCTION is marked for autoload; -U is passed down to
-# autoload if that is given, as are -z and -k. (This is harmless if the
-# function is actually defined inline.)
-
-emulate -L zsh
-
-local -a hooktypes
-hooktypes=(chpwd precmd preexec periodic zshaddhistory zshexit)
-
-local opt
-local -a autoopts
-integer del
-
-while getopts "dDUzk" opt; do
- case $opt in
- (d)
- del=1
- ;;
-
- (D)
- del=2
- ;;
-
- ([Uzk])
- autoopts+=(-$opt)
- ;;
-
- (*)
- return 1
- ;;
- esac
-done
-shift $(( OPTIND - 1 ))
-
-if (( $# != 2 || ${hooktypes[(I)$1]} == 0 )); then
- print "Usage: $0 hook function\nValid hooks are:\n $hooktypes"
- return 1
-fi
-
-local hook="${1}_functions"
-local fn="$2"
-
-if (( del )); then
- # delete, if hook is set
- if (( ${(P)+hook} )); then
- if (( del == 2 )); then
- set -A $hook ${(P)hook:#${~fn}}
- else
- set -A $hook ${(P)hook:#$fn}
- fi
- # unset if no remaining entries --- this can give better
- # performance in some cases
- if (( ! ${(P)#hook} )); then
- unset $hook
- fi
- fi
-else
- if (( ${(P)+hook} )); then
- if (( ${${(P)hook}[(I)$fn]} == 0 )); then
- set -A $hook ${(P)hook} $fn
- fi
- else
- set -A $hook $fn
- fi
- autoload $autoopts -- $fn
-fi
# Simulate hooks using _functions arrays for Zsh versions older than 4.3.4. At
# the moment only precmd(), preexec() and chpwd() are simulated.
-#
-# At least 4.3.4 (not sure about later versions) has an error in add-zsh-hook
-# so the compatibility version is used there too.
-if [[ $ZSH_VERSION != (4.3.<5->*|4.<4->*|<5->*) ]]; then
- # Provide add-zsh-hook which was added in 4.3.4.
- fpath=(~/.zsh/functions/compatibility $fpath)
-
+if [[ $ZSH_VERSION != (4.3.<4->*|4.<4->*|<5->*) ]]; then
# Run all functions defined in the ${precmd,preexec,chpwd}_functions
# arrays.
function precmd() {
}
fi
-# Autoload add-zsh-hook to add/remove zsh hook functions easily.
-autoload -Uz add-zsh-hook
-
# Load zmv (zsh move) which is a powerful file renamer.
autoload -Uz zmv
prompt_chpwd() {
FORCE_RUN_VCS_INFO=1
}
- add-zsh-hook chpwd prompt_chpwd
+ chpwd_functions+=(prompt_chpwd)
# Used by prompt code below to determine if vcs_info should be run.
RUN_VCS_INFO=1
$green%B%n%b$default@$green%B%m%b$default %(1j.$yellow%j$default.)%# \
%(?..($red%B%?%b$default%) )"
}
-add-zsh-hook precmd prompt_precmd
+precmd_functions+=(prompt_precmd)
# When screen, tmux, xterm or rxvt is used set the name of the window to the
fi
# Add the preexec() and precmd() hooks.
- add-zsh-hook preexec window_preexec
- add-zsh-hook precmd window_precmd
+ preexec_functions+=(window_preexec)
+ precmd_functions+=(window_precmd)
else
# Fallback if another TERM is used, necessary to run screen (see below in
# "RUN COMMANDS").