if [[ -r "$cache_file" ]]; then
# Cache file exists, use it!
+ # But when in the "zshrc" stage, make sure that the "zprofile" stage
+ # has already been handled (this uses the "01_zprofile" plugin which
+ # is used in the "zshrc.cache" as well, but can't be used successfully
+ # there because it becomes sourced inside of a ZSH function; so we have
+ # to source it here in the global context manually ...):
+ [[ -z "$AXZSH_ZPROFILE_READ" && "$script_type" = "zshrc" ]] \
+ && source "$AXZSH/core/01_zprofile/01_zprofile.zshrc"
[[ -n "$AXZSH_DEBUG" ]] \
&& echo " - Reading cache file \"$cache_file\" ..."
source "$cache_file"
unset PS1
[[ -n "$AXZSH_DEBUG" ]] && echo "» 01_zprofile.zsh:"
-for plugin ($plugin_list); do
- axzsh_load_plugin "$plugin" "zprofile"
-done
+
+if [[ -r "$AXZSH/cache/zprofile.cache" ]]; then
+ # Cache file exists, use it!
+ [[ -n "$AXZSH_DEBUG" ]] \
+ && echo " - Reading cache file \"$AXZSH/cache/zprofile.cache\" ..."
+ source "$AXZSH/cache/zprofile.cache"
+else
+ # No cache file, so read plugins manually. The "plugin_list" can be
+ # empty, when the "zshrc" stage has been read in using the cache file,
+ # but there is no cache file for the "zprofile" stage. In that case
+ # the "plugin_list" must be assembled right now (see "ax.zsh" file!):
+ if [[ -z "$plugin_list" ]]; then
+ typeset -U plugin_list
+ plugin_list=(
+ "$AXZSH/core/"[0-5]*
+ "$AXZSH/active_plugins/"*(N)
+ "$AXZSH/core/"[6-9]*
+ )
+ fi
+ for plugin ($plugin_list); do
+ axzsh_load_plugin "$plugin" "zprofile"
+ done
+fi
AXZSH_ZPROFILE_READ=2
+
[[ -n "$AXZSH_DEBUG" ]] && echo "» 01_zprofile.zsh (end)"