6adad5c300a6bfde33b593489cc1c3b645b721e8

Author
Willy Weiskopf <william@weiskopf.me>
Committer
Marc Cornellà <marc.cornella@live.com>
Date

Message

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 }
71 
72diff --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..."