summaryrefslogtreecommitdiff
path: root/themes
diff options
context:
space:
mode:
authorMarc Cornellà <marc.cornella@live.com>2020-02-19 18:42:05 +0100
committerMarc Cornellà <marc.cornella@live.com>2020-02-19 19:34:16 +0100
commitb297bf92964e04e24f960f4e38acdb9b740d2d9f (patch)
tree15b194ca0924b09ba5056a5f600ecf157b95151d /themes
parent6adad5c300a6bfde33b593489cc1c3b645b721e8 (diff)
downloadzsh-b297bf92964e04e24f960f4e38acdb9b740d2d9f.tar.gz
zsh-b297bf92964e04e24f960f4e38acdb9b740d2d9f.tar.bz2
zsh-b297bf92964e04e24f960f4e38acdb9b740d2d9f.zip
Add themes in $ZSH_CUSTOM to the pool of candidates
Also add comments and unset leftover variables, and print only the name of the theme loaded. When looking for $ZSH_CUSTOM themes, the chosen algorithm is to add the theme names to the pool disregarding the path, and then source whatever theme is selected with the same logic as the init script, which is to source first custom themes even if there is another default theme of the same name. Co-authored-by: Mihai Serban <mihai.serban@gmail.com>
Diffstat (limited to 'themes')
-rw-r--r--themes/random.zsh-theme38
1 files changed, 31 insertions, 7 deletions
diff --git a/themes/random.zsh-theme b/themes/random.zsh-theme
index 739567662..92d2a6847 100644
--- a/themes/random.zsh-theme
+++ b/themes/random.zsh-theme
@@ -1,10 +1,34 @@
-if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then
- themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme)
+# Make themes a unique array
+typeset -Ua themes
+
+if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = array && ${#ZSH_THEME_RANDOM_CANDIDATES[@]} -gt 0 ]]; then
+ # Use ZSH_THEME_RANDOM_CANDIDATES if properly defined
+ themes=($ZSH_THEME_RANDOM_CANDIDATES)
else
- themes=($ZSH/themes/*zsh-theme)
+ # Look for themes in $ZSH_CUSTOM and $ZSH and add only the theme name (:t)
+ themes=(
+ "$ZSH_CUSTOM"/*.zsh-theme(N:t:r)
+ "$ZSH_CUSTOM"/themes/*.zsh-theme(N:t:r)
+ "$ZSH"/themes/*.zsh-theme(N:t:r)
+ )
fi
+
+# Choose a theme out of the pool of candidates
N=${#themes[@]}
-((N=(RANDOM%N)+1))
-RANDOM_THEME=${themes[$N]}
-source "$RANDOM_THEME"
-echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
+(( N = (RANDOM%N) + 1 ))
+RANDOM_THEME="${themes[$N]}"
+unset N themes
+
+# Source theme
+if [[ -f "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme" ]]; then
+ source "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme"
+elif [[ -f "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme" ]]; then
+ source "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme"
+elif [[ -f "$ZSH/themes/$RANDOM_THEME.zsh-theme" ]]; then
+ source "$ZSH/themes/$RANDOM_THEME.zsh-theme"
+else
+ echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' not found"
+ return 1
+fi
+
+echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' loaded"