Theme changes
* Load colors before base theme so they can be used by base theme * Change git-specific variables to SCM-agnostic ones
This commit is contained in:
@@ -1,27 +1,82 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Stolen from Steve Losh
|
||||
function prompt_char {
|
||||
git branch >/dev/null 2>/dev/null && echo -e '±' && return
|
||||
hg root >/dev/null 2>/dev/null && echo -e '☿' && return
|
||||
echo -e '○'
|
||||
}
|
||||
SCM_THEME_PROMPT_DIRTY=' ✗'
|
||||
SCM_THEME_PROMPT_CLEAN=' ✓'
|
||||
SCM_THEME_PROMPT_PREFIX=' |'
|
||||
SCM_THEME_PROMPT_SUFFIX='|'
|
||||
|
||||
function parse_git_dirty {
|
||||
if [[ -n $(git status -s 2> /dev/null) ]]; then
|
||||
echo -e "$GIT_THEME_PROMPT_DIRTY"
|
||||
else
|
||||
echo -e "$GIT_THEME_PROMPT_CLEAN"
|
||||
GIT='git'
|
||||
SCM_GIT_CHAR='±'
|
||||
|
||||
HG='hg'
|
||||
SCM_HG_CHAR='☿'
|
||||
|
||||
SVN='svn'
|
||||
SCM_SVN_CHAR='⑆'
|
||||
|
||||
SCM_NONE_CHAR='○'
|
||||
|
||||
RVM_THEME_PROMPT_PREFIX=' |'
|
||||
RVM_THEME_PROMPT_SUFFIX='|'
|
||||
|
||||
function scm {
|
||||
if [[ -d .git ]]; then SCM=$GIT
|
||||
elif [[ -d .hg ]]; then SCM=$HG
|
||||
elif [[ -d .svn ]]; then SCM=$SVN
|
||||
else SCM='NONE'
|
||||
fi
|
||||
}
|
||||
|
||||
function git_prompt_info() {
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||
echo -e "$GIT_THEME_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$GIT_THEME_PROMPT_SUFFIX"
|
||||
function scm_char {
|
||||
if [[ -z $SCM ]]; then scm; fi
|
||||
[[ $SCM == $GIT ]] && echo $SCM_GIT_CHAR && return
|
||||
[[ $SCM == $HG ]] && echo $SCM_HG_CHAR && return
|
||||
[[ $SCM == $SVN ]] && echo $SCM_SVN_CHAR && return
|
||||
echo $SCM_NONE_CHAR
|
||||
}
|
||||
|
||||
function scm_prompt_info {
|
||||
if [[ -z $SCM ]]; then scm; fi
|
||||
[[ $SCM == $GIT ]] && git_prompt_info && return
|
||||
[[ $SCM == $HG ]] && hg_prompt_info && return
|
||||
[[ $SCM == $SVN ]] && svn_prompt_info && return
|
||||
}
|
||||
|
||||
function rvm_version_prompt() {
|
||||
# Stolen from Steve Losh
|
||||
# left in for backwards-compatibility
|
||||
function prompt_char {
|
||||
char=$(scm_char);
|
||||
echo -e "$char"
|
||||
}
|
||||
|
||||
function git_prompt_info {
|
||||
if [[ -n $(git status -s 2> /dev/null) ]]; then
|
||||
state=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
|
||||
else
|
||||
state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
|
||||
fi
|
||||
prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
|
||||
suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||
|
||||
echo -e "$prefix${ref#refs/heads/}$state$suffix"
|
||||
}
|
||||
|
||||
function svn_prompt_info {
|
||||
if [[ -n $(svn status 2> /dev/null) ]]; then
|
||||
state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
|
||||
else
|
||||
state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
|
||||
fi
|
||||
prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
|
||||
suffix=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
|
||||
ref=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }') || return
|
||||
|
||||
[[ -z $ref ]] && return
|
||||
echo -e "$prefix$ref$state$suffix"
|
||||
}
|
||||
|
||||
function rvm_version_prompt {
|
||||
if which rvm &> /dev/null; then
|
||||
rvm=$(rvm tools identifier) || return
|
||||
echo -e "$RVM_THEME_PROMPT_PREFIX$rvm$RVM_THEME_PROMPT_SUFFIX"
|
||||
|
||||
Reference in New Issue
Block a user