blob: 25c9b521634540ef9f21a90df4e287bd1654f196 (
plain) (
blame)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
HL_PRECMD_LEFT=' '
HL_PRECMD_RIGHT=''
HL_USER_LEFT=''
HL_USER_RIGHT=''
HL_CLOCK_LEFT=''
HL_CLOCK_RIGHT=''
HL_REPO=''
HL_PUSH='↑'
HL_PULL='↓'
HL_CHANGES=''
HL_PRECURSOR=''
HL_PROMPT_FG=223
HL_PROMPT_BG=0
HL_USER_FG=223
HL_USER_BG=66
HL_USER_NOPERMS=160
HL_CLOCK_FG=214
HL_CLOCK_BG=0
hl_colored_echo_def() {
hl_colored_echo $HL_PROMPT_FG $HL_PROMPT_BG $1
}
hl_colored_echo() {
echo -en "%F{$1}%K{$2}$3%k%f"
}
hl_user() {
hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_USER_LEFT
__user="$USER"
[ ! -w . ] && hl_colored_echo $HL_USER_NOPERMS $HL_USER_BG $__user \
|| hl_colored_echo $HL_USER_FG $HL_USER_BG $__user
hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_USER_RIGHT
}
hl_time() {
hl_colored_echo $HL_CLOCK_FG $HL_CLOCK_BG "$HL_CLOCK_LEFT$(date +%R)$HL_CLOCK_RIGHT"
}
hl_precursor() {
__body=$HL_PRECURSOR
if git rev-parse --git-dir > /dev/null 2>&1; then
__gitstatus="$(git status -uno)"
if echo $__gitstatus | grep -q 'behind' > /dev/null 2>&1; then
__body=$HL_PULL
elif echo $__gitstatus | grep -q 'ahead' > /dev/null 2>&1; then
__body=$HL_PUSH
elif echo $__gitstatus | grep -q 'changes' > /dev/null 2>&1; then
__body=$HL_CHANGES
else
__body=$HL_REPO
fi
fi
echo -en "$__body"
}
# user 12:45 >
# user - white on blue - on machine
# - white on green - ssh
# - red on * - no write permissions
# precursor - > - default
# - - git repo
# - ↑ - unpushed changes
# - ↓ - unpulled changes
# - - unstaged changes
# - colored red - no write permissions
hl_precmd() {
__exitcode="$?"
if [ "$_print_directory" -ne 0 ] || [ "$__exitcode" -ne 0 ]; then
[ "$__exitcode" -ne 0 ] && hl_colored_echo $HL_USER_NOPERMS $HL_PROMPT_BG $HL_PRECMD_LEFT \
|| hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_PRECMD_LEFT
[ "$__exitcode" -ne 0 ] && hl_colored_echo $HL_PROMPT_FG $HL_USER_NOPERMS " $__exitcode "
[ "$_print_directory" -ne 0 ] && hl_colored_echo $HL_USER_FG $HL_USER_BG " $PWD"
[ "$_print_directory" -ne 0 ] && hl_colored_echo $HL_USER_BG $HL_PROMPT_BG "$HL_PRECMD_RIGHT\n" \
|| hl_colored_echo $HL_USER_NOPERMS $HL_PROMPT_BG "$HL_PRECMD_RIGHT\n"
fi
}
chpwd() {
_print_directory=1
}
preexec() {
_print_directory=0
}
setopt prompt_subst
export PROMPT='$(hl_precmd)%F{$HL_PROMPT_FG}$(hl_user) $(hl_time) $(hl_precursor) %f'
|