-
Notifications
You must be signed in to change notification settings - Fork 0
/
20_Prompt.zsh
66 lines (51 loc) · 1.94 KB
/
20_Prompt.zsh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Enable hook method
autoload add-zsh-hook
# Enable and configure vcs_info
autoload -Uz vcs_info
add-zsh-hook precmd vcs_info
zstyle ':vcs_info:*' enable hg git cvs svn
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' stagedstr ':S'
zstyle ':vcs_info:*' unstagedstr ':U'
zstyle ':vcs_info:(hg|git):*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}%c%u%m|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:(hg|git):*' formats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}%c%u%m]%f '
zstyle ':vcs_info:git*+set-message:*' hooks git-aheadbehind git-stash
# https://github.com/blaenk/dots/blob/master/zsh/zsh/vcsinfo.zsh
function +vi-git-aheadbehind() {
local ahead behind
local -a gitstatus
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l | tr -d ' ')
(( $behind )) && gitstatus+=( "-${behind}" )
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l | tr -d ' ')
(( $ahead )) && gitstatus+=( "+${ahead}" )
[ 0 -eq ${#gitstatus[@]} ] || hook_com[misc]+=":${(j::)gitstatus}"
}
function +vi-git-stash() {
if [[ -s ${hook_com[base]}/.git/refs/stash ]]
then
hook_com[misc]+=':$'
fi
}
# Prompt theme
function promptSetup () {
setopt prompt_subst
# color support for root
if [ "$USER" = 'root' ]; then
base_prompt="%B%F{red}%m%k "
else
base_prompt="%B%F{green}%n@%m%k "
fi
# prefixes
post_prompt="%b%f%k"
jobs_prompt="%(?..%B%F{yellow}<%?>)%(1j.%B%F{cyan}{%j}.)"
chrt_prompt="%F{red}(%f${DEBIAN_CHROOT}%F{red})%f"
path_prompt="%B%F{yellow}%1~"
# left prompts
PS1="$jobs_prompt$base_prompt$path_prompt %# $post_prompt"
PS2="$jobs_prompt$base_prompt$path_prompt %_> $post_prompt"
PS3="$jobs_prompt$base_prompt$path_prompt ?# $post_prompt"
PS4="+%B%* %F{cyan}%N%f:%F{yellow}%i%f>%b "
# right prompt
RPROMPT="${DEBIAN_CHROOT:+$chrt_prompt }${vcs_info_msg_0_}"
}
add-zsh-hook precmd promptSetup