]> arthur.barton.de Git - ax-zsh.git/blobdiff - ax.zsh
Cache: Read "zprofile" in the correct context in "zshrc" stage
[ax-zsh.git] / ax.zsh
diff --git a/ax.zsh b/ax.zsh
index 555644dae2f9f69ad9bb52280070c907ff0282ed..a841af58ccd0d10eb5aea4ccb8580e4ca141a128 100644 (file)
--- a/ax.zsh
+++ b/ax.zsh
@@ -1,5 +1,5 @@
 # AX-ZSH: Alex' Modular ZSH Configuration
-# Copyright (c) 2015-2016 Alexander Barton <alex@barton.de>
+# Copyright (c) 2015-2017 Alexander Barton <alex@barton.de>
 
 script_name="${${(%):-%N}:t}"
 script_type="$script_name[2,-1]"
@@ -9,11 +9,11 @@ script_type="$script_name[2,-1]"
 # - $2: plugin type (optional; defaults to "zshrc")
 # - $3: cache file (optional)
 function axzsh_load_plugin {
-       dname="$1:A"
-       plugin="$dname:t"
-       [[ -z "$2" ]] && type="zshrc" || type="$2"
-       fname="$dname/$plugin.$type"
-       cache_file="$3"
+       local dname="$1:A"
+       local plugin="$dname:t"
+       [[ -z "$2" ]] && local type="zshrc" || local type="$2"
+       local fname="$dname/$plugin.$type"
+       local cache_file="$3"
 
        # Strip repository prefix (like "alexbarton#test-plugin"):
        [[ "$plugin" =~ "#" ]] && plugin=$(echo $plugin | cut -d'#' -f2-)
@@ -116,6 +116,13 @@ cat_cmd=${commands[cat]:-cat}
 
 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"