Last active
August 29, 2015 14:07
-
-
Save NonLogicalDev/5bc692662f704559edb8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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