-
Notifications
You must be signed in to change notification settings - Fork 2
/
fish_prompt.fish
111 lines (104 loc) · 3.89 KB
/
fish_prompt.fish
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# Based on top of fish's built-in "informative" shell style (see fish_config)
# I actually forgot what it's called exactly
#
# Most is the same. Only thing different is that it:
# - prints leading space because my head is tired from moving to the left in
# internet articles, terminal programs, and prompt
# - changes the suffix to ">"
# - fixes git clean state char
# - makes base name blue
# - print user@hostname in right prompt (see fish_right_prompt)
function fish_prompt --description 'Write out the prompt'
set -l last_pipestatus $pipestatus
if not set -q __fish_git_prompt_show_informative_status
set -g __fish_git_prompt_show_informative_status 1
end
if not set -q __fish_git_prompt_hide_untrackedfiles
set -g __fish_git_prompt_hide_untrackedfiles 1
end
if not set -q __fish_git_prompt_color_branch
set -g __fish_git_prompt_color_branch magenta --bold
end
if not set -q __fish_git_prompt_showupstream
set -g __fish_git_prompt_showupstream "informative"
end
if not set -q __fish_git_prompt_char_upstream_ahead
set -g __fish_git_prompt_char_upstream_ahead "↑"
end
if not set -q __fish_git_prompt_char_upstream_behind
set -g __fish_git_prompt_char_upstream_behind "↓"
end
if not set -q __fish_git_prompt_char_upstream_prefix
set -g __fish_git_prompt_char_upstream_prefix ""
end
if not set -q __fish_git_prompt_char_stagedstate
set -g __fish_git_prompt_char_stagedstate "●"
end
if not set -q __fish_git_prompt_char_dirtystate
set -g __fish_git_prompt_char_dirtystate "✚"
end
if not set -q __fish_git_prompt_char_untrackedfiles
set -g __fish_git_prompt_char_untrackedfiles "…"
end
if not set -q __fish_git_prompt_char_invalidstate
set -g __fish_git_prompt_char_invalidstate "✖"
end
if not set -q __fish_git_prompt_char_cleanstate
# Switch from the check symbol to = because this fixes the width
# calculation problem where where the last char at the right prompt
# will be wrapped to the next line.
# Solution from stack overflow obviously, lost link though
set -g __fish_git_prompt_char_cleanstate "="
end
if not set -q __fish_git_prompt_color_dirtystate
set -g __fish_git_prompt_color_dirtystate blue
end
if not set -q __fish_git_prompt_color_stagedstate
set -g __fish_git_prompt_color_stagedstate yellow
end
if not set -q __fish_git_prompt_color_invalidstate
set -g __fish_git_prompt_color_invalidstate red
end
if not set -q __fish_git_prompt_color_untrackedfiles
set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal
end
if not set -q __fish_git_prompt_color_cleanstate
set -g __fish_git_prompt_color_cleanstate green --bold
end
set -l color_cwd
set -l prefix
set -l suffix
switch "$USER"
case root toor
if set -q fish_color_cwd_root
set color_cwd $fish_color_cwd_root
set color_cwd_base $fish_color_cwd_root
else
set color_cwd $fish_color_cwd
set color_cwd_base blue
end
set suffix ' #'
case '*'
set color_cwd $fish_color_cwd
set color_cwd_base blue
set suffix '>'
end
# NOW we print the prompt :p
# PWD
set wd (prompt_pwd)
set_color $color_cwd
if not [ $wd = '~' ]
# Make basename blue just because
echo -n (dirname $wd)'/'
set_color $color_cwd_base
echo -n (basename $wd)
else
echo -n ' ~'
end
set_color normal
printf '%s' (fish_vcs_prompt)
set -l pipestatus_string (__fish_print_pipestatus "[" "] " "|" (set_color $fish_color_status) (set_color --bold $fish_color_status) $last_pipestatus)
echo -n $pipestatus_string
set_color normal
echo -n "$suffix "
end