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:
Tom Scogland
2021-10-28 11:32:59 -07:00
committed by GitHub
parent 5faa457a35
commit 87e456d59c
4 changed files with 26 additions and 10 deletions

3
.gitignore vendored
View File

@@ -210,6 +210,9 @@ tramp
/eshell/history
/eshell/lastdir
# zsh byte-compiled files
*.zwc
# elpa packages
/elpa/