A maneira mais fácil é forçar o carregamento da função original, renomeá-la e redefini-la no seu .zshrc
, em vez de ter uma função com o mesmo nome no seu fpath. Note que em zsh, você não precisa de truques complexos envolvendo which
, eval
e querendo saber como citar para renomear uma função: simplesmente use o functions
array associativo .
autoload -Uz +X quux
functions[overridden_quux]=$functions[quux]
quux () {
… overridden_quux $@[@] …
}
Se você quiser que a função seja carregada automaticamente a partir de um arquivo no fpath, ela fica complicada porque você precisa carregar o original sem acessar a mesma entrada de fpath recursivamente. Eu não tenho uma solução melhor para propor do que localmente redefinindo fpath
.
#autoload quux
functions[overridden_quux]=$(
fpath=("${(@)fpath:#$HOME/*}")
autoload -Uz +x quux
print -r -- $functions[quux]
)
quux () {
… overridden_quux $@[@] …
}