ohmyzsh/plugins/themes/themes.plugin.zsh
Joe H. Rahme 730111f468 Restore custom dir hierarchy in theme plugin
Themes are now searched for in the following directories (in order):

* $ZSH/custom/themes
* $ZSH/custom
* $ZSH/themes

Search will always return first match found.
2015-11-13 12:52:08 +01:00

42 lines
985 B
Bash

THEMEPATH=("$ZSH_CUSTOM/themes" "$ZSH_CUSTOM" "$ZSH/themes")
function theme
{
if [ -z "$1" ] || [ "$1" = "random" ]; then
# Load every theme in the themepath
# TODO remove the shadowed themes from the list
# i.e: if I have a custom theme foo overshadowing
# "$ZSH/themes/foo.zsh-theme", the latter shouldn't
# be part of this list.
themes=($(find $THEMEPATH -name '*.zsh-theme'))
N=${#themes[@]}
((N=(RANDOM%N)+1))
random_theme=${themes[$N]}
source "$random_theme"
echo "[oh-my-zsh] Random theme '$random_theme' loaded."
else
theme_name="$1.zsh-theme"
match=""
for dir in $THEMEPATH
do
# Keep looking until we find a matching theme
if [ -f "$dir/$theme_name" ] && [ -z "$match" ]
then
match=$dir/$theme_name
fi
done
if [ -n "$match" ]
then
source "$match"
else
echo "[oh-my-zsh]Couldn't find theme $1."
fi
fi
}
function lstheme
{
find $THEMEPATH -name '*.zsh-theme' | sort -u | sed 's:.*/\(.*\)\.zsh-theme:\1:'
}