# 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]"
# - $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-)
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"