Skip to content

Instantly share code, notes, and snippets.

@NonLogicalDev
Last active August 29, 2015 14:07
Show Gist options
  • Save NonLogicalDev/5bc692662f704559edb8 to your computer and use it in GitHub Desktop.
Save NonLogicalDev/5bc692662f704559edb8 to your computer and use it in GitHub Desktop.
# Prompt Settings =============================================================
T_LEFT=(' '
'$(sp)'
'$(add [ ls_dirs ])' # Directory list
'$(add $(sp) vcs_status)' # Status of version controll
# '$(add $(sp) rvm_ver)' # Active version of ruby
# '$(add $(sp) nvm_ver)' # Active version of node
'>'
)
B_LEFT=(' '
'%B»%b ' # Pretty prompt
)
T_RIGHT=(' '
'$(add \<\ time_now \ \>)' # Time
'$(sp)'
)
B_RIGHT=(' '
''
)
# Setting up corners
T_CLEFT='┌'
B_CLEFT='└'
T_CRIGHT='┐'
B_CRIGHT='┘'
# Prompt Settings =============================================================
# Git plugin settings
ZSH_THEME_GIT_PROMPT_PREFIX="git(%{$fg_bold[green]%}%{$reset_color%}%{$fg_bold[white]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[cyan]%}▴%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[magenta]%}▾%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg_bold[yellow]%}●%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}"
# Svn plugin settings
ZSH_THEME_SVN_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
ZSH_THEME_SVN_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
ZSH_THEME_SVN_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
ZSH_THEME_SVN_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
# NVM Plugin settings
ZSH_THEME_NVM_PROMPT_PREFIX="nvm(⬡ "
ZSH_THEME_NVM_PROMPT_SUFFIX=")"
# RVM Plugin settings
ZSH_THEME_RVM_PROMPT_PREFIX="rvm(♢"
ZSH_THEME_RVM_PROMPT_SUFFIX=")"
# Custom Components ============================================================
# Show the status of whatever version control we are using
vcs_status() {
if [[ ( $(whence in_svn) != "" ) && ( $(in_svn) == 1 ) ]]; then
svn_prompt_info
else
git_prompt_info
fi
}
# List the dirs
ls_dirs() {
print "%{$fg[green]%}%3~%{$reset_color%}"
}
# Show the rvm ruby version if applicable
rvm_ver() {
print "$ZSH_THEME_RVM_PROMPT_PREFIX$(rvm-prompt i v g)$ZSH_THEME_RVM_PROMPT_SUFFIX"
}
# Show the nvm node version if applicable
nvm_ver() {
nvm_prompt_info
}
time_now() {
print '%t'
}
# Utility Functions ===========================================================
#
function join { local IFS=""; shift; echo "$*"; }
SPACE_FILLER='─'
sp() {
if [[ -n $1 ]]; then
local var=''
for (( i = 0; i < $1; i++ )); do
var+=$SPACE_FILLER
done
print $var
else
print $SPACE_FILLER
fi
}
fill_rest() {
# Take the first argument as the string that is already in the line
THESTRING=$1
# Magically figure out prompt length
# Set up a very magic variable
local zero='%([BSUbfksu]|([FB]|){*})'
# Strip color codes
THESTRING=${(S%%)THESTRING//$~zero/}
THESTRING=`echo $THESTRING | perl -pe 's/\e\[?.*?[\@-~]//g'`
# Get the damn correct length
FOOLENGTH=${#${THESTRING}}
local rest
((rest = ${COLUMNS} - FOOLENGTH - 1))
sp $rest
}
add() {
if [[ -n $3 ]]; then
COMPONENT=$2
if [[ -n ${(S%%)$($COMPONENT)} ]]; then
print "$1$($2)$3"
fi
elif [[ -n $2 ]]; then
COMPONENT=$2
if [[ -n ${(S%%)$($COMPONENT)} ]]; then
print "$1$($2)$1"
fi
elif [[ -n $1 ]]; then
COMPONENT=$1
if [[ -n ${(S%%)$($COMPONENT)} ]]; then
print "$($1)"
fi
fi
}
# Finalization ================================================================
TP_LEFT="$T_CLEFT$(join ${T_LEFT[@]})"
TP_RIGHT="$(join ${T_RIGHT[@]})$T_CRIGHT"
TP_MIDDLE='$(fill_rest "$TP_LEFT$TP_RIGHT")'
BP_LEFT="$B_CLEFT$(join ${B_LEFT[@]})"
BP_RIGHT="$(join ${B_RIGHT[@]})$B_CRIGHT"
# =============================================================================
PROMPT="$TP_LEFT
$BP_LEFT"
RPROMPT=""
# vim: ft=zsh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment