spack setup-env.sh: make zsh loading async compatible, and ~10x faster (in some cases) (#26120)
Currently spack is a bit of a bad actor as a zsh plugin, and it was my fault. The autoload and compinit should really be handled by the user, as was made abundantly clear when I found spack was doing completion initialization for *all* of my plugins due to a deferred setup that was getting messed up by it. Making this conditional took spack load time from 1.5 seconds (with module loading disabled) to 0.029 seconds. I can actually afford to load spack by default with this change in. Hopefully someday we'll do proper zsh completion support, but for now this helps a lot. * use zsh hist expansion in place of dirname * only run (bash)compinit if compdef/complete missing * add zsh compiled files to .gitignore * move changes to .in file, because spack
This commit is contained in:
@@ -39,10 +39,14 @@
|
||||
|
||||
if test -n "${ZSH_VERSION:-}" ; then
|
||||
if [[ "$(emulate)" = zsh ]] ; then
|
||||
# ensure base completion support is enabled, ignore insecure directories
|
||||
autoload -U +X compinit && compinit -i
|
||||
# ensure bash compatible completion support is enabled
|
||||
autoload -U +X bashcompinit && bashcompinit
|
||||
if ! typeset -f compdef >& /dev/null ; then
|
||||
# ensure base completion support is enabled, ignore insecure directories
|
||||
autoload -U +X compinit && compinit -i
|
||||
fi
|
||||
if ! typeset -f complete >& /dev/null ; then
|
||||
# ensure bash compatible completion support is enabled
|
||||
autoload -U +X bashcompinit && bashcompinit
|
||||
fi
|
||||
emulate sh -c "source '$0:A'"
|
||||
return # stop interpreting file
|
||||
fi
|
||||
|
Reference in New Issue
Block a user