2011-04-21 13:40:34 +02:00
PROMPT = ' %{ $fg [ blue] %} %n%{ $reset_color %} on %{ $fg [ red] %} %M%{ $reset_color %} in %{ $fg [ blue] %} %~%b%{ $reset_color %} $( git_time_since_commit) $( check_git_prompt_info)
2011-02-03 15:37:39 +01:00
$ '
2010-04-30 10:36:03 +02:00
2011-02-03 15:37:39 +01:00
ZSH_THEME_GIT_PROMPT_PREFIX = " %{ $fg [white]%} "
2010-04-30 10:36:03 +02:00
ZSH_THEME_GIT_PROMPT_SUFFIX = " %{ $reset_color %}) "
2011-02-03 15:37:39 +01:00
# Text to display if the branch is dirty
2011-06-01 08:48:26 +02:00
ZSH_THEME_GIT_PROMPT_DIRTY = " %{ $fg [red]%}*%{ $reset_color %} "
2011-02-03 15:37:39 +01:00
# Text to display if the branch is clean
2011-06-01 08:48:26 +02:00
ZSH_THEME_GIT_PROMPT_CLEAN = ""
2011-02-03 15:37:39 +01:00
# 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]%} "
2011-04-21 13:40:34 +02:00
# Git sometimes goes into a detached head state. git_prompt_info doesn't
# return anything in this case. So wrap it in another function and check
# for an empty string.
function check_git_prompt_info( ) {
if git rev-parse --git-dir > /dev/null 2>& 1; then
if [ [ -z $( git_prompt_info) ] ] ; then
echo " %{ $fg [magenta]%}detached-head%{ $reset_color %}) "
else
echo " $( git_prompt_info) "
fi
fi
}
# Determine if we are using a gemset.
function rvm_gemset( ) {
GEMSET = ` rvm gemset list | grep '=>' | cut -b4-`
if [ [ -n $GEMSET ] ] ; then
echo " %{ $fg [yellow]%} $GEMSET %{ $reset_color %}| "
2011-06-01 08:48:26 +02:00
fi
2011-04-21 13:40:34 +02:00
}
2011-02-03 15:37:39 +01:00
# 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))
2011-06-01 08:48:26 +02:00
2011-02-03 15:37:39 +01:00
# Sub-hours and sub-minutes
DAYS = $(( seconds_since_last_commit / 86400 ))
SUB_HOURS = $(( HOURS % 24 ))
SUB_MINUTES = $(( MINUTES % 60 ))
2011-06-01 08:48:26 +02:00
2011-02-03 15:37:39 +01:00
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
2011-04-21 13:40:34 +02:00
echo " ( $( rvm_gemset) $COLOR ${ DAYS } d ${ SUB_HOURS } h ${ SUB_MINUTES } m%{ $reset_color %}| "
2011-02-03 15:37:39 +01:00
elif [ " $MINUTES " -gt 60 ] ; then
2011-04-21 13:40:34 +02:00
echo " ( $( rvm_gemset) $COLOR ${ HOURS } h ${ SUB_MINUTES } m%{ $reset_color %}| "
2011-02-03 15:37:39 +01:00
else
2011-04-21 13:40:34 +02:00
echo " ( $( rvm_gemset) $COLOR ${ MINUTES } m%{ $reset_color %}| "
2011-02-03 15:37:39 +01:00
fi
else
COLOR = " $ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL "
2011-04-21 13:40:34 +02:00
echo " ( $( rvm_gemset) $COLOR ~| "
2011-02-03 15:37:39 +01:00
fi
fi
}