1 functions rbenv_prompt_info >& /dev/null || rbenv_prompt_info(){}
 
   3 function theme_precmd {
 
   5     (( TERMWIDTH = ${COLUMNS} - 1 ))
 
   9     # Truncate the path if it's too long.
 
  14     local promptsize=${#${(%):---(%n@%m:%l)---()--}}
 
  15     local rubyprompt=`rvm_prompt_info || rbenv_prompt_info`
 
  16     local rubypromptsize=${#${rubyprompt}}
 
  17     local pwdsize=${#${(%):-%~}}
 
  19     if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then
 
  20       ((PR_PWDLEN=$TERMWIDTH - $promptsize))
 
  22       PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}"
 
  30     if [[ "$TERM" == "screen" ]]; then
 
  31         local CMD=${1[(wr)^(*=*|sudo|-*)]}
 
  39     # Need this so the prompt will work.
 
  45     # See if we can use colors.
 
  47     autoload colors zsh/terminfo
 
  48     if [[ "$terminfo[colors]" -ge 8 ]]; then
 
  51     for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do
 
  52         eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
 
  53         eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
 
  54         (( count = $count + 1 ))
 
  56     PR_NO_COLOUR="%{$terminfo[sgr0]%}"
 
  60     ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[green]%}"
 
  61     ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
 
  62     ZSH_THEME_GIT_PROMPT_DIRTY=""
 
  63     ZSH_THEME_GIT_PROMPT_CLEAN=""
 
  65     ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚"
 
  66     ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹"
 
  67     ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖"
 
  68     ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜"
 
  69     ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═"
 
  70     ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭"
 
  73     # See if we can use extended characters to look nicer.
 
  76     set -A altchar ${(s..)terminfo[acsc]}
 
  77     PR_SET_CHARSET="%{$terminfo[enacs]%}"
 
  78     PR_SHIFT_IN="%{$terminfo[smacs]%}"
 
  79     PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
 
  80     PR_HBAR=${altchar[q]:--}
 
  81     PR_ULCORNER=${altchar[l]:--}
 
  82     PR_LLCORNER=${altchar[m]:--}
 
  83     PR_LRCORNER=${altchar[j]:--}
 
  84     PR_URCORNER=${altchar[k]:--}
 
  88     # Decide if we need to set titlebar text.
 
  92             PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
 
  95             PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
 
 104     # Decide whether to set a screen title
 
 105     if [[ "$TERM" == "screen" ]]; then
 
 106         PR_STITLE=$'%{\ekzsh\e\\%}'
 
 113     # Finally, the prompt.
 
 115     PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
 
 116 $PR_CYAN$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\
 
 117 $PR_GREEN%$PR_PWDLEN<...<%~%<<\
 
 118 $PR_GREY)`rvm_prompt_info || rbenv_prompt_info`$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR$PR_SHIFT_OUT$PR_GREY(\
 
 119 $PR_CYAN%(!.%SROOT%s.%n)$PR_GREY@$PR_GREEN%m:%l\
 
 120 $PR_GREY)$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_URCORNER$PR_SHIFT_OUT\
 
 122 $PR_CYAN$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
 
 123 $PR_YELLOW%D{%H:%M:%S}\
 
 124 $PR_LIGHT_BLUE%{$reset_color%}`git_prompt_info``git_prompt_status`$PR_BLUE)$PR_CYAN$PR_SHIFT_IN$PR_HBAR\
 
 125 $PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
 
 128     # display exitcode on the right when >0
 
 129     return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})"
 
 130     RPROMPT=' $return_code$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
 
 131 ($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR'
 
 133     PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
 
 134 $PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
 
 135 $PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
 
 136 $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
 
 141 autoload -U add-zsh-hook
 
 142 add-zsh-hook precmd  theme_precmd
 
 143 add-zsh-hook preexec theme_preexec