# AX-ZSH: Alex' Modular ZSH Configuration
-# Copyright (c) 2015-2020 Alexander Barton <alex@barton.de>
+# Copyright (c) 2015-2024 Alexander Barton <alex@barton.de>
script_name="${${(%):-%N}:t}"
script_type="$script_name[2,-1]"
# Look for some 3rd-party integrations ...
# --- Powerlevel10k ---
- # Read in Powerlevel10k configuration file, if not already read:
- [[ -z "$POWERLEVEL9K_CONFIG_FILE" && -r ~/.p10k.zsh ]] && source ~/.p10k.zsh
# Enable instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts,
# [y/n] confirmations, etc.) must be executed before this, so all ax-zsh
- # plugings should do output in their "ax-io" stage only!
- if [[ "$type" == "zprofile" ]]; then
+ # plugins should do output in their "ax-io" stage only!
+ # Read the initialization script in the "zprofile" stage for login
+ # shells, and in the "zshrc" stage for non-login sub-shells (which have
+ # the profile already read in and therefore will skip the "ax-io" and
+ # "zprofile" stages and not catch up).
+ if [[ \
+ ( "$type" == "zprofile" ) || \
+ ( ! -o login && "$type" == "zshrc" && -n "$AXZSH_ZPROFILE_READ" ) \
+ ]]; then
p10k_instant_prompt="${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
- [[ -r "$p10k_instant_prompt" ]] && source "$p10k_instant_prompt"
+ if [[ -r "$p10k_instant_prompt" ]]; then
+ [[ -n "$AXZSH_DEBUG" ]] && echo " Reading \"$p10k_instant_prompt\" ..."
+ source "$p10k_instant_prompt"
+ fi
+ unset p10k_instant_prompt
fi
+ # Read in Powerlevel10k configuration file, if not already read:
+ [[ -z "$POWERLEVEL9K_CONFIG_FILE" && -r ~/.p10k.zsh ]] && source ~/.p10k.zsh
# Initialize cache
[[ -d "$AXZSH/cache" ]] || mkdir -p "$AXZSH/cache"
[[ -n "$AXZSH_DEBUG" ]] \
&& echo " - Reading cache file \"$cache_file\" ..."
source "$cache_file"
- unfunction axzsh_plugin_init
+ (( $+functions[axzsh_plugin_init] )) && unfunction axzsh_plugin_init
else
# No cache file available.
local new_cache_file="$cache_file.NEW"
[[ -n "$SHELL" ]] || export SHELL=$(command -v zsh)
# Make sure that "AXZSH" variable is set and exported
-[[ -n "$AXZSH" ]] || export AXZSH="$HOME/.axzsh"
+[[ -n "$AXZSH" ]] || export AXZSH="${ZDOTDIR:-$HOME}/.axzsh"
# Check for "debug mode" ...
if [[ -f "$AXZSH/debug" || -f "$HOME/.axzsh.debug" ]]; then