Move random theme functionality into "random" theme
The statements for selecting a random theme in oh-my-zsh.sh and the themes
plugin are duplicate. Most people eventually settle on a theme, making those
lines in oh-my-zsh.sh superfluous. To address those, it may makes sense to put
the random theme functionality into a theme of its own (since themes are just
zsh scripts.
Diff
1diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
2index c3fae6efb7f727adce57e42ca140961b76c9950d..30259372cd9f828a9308f3bd4a013afa85c95574 100644
3--- a/oh-my-zsh.sh
4+++ b/oh-my-zsh.sh
5@@ -97,25 +97,12 @@ done
6 unset config_file
7 8 # Load the theme
9-if [[ "$ZSH_THEME" == "random" ]]; then
10- if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then
11- themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme)
12+if [ ! "$ZSH_THEME" = "" ]; then
13+ if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then
14+ source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
15+ elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then
16+ source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
17 else
18- themes=($ZSH/themes/*zsh-theme)
19- fi
20- N=${#themes[@]}
21- ((N=(RANDOM%N)+1))
22- RANDOM_THEME=${themes[$N]}
23- source "$RANDOM_THEME"
24- echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
25-else
26- if [ ! "$ZSH_THEME" = "" ]; then
27- if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then
28- source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
29- elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then
30- source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
31- else
32- source "$ZSH/themes/$ZSH_THEME.zsh-theme"
33- fi
34+ source "$ZSH/themes/$ZSH_THEME.zsh-theme"
35 fi
36 fi
37diff --git a/plugins/themes/themes.plugin.zsh b/plugins/themes/themes.plugin.zsh
38index 2cd0ee3277006e079bd4c20dc09419976f6150a4..ac4ccc980297d7f2878f453ac082c342db8aa673 100644
39--- a/plugins/themes/themes.plugin.zsh
40+++ b/plugins/themes/themes.plugin.zsh
41@@ -1,19 +1,17 @@
42 function theme
43 {
44- if [ -z "$1" ] || [ "$1" = "random" ]; then
45- themes=($ZSH/themes/*zsh-theme)
46- N=${#themes[@]}
47- ((N=(RANDOM%N)+1))
48- RANDOM_THEME=${themes[$N]}
49- source "$RANDOM_THEME"
50- echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."
51+ if [ -z "$1" ]; then
52+ 1="random"
53+ fi
54+
55+ if [ -f "$ZSH_CUSTOM/$1.zsh-theme" ]
56+ then
57+ source "$ZSH_CUSTOM/$1.zsh-theme"
58+ elif [ -f "$ZSH_CUSTOM/themes/$1.zsh-theme" ]
59+ then
60+ source "$ZSH_CUSTOM/themes/$1.zsh-theme"
61 else
62- if [ -f "$ZSH_CUSTOM/themes/$1.zsh-theme" ]
63- then
64- source "$ZSH_CUSTOM/themes/$1.zsh-theme"
65- else
66- source "$ZSH/themes/$1.zsh-theme"
67- fi
68+ source "$ZSH/themes/$1.zsh-theme"
69 fi
70 }
7172diff --git a/themes/random.zsh-theme b/themes/random.zsh-theme
73new file mode 100644
74index 0000000000000000000000000000000000000000..7395676620a8781b51f2650a5fdc9d23b4c5603f
75--- /dev/null
76+++ b/themes/random.zsh-theme
77@@ -0,0 +1,10 @@
78+if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then
79+ themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme)
80+else
81+ themes=($ZSH/themes/*zsh-theme)
82+fi
83+N=${#themes[@]}
84+((N=(RANDOM%N)+1))
85+RANDOM_THEME=${themes[$N]}
86+source "$RANDOM_THEME"
87+echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..."