From a3c24f6b786a5ead8dc0b87da8aedf2c190c84c5 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Fri, 3 Jun 2011 19:02:44 -0500 Subject: [PATCH] Initial support for favorite themes --- lib/functions.zsh | 28 ++++++++++++++++++++++++++++ oh-my-zsh.sh | 22 +++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/lib/functions.zsh b/lib/functions.zsh index b29d3e482..d2f68cb88 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -50,3 +50,31 @@ function extract() { fi } +function get_current_theme() { + echo `basename $RANDOM_THEME` +} + +function like_theme() { + theme_name=`get_current_theme` + link_name="$FAVORITE_THEMES_DIR/$theme_name" + + if [[ ! -L $link_name ]]; then + ln -s $RANDOM_THEME $link_name + echo "Added $theme_name to favorites" + else + echo "$theme_name already a favorite!" + fi +} + +function unlike_theme() { + theme_name=`get_current_theme` + link_name="$FAVORITE_THEMES_DIR/$theme_name" + + if [[ -L $link_name ]]; then + # FIXME: What happens if we remove the last theme we have? + rm $link_name + echo "Removed $theme_name from favorites" + else + echo "$theme_name isn't a favorite" + fi +} diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index dbff1ced9..b4f70e922 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -1,5 +1,11 @@ # Initializes Oh My Zsh +# Create another directory under $ZSH called favorite_themes +# Every time a user 'likes' a theme: +# Create symlink to it in favorite_themes (if it doesn't already exist) +# If user is using 'random' theme AND there are contents in the favorite_themes +# directory, use that as the 'themes' variable, otherwise use all + # add a function path fpath=($ZSH/functions $ZSH/completions $fpath) @@ -27,16 +33,30 @@ done # Load all of your custom configurations from custom/ for config_file ($ZSH/custom/*.zsh) source $config_file +export FAVORITE_THEMES_DIR="$ZSH/themes/favorites/" + # Load the theme # Check for updates on initial load... if [ "$ZSH_THEME" = "random" ] then - themes=($ZSH/themes/*zsh-theme) + # Allow users to randomize themes with only their favorites + if [ ! -d $FAVORITE_THEMES_DIR ]; then + mkdir $FAVORITE_THEMES_DIR + fi + + # Only randomize with liked themes if there are any + if [ `ls $FAVORITE_THEMES_DIR | wc -w` -gt 0 ]; then + themes=($FAVORITE_THEMES_DIR/*zsh-theme) + else + themes=($ZSH/themes/*zsh-theme) + fi + N=${#themes[@]} ((N=(RANDOM%N)+1)) RANDOM_THEME=${themes[$N]} source "$RANDOM_THEME" echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." + export RANDOM_THEME else source "$ZSH/themes/$ZSH_THEME.zsh-theme" fi