random.zsh-theme
1575 bytes
1# Deprecate ZSH_THEME_RANDOM_BLACKLIST
2if [[ -n "$ZSH_THEME_RANDOM_BLACKLIST" ]]; then
3 echo '[oh-my-zsh] ZSH_THEME_RANDOM_BLACKLIST is deprecated. Use `ZSH_THEME_RANDOM_IGNORED` instead.'
4 ZSH_THEME_RANDOM_IGNORED=($ZSH_THEME_RANDOM_BLACKLIST)
5 unset ZSH_THEME_RANDOM_BLACKLIST
6fi
7
8# Make themes a unique array
9typeset -Ua themes
10
11if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = array && ${#ZSH_THEME_RANDOM_CANDIDATES[@]} -gt 0 ]]; then
12 # Use ZSH_THEME_RANDOM_CANDIDATES if properly defined
13 themes=(${(@)ZSH_THEME_RANDOM_CANDIDATES:#random})
14else
15 # Look for themes in $ZSH_CUSTOM and $ZSH and add only the theme name
16 themes=(
17 "$ZSH_CUSTOM"/*.zsh-theme(N:t:r)
18 "$ZSH_CUSTOM"/themes/*.zsh-theme(N:t:r)
19 "$ZSH"/themes/*.zsh-theme(N:t:r)
20 )
21 # Remove ignored themes from the list
22 for theme in random ${ZSH_THEME_RANDOM_IGNORED[@]}; do
23 themes=("${(@)themes:#$theme}")
24 done
25fi
26
27# Choose a theme out of the pool of candidates
28N=${#themes[@]}
29(( N = (RANDOM%N) + 1 ))
30RANDOM_THEME="${themes[$N]}"
31unset N themes theme
32
33# Source theme
34if [[ -f "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme" ]]; then
35 source "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme"
36elif [[ -f "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme" ]]; then
37 source "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme"
38elif [[ -f "$ZSH/themes/$RANDOM_THEME.zsh-theme" ]]; then
39 source "$ZSH/themes/$RANDOM_THEME.zsh-theme"
40else
41 echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' not found"
42 return 1
43fi
44
45if [[ "$ZSH_THEME_RANDOM_QUIET" != true ]]; then
46 echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' loaded"
47fi