]> Sergey Matveev's repositories - dotfiles.git/blob - zsh/.zsh/rc/015prompt.zsh
Ability to temporary disable vcs_info
[dotfiles.git] / zsh / .zsh / rc / 015prompt.zsh
1 setopt PROMPT_SUBST
2
3 PROMPT="%2~ %B"
4 # A: autoenv
5 # V: virtualenv
6 # M: laxed umask
7 PROMPT+='${(j::)psvar}'
8 PROMPT+="%(1j.%j.)%b"
9 PROMPT+='%U${vcs_info_msg_0_}%u'
10 PROMPT+="%(?.. %S%?%s)"
11 PROMPT+='%(1S. %B${SECONDS}%b.)'
12 PROMPT+='%B%F{magenta}%#%f%b '
13
14 function zle-line-init zle-keymap-select {
15     local ccolour=red
16     [[ ${KEYMAP} == vicmd ]] || ccolour=green
17     printf "\e]12;${ccolour}\e\\"
18     [[ "$#_autoenv_stack_entered" -eq 0 ]] && psvar=(${psvar#A}) || {
19         [[ -n "${psvar[(r)A]}" ]] || psvar=(A $psvar)
20     }
21     [[ -z "$VIRTUAL_ENV" ]] && psvar=(${psvar#V}) || {
22         [[ -n "${psvar[(r)V]}" ]] || psvar=(V $psvar)
23     }
24     [[ `umask` == "077" ]] && psvar=(${psvar#M}) || {
25         [[ -n "${psvar[(r)M]}" ]] || psvar=("M" $psvar)
26     }
27     zle reset-prompt
28 }
29
30 zle -N zle-line-init
31 zle -N zle-keymap-select
32
33 preexec() {
34     SECONDS=0
35 }
36
37 precmd() {
38     printf "\a\e]2;\e\\"
39     [[ -n "$NO_VCS_INFO" ]] || vcs_info
40 }