]> arthur.barton.de Git - ax-zsh.git/blob - core/50_prompt/50_prompt.zshrc
bda0216e7aea890bc399d3fede694d721b5e5860
[ax-zsh.git] / core / 50_prompt / 50_prompt.zshrc
1 # AX-ZSH: Alex' Modular ZSH Configuration
2 # 50_prompt.zshrc: Setup default prompts
3
4 # Logname ("user name")
5
6 ZSH_THEME_LOGNAME_PROMPT_PREFIX_SPACING=""
7 if (( $UID == 0 )); then
8         ZSH_THEME_LOGNAME_PROMPT_PREFIX="%{$fg_no_bold[red]%}" \
9         ZSH_THEME_LOGNAME_PROMPT_SUFFIX="%{$reset_color%}"
10 else
11         ZSH_THEME_LOGNAME_PROMPT_PREFIX=""
12         ZSH_THEME_LOGNAME_PROMPT_SUFFIX=""
13 fi
14 ZSH_THEME_LOGNAME_PROMPT_SUFFIX_SPACING="@"
15
16 function ax_logname_prompt_root() {
17         (( $UID == 0 )) || return 1
18         return 0
19 }
20
21 function ax_logname_prompt_yn() {
22         local func
23         for func ($ax_logname_prompt_functions); do
24                 $func || continue
25                 echo "${ZSH_THEME_LOGNAME_PROMPT_PREFIX_SPACING}${ZSH_THEME_LOGNAME_PROMPT_PREFIX}${1:-$LOGNAME}${ZSH_THEME_LOGNAME_PROMPT_SUFFIX}${ZSH_THEME_LOGNAME_PROMPT_SUFFIX_SPACING}"
26                 return
27         done
28 }
29
30 ax_logname_prompt_functions=(ax_logname_prompt_root)
31
32 # Hostname
33
34 ZSH_THEME_HOSTNAME_PROMPT_PREFIX_SPACING=""
35 ZSH_THEME_HOSTNAME_PROMPT_PREFIX=""
36 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX=""
37 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX_SPACING=":"
38
39 function ax_hostname_prompt_root() {
40         (( $UID == 0 )) || return 1
41         return 0
42 }
43
44 function ax_hostname_prompt_yn() {
45         local func
46         for func ($ax_hostname_prompt_functions); do
47                 $func || continue
48                 echo "${ZSH_THEME_HOSTNAME_PROMPT_PREFIX_SPACING}${ZSH_THEME_HOSTNAME_PROMPT_PREFIX}${1:-$SHORT_HOST}${ZSH_THEME_HOSTNAME_PROMPT_SUFFIX}${ZSH_THEME_HOSTNAME_PROMPT_SUFFIX_SPACING}"
49                 return
50         done
51 }
52
53 ax_hostname_prompt_functions=()
54
55 # VCS
56
57 if axzsh_is_utf_terminal; then
58         ZSH_THEME_BULLET_VCS_CLEAN="✔"
59         ZSH_THEME_BULLET_VCS_DIRTY="✘"
60         ZSH_THEME_BULLET_VCS_AHEAD="→"
61         ZSH_THEME_BULLET_VCS_BEHIND="←"
62 else
63         ZSH_THEME_BULLET_VCS_CLEAN="+"
64         ZSH_THEME_BULLET_VCS_DIRTY="X"
65         ZSH_THEME_BULLET_VCS_AHEAD=">"
66         ZSH_THEME_BULLET_VCS_BEHIND="<"
67 fi
68
69 ZSH_THEME_VCS_PROMPT_PREFIX_SPACING="("
70 ZSH_THEME_VCS_PROMPT_PREFIX="%{$fg_no_bold[yellow]%}"
71 ZSH_THEME_VCS_PROMPT_SUFFIX="%{$reset_color%}"
72 ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING=")"
73
74 ZSH_THEME_VCS_PROMPT_CLEAN=" %{$fg_no_bold[green]%}${ZSH_THEME_BULLET_VCS_CLEAN}"
75 ZSH_THEME_VCS_PROMPT_DIRTY=" %{$fg_no_bold[red]%}${ZSH_THEME_BULLET_VCS_DIRTY}"
76 ZSH_THEME_VCS_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}${ZSH_THEME_BULLET_VCS_AHEAD}"
77 ZSH_THEME_VCS_PROMPT_BEHIND="%{$fg_no_bold[blue]%}${ZSH_THEME_BULLET_VCS_BEHIND}"
78
79 function ax_vcs_prompt() {
80         local func
81         local p
82         for func ($ax_vcs_prompt_functions); do
83                 p=$( $func ) || continue
84                 echo "${ZSH_THEME_VCS_PROMPT_PREFIX_SPACING}${ZSH_THEME_VCS_PROMPT_PREFIX}${p}${ZSH_THEME_VCS_PROMPT_SUFFIX}${ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING}"
85                 return
86         done
87 }
88
89 ax_vcs_prompt_functions=()
90
91 # Prompt
92
93 ZSH_THEME_PROMPT="$"
94 ZSH_THEME_PROMPT_ROOT="#"
95
96 ZSH_THEME_PROMPT_PREFIX_SPACING=""
97 ZSH_THEME_PROMPT_PREFIX=""
98 ZSH_THEME_PROMPT_ROOT_PREFIX=""
99 ZSH_THEME_PROMPT_SUFFIX=""
100 ZSH_THEME_PROMPT_SUFFIX_SPACING=""
101
102 function ax_prompt() {
103         local p
104         (( $UID == 0 )) \
105                 && p="${ZSH_THEME_PROMPT_ROOT_PREFIX}${ZSH_THEME_PROMPT_ROOT}" \
106                 || p="${ZSH_THEME_PROMPT_PREFIX}${ZSH_THEME_PROMPT}"
107         echo "${ZSH_THEME_PROMPT_PREFIX_SPACING}${p}${ZSH_THEME_PROMPT_SUFFIX}${ZSH_THEME_PROMPT_SUFFIX_SPACING}"
108 }
109
110 # Options and defaults
111
112 setopt PROMPT_SUBST