]> git.rmz.io Git - dotfiles.git/blob - zsh/themes/jonathan.zsh-theme
cleanup custom folder
[dotfiles.git] / zsh / themes / jonathan.zsh-theme
1 functions rbenv_prompt_info >& /dev/null || rbenv_prompt_info(){}
2
3 function theme_precmd {
4 local TERMWIDTH
5 (( TERMWIDTH = ${COLUMNS} - 1 ))
6
7
8 ###
9 # Truncate the path if it's too long.
10
11 PR_FILLBAR=""
12 PR_PWDLEN=""
13
14 local promptsize=${#${(%):---(%n@%m:%l)---()--}}
15 local rubyprompt=`rvm_prompt_info || rbenv_prompt_info`
16 local rubypromptsize=${#${rubyprompt}}
17 local pwdsize=${#${(%):-%~}}
18
19 if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then
20 ((PR_PWDLEN=$TERMWIDTH - $promptsize))
21 else
22 PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}"
23 fi
24
25 }
26
27
28 setopt extended_glob
29 theme_preexec () {
30 if [[ "$TERM" == "screen" ]]; then
31 local CMD=${1[(wr)^(*=*|sudo|-*)]}
32 echo -n "\ek$CMD\e\\"
33 fi
34 }
35
36
37 setprompt () {
38 ###
39 # Need this so the prompt will work.
40
41 setopt prompt_subst
42
43
44 ###
45 # See if we can use colors.
46
47 autoload colors zsh/terminfo
48 if [[ "$terminfo[colors]" -ge 8 ]]; then
49 colors
50 fi
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 ))
55 done
56 PR_NO_COLOUR="%{$terminfo[sgr0]%}"
57
58 ###
59 # Modify Git prompt
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=""
64
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]%} ✭"
71
72 ###
73 # See if we can use extended characters to look nicer.
74
75 typeset -A altchar
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]:--}
85
86
87 ###
88 # Decide if we need to set titlebar text.
89
90 case $TERM in
91 xterm*)
92 PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
93 ;;
94 screen)
95 PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
96 ;;
97 *)
98 PR_TITLEBAR=''
99 ;;
100 esac
101
102
103 ###
104 # Decide whether to set a screen title
105 if [[ "$TERM" == "screen" ]]; then
106 PR_STITLE=$'%{\ekzsh\e\\%}'
107 else
108 PR_STITLE=''
109 fi
110
111
112 ###
113 # Finally, the prompt.
114
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\
121
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\
126 >$PR_NO_COLOUR '
127
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'
132
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 '
137 }
138
139 setprompt
140
141 autoload -U add-zsh-hook
142 add-zsh-hook precmd theme_precmd
143 add-zsh-hook preexec theme_preexec