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