forked from mattfoster/zshkit
-
Notifications
You must be signed in to change notification settings - Fork 1
/
prompt_minimal_vcs_setup
66 lines (54 loc) · 2.38 KB
/
prompt_minimal_vcs_setup
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
# Themable prompt with vcs_info support.
# No twiddly crap - just prompty goodness.
# Requires zshkit: http://github.com/mattfoster/zshkit/tree/master/06_git
#
# Instructions:
# 1) Put this somewhere
# 2) Make sure that it's in the fpath:
# fpath=( $HOME/.zsh/func "$fpath[@]" )
# 3) Load up the prompt theme extension, and set the prompt:
# autoload promptinit && promptinit && prompt minimal_vcs
# Prompt setup function
function prompt_minimal_vcs_setup {
unset PS1 PS2 PS3 PS4 PROMPT RPROMPT
# Colours accepted as arguments
d_col=${1:-'blue'}
b_col=${2-'yellow'}
n_tru=${3:-'blue'}
n_fal=${4:-'red'}
# I've no idea why the %F style colours don't work whhen SHLVL == 1
if [[ $SHLVL == 1 || $ZSH_VERSION < 4.3.7 ]]; then
PS1='%{$fg_bold[$d_col]%}%1~ %{$fg_bold[$b_col]%}${vcs_info_msg_0_}%(?.%{$fg_bold[$n_tru]%}.%{$fg[$n_fal]%})%# %{$reset_color%}'
PS2='%_ %{$fg_bold[$d_col]%}-> %{$reset_color%}'
else
PS1='%B%F{$d_col}%1~ %F{$b_col}${vcs_info_msg_0_}%(?.%F{$n_tru}.%F{$n_fal})%# %F{white}'
PS2='%_ %B%F{$d_col}-> %F{white}'
fi
}
# print information when user runs 'prompt -h git'
prompt_minimal_vcs_help () {
cat <<EOH
Minimal VCS prompt: displays VCS status right in your prompt.
Works best with a decent terminal title scheme.
Default look:
* $fg_bold[blue]zshkit $fg_bold[yellow]master $fg_bold[blue]%$reset_color
in a directory called zshkit, with the master branch checked out, as a
normal user
* $fg_bold[blue]zshkit $fg_bold[yellow]master $fg_bold[red]%$reset_color
in a directory called zshkit, with the master branch checked out, as a
normal user, where the last command faied
* $fg_bold[blue]~ $fg_bold[blue]#$reset_color
in home directory as a super user.
ATM, the current branch will _not_ be shown coloured.
This prompt is color-scheme-able. You can invoke it thus:
prompt git [colour1 [colour2 [colour3 [colour4]]]]
Colours correspond to:
* working dir 'colour1'
* VCS_info (styled using: zstyle ':vcs_info:*' formats '%b ' etc.), 'colour2'
* % or # sign (dependent on root privaleges) this will be coloured
'colour3' for true 'exit' status and 'colour4' for false.
Defaults are $fg_bold[blue]blue $fg_bold[yellow]yellow $fg_bold[blue]blue $fg_bold[red]red$reset_color - all bold. For best visual effect,
switch off bold chars in your terminal.
EOH
}
prompt_minimal_vcs_setup "$@"