-
Notifications
You must be signed in to change notification settings - Fork 1
/
prompt.zsh
62 lines (51 loc) · 1.51 KB
/
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
autoload colors && colors
# cheers, @ehrenmurdick
# http://github.com/ehrenmurdick/config/blob/master/zsh/prompt.zsh
git_branch() {
echo $(/usr/bin/git symbolic-ref HEAD 2>/dev/null | awk -F/ {'print $NF'})
}
git_dirty() {
st=$(/usr/bin/git status 2>/dev/null | tail -n 1)
if [[ $st == "" ]]
then
echo ""
else
echo -n "%{$fg_bold[green]%}[$(git_prompt_info)%{$reset_color%}"
if [[ $st != "nothing to commit (working directory clean)" ]]
then
echo -n "%{$fg_bold[red]%} *%{$reset_color%}"
fi
echo "%{$fg_bold[green]%}]%{$reset_color%}"
fi
}
git_prompt_info() {
ref=$(/usr/bin/git symbolic-ref HEAD 2>/dev/null) || return
echo "${ref#refs/heads/}"
}
hg_prompt_info() {
hg prompt --angle-brackets "%{$fg_bold[green]%}[<branch>@<tags|,>]%{$reset_color%}" 2>/dev/null
}
venv_info() {
if [ -n "$VIRTUAL_ENV" ]; then
echo -n "%{$fg_bold[green]%}[venv:%{$reset_color%}"
echo -n "%{$fg[white]%}`basename "$VIRTUAL_ENV"`%{$reset_color%}"
echo "%{$fg_bold[green]%}] "
fi
}
current_dir() {
echo "%{$fg[white]%}[%~]%{$reset_color%}"
}
user_at_host() {
echo "%{$fg_bold[green]%}%n@%m%{$reset_color%}"
}
current_time() {
echo "%{$fg[blue]%}%D{[%I:%M:%S]}%{$reset_color%}"
}
prompt_chars() {
echo "%{$fg[blue]%}->%{$fg_bold[blue]%} %#%{$reset_color%}"
}
export PROMPT=$'$(user_at_host) $(current_time) $(current_dir) $(git_dirty)$(hg_prompt_info)\n$(venv_info)$(prompt_chars) '
export RPROMPT='$(vi_mode_prompt_info)'
precmd() {
title "zsh" "%m" "%55<...<%~"
}