Coisas que podem ajudar você:
A função preexec
hook é chamada antes de cada linha de comando ser executada (não antes de cada comando).
preexec() echo will execute: $1
precmd
antes de cada solicitação.
precmd() echo executed: $history[$[HISTCMD-1]]
Você pode estender uma função assim:
functions[git]='
(){ '$functions[git]'; } "$@"; local myret=$?
do-extra-stuff
return $myret'
Ou:
functions[git-old]=$functions[git]
git() {
git-old "$@"
local myret=$?
do-extra-stuff || return $myret
}
O DEBUG
trap é executado após cada comando:
trap 'echo $ZSH_DEBUG_CMD returned with $?' DEBUG
Você pode redefinir o widget accept-line
(mapeado para Enter ) para fazer coisas lá:
accept-line() {
zle -R "going to run: $BUFFER"
sleep 1
zle .$WIDGET
}
zle -N accept-line