On Wed, Dec 30, 2020 at 06:17:52PM +0100, René Scharfe wrote: > > +__git_have_func () { > > + declare -f $1 >/dev/null 2>/dev/null > And then I wondered why use declare -f, which prints the function's > body, when there is -F, which just prints the function's name. And why > repeat /dev/null when redirecting stderr when the more shorter 2>&1 > would do the same? None of hat was introduced by you patch, of course. > Anyway, this seems to work for me: > > __git_have_func () { > case "$1" in > -*) return 1 ;; > esac > declare -F "$1" >/dev/null 2>&1 > } The Bash completion script should be usable from Zsh as well, and Zsh only supports 'declare -f' but not '-F', see 06f44c3cc5 (completion: make compatible with zsh, 2010-09-06). The Zsh version included in the 16.04 based LTS setup that I have at hand doesn't yet seem to have a (for us) usable 'declare -F' yet.