]> arthur.barton.de Git - ax-zsh.git/blob - core/50_prompt/50_prompt.zshrc
a315e663dc86cfb43f51095ab53a1de6b0e826d0
[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 (( $UID == 0 )) \
8         && ZSH_THEME_LOGNAME_PROMPT_PREFIX="%{$fg_no_bold[red]%}" \
9         || ZSH_THEME_LOGNAME_PROMPT_PREFIX=""
10 ZSH_THEME_LOGNAME_PROMPT_SUFFIX="%{$reset_color%}"
11 ZSH_THEME_LOGNAME_PROMPT_SUFFIX_SPACING="@"
12
13 function ax_logname_prompt_root() {
14         (( $UID == 0 )) || return 1
15         return 0
16 }
17
18 function ax_logname_prompt_yn() {
19         local func
20         for func ($ax_logname_prompt_functions); do
21                 $func || continue
22                 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}"
23                 return
24         done
25 }
26
27 ax_logname_prompt_functions=()
28
29 # Hostname
30
31 ZSH_THEME_HOSTNAME_PROMPT_PREFIX_SPACING=""
32 ZSH_THEME_HOSTNAME_PROMPT_PREFIX=""
33 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX="%{$reset_color%}:"
34 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX_SPACING=""
35
36 function ax_hostname_prompt_root() {
37         (( $UID == 0 )) || return 1
38         return 0
39 }
40
41 function ax_hostname_prompt_yn() {
42         local func
43         for func ($ax_hostname_prompt_functions); do
44                 $func || continue
45                 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}"
46                 return
47         done
48 }
49
50 ax_hostname_prompt_functions=()
51
52 # VCS
53
54 ZSH_THEME_VCS_PROMPT_PREFIX_SPACING="("
55 ZSH_THEME_VCS_PROMPT_PREFIX="%{$fg_no_bold[yellow]%}"
56 ZSH_THEME_VCS_PROMPT_SUFFIX="%{$reset_color%}"
57 ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING=")"
58
59 ZSH_THEME_VCS_PROMPT_CLEAN="%{$fg_no_bold[green]%}✔"
60 ZSH_THEME_VCS_PROMPT_DIRTY="%{$fg_no_bold[red]%}✘"
61 ZSH_THEME_VCS_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}→"
62 ZSH_THEME_VCS_PROMPT_BEHIND="%{$fg_no_bold[blue]%}←"
63
64 function ax_vcs_prompt() {
65         local func
66         local p
67         for func ($ax_vcs_prompt_functions); do
68                 p=$( $func ) || continue
69                 echo "${ZSH_THEME_VCS_PROMPT_PREFIX_SPACING}${ZSH_THEME_VCS_PROMPT_PREFIX}${p}${ZSH_THEME_VCS_PROMPT_SUFFIX}${ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING}"
70                 return
71         done
72 }
73
74 ax_vcs_prompt_functions=()
75
76 # Prompt
77
78 ZSH_THEME_PROMPT="$"
79 ZSH_THEME_PROMPT_ROOT="#"
80
81 ZSH_THEME_PROMPT_PREFIX_SPACING=""
82 ZSH_THEME_PROMPT_PREFIX=""
83 ZSH_THEME_PROMPT_ROOT_PREFIX=""
84 ZSH_THEME_PROMPT_SUFFIX=""
85 ZSH_THEME_PROMPT_SUFFIX_SPACING=""
86
87 function ax_prompt() {
88         local p
89         (( $UID == 0 )) \
90                 && p="${ZSH_THEME_PROMPT_ROOT_PREFIX}${ZSH_THEME_PROMPT_ROOT}" \
91                 || p="${ZSH_THEME_PROMPT_PREFIX}${ZSH_THEME_PROMPT}"
92         echo "${ZSH_THEME_PROMPT_PREFIX_SPACING}${p}${ZSH_THEME_PROMPT_SUFFIX}${ZSH_THEME_PROMPT_SUFFIX_SPACING}"
93 }
94
95 # Options and defaults
96
97 setopt PROMPT_SUBST
98
99 export PS1 PS2 PS3 PS4
100 export RPS1 RPS2