diff options
| author | Christopher Chow <soliah@gmail.com> | 2011-02-04 01:37:39 +1100 | 
|---|---|---|
| committer | Christopher Chow <soliah@gmail.com> | 2011-02-04 01:37:39 +1100 | 
| commit | 051fb5f1d5d0c72812989bd4dfd0be33f43d75ad (patch) | |
| tree | 6d3b003e1fa6f91ee830bdda9a9763b786304da1 /themes | |
| parent | 01b0366f3e27cf30f3882870100f14625fc267d1 (diff) | |
| download | zsh-051fb5f1d5d0c72812989bd4dfd0be33f43d75ad.tar.gz zsh-051fb5f1d5d0c72812989bd4dfd0be33f43d75ad.tar.bz2 zsh-051fb5f1d5d0c72812989bd4dfd0be33f43d75ad.zip | |
Added time since last commit to Soliah theme and changed some colours.
Diffstat (limited to 'themes')
| -rw-r--r-- | themes/Soliah.zsh-theme | 63 | 
1 files changed, 60 insertions, 3 deletions
| diff --git a/themes/Soliah.zsh-theme b/themes/Soliah.zsh-theme index 7ad876d41..1c0ab3cc9 100644 --- a/themes/Soliah.zsh-theme +++ b/themes/Soliah.zsh-theme @@ -1,6 +1,63 @@ -PROMPT='%{$fg[blue]%}%B%20~%b%{$reset_color%}%{$(git_prompt_info)%} $ ' +PROMPT='%{$fg[blue]%}%n%{$reset_color%} on %{$fg[red]%}%M%{$reset_color%} in %{$fg[blue]%}%~%b%{$reset_color%}$(git_time_since_commit)$(git_prompt_info) +$ ' -ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg[green]%}" +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%}"  ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" -ZSH_THEME_GIT_PROMPT_DIRTY="*%{$reset_color%}" +# Text to display if the branch is dirty +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}"  + +# Text to display if the branch is clean +ZSH_THEME_GIT_PROMPT_CLEAN=""  + +# Colors vary depending on time lapsed. +ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}" +ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}" +ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}" +ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}" + +# Determine the time since last commit. If branch is clean, +# use a neutral color, otherwise colors will vary according to time. +function git_time_since_commit() { +    if git rev-parse --git-dir > /dev/null 2>&1; then +        # Only proceed if there is actually a commit. +        if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then +            # Get the last commit. +            last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` +            now=`date +%s` +            seconds_since_last_commit=$((now-last_commit)) + +            # Totals +            MINUTES=$((seconds_since_last_commit / 60)) +            HOURS=$((seconds_since_last_commit/3600)) +            +            # Sub-hours and sub-minutes +            DAYS=$((seconds_since_last_commit / 86400)) +            SUB_HOURS=$((HOURS % 24)) +            SUB_MINUTES=$((MINUTES % 60)) +             +            if [[ -n $(git status -s 2> /dev/null) ]]; then +                if [ "$MINUTES" -gt 30 ]; then +                    COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" +                elif [ "$MINUTES" -gt 10 ]; then +                    COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" +                else +                    COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" +                fi +            else +                COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" +            fi + +            if [ "$HOURS" -gt 24 ]; then +                echo "($COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}|" +            elif [ "$MINUTES" -gt 60 ]; then +                echo "($COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}|" +            else +                echo "($COLOR${MINUTES}m%{$reset_color%}|" +            fi +        else +            COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" +            echo "($COLOR~|" +        fi +    fi +} | 
