]> arthur.barton.de Git - ax-zsh.git/blob - core/40_prompt/40_prompt.zshrc
30_env.ax-io: Try to be even more clever when setting TMPDIR
[ax-zsh.git] / core / 40_prompt / 40_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 axzsh_logname_prompt_root() {
22         (( $UID == 0 )) || return 1
23         return 0
24 }
25
26 function axzsh_logname_prompt_yn() {
27         local func
28         for func ($axzsh_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 # Hostname
36
37 ZSH_THEME_HOSTNAME_PROMPT_PREFIX_SPACING=""
38 ZSH_THEME_HOSTNAME_PROMPT_PREFIX=""
39 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX=""
40 ZSH_THEME_HOSTNAME_PROMPT_SUFFIX_SPACING=":"
41
42 function axzsh_hostname_prompt_root() {
43         (( $UID == 0 )) || return 1
44         return 0
45 }
46
47 function axzsh_hostname_prompt_yn() {
48         local func
49         for func ($axzsh_hostname_prompt_functions); do
50                 $func || continue
51                 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}"
52                 return
53         done
54 }
55
56 axzsh_hostname_prompt_functions=()
57
58 # VCS
59
60 if axzsh_is_utf_terminal; then
61         clean="✔"; dirty="✘"; ahead="→"; behind="←"
62 else
63         clean="+"; dirty="x"; ahead=">"; behind="<"
64 fi
65
66 ZSH_THEME_VCS_PROMPT_PREFIX_SPACING="("
67 ZSH_THEME_VCS_PROMPT_PREFIX="%{$fg_no_bold[yellow]%}"
68 ZSH_THEME_VCS_PROMPT_SUFFIX="%{$fg[default]%}"
69 ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING=")"
70
71 ZSH_THEME_VCS_PROMPT_CLEAN=" %{$fg_no_bold[green]%}$clean%{$fg[default]%}"
72 ZSH_THEME_VCS_PROMPT_DIRTY=" %{$fg_no_bold[red]%}$dirty%{$fg[default]%}"
73 ZSH_THEME_VCS_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}$ahead%{$fg[default]%}"
74 ZSH_THEME_VCS_PROMPT_BEHIND="%{$fg_no_bold[blue]%}$behind%{$fg[default]%}"
75
76 unset clean dirty ahead behind
77
78 function axzsh_vcs_prompt() {
79         local func
80         local p
81         for func ($axzsh_vcs_prompt_functions); do
82                 p=$( $func ) || continue
83                 echo "${ZSH_THEME_VCS_PROMPT_PREFIX_SPACING}${p}${ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING}"
84                 return
85         done
86 }
87
88 axzsh_vcs_prompt_functions=()
89
90 # Prompt
91
92 ZSH_THEME_PROMPT="$"
93 ZSH_THEME_PROMPT_ROOT="#"
94
95 ZSH_THEME_PROMPT_PREFIX_SPACING=""
96 ZSH_THEME_PROMPT_PREFIX=""
97 ZSH_THEME_PROMPT_ROOT_PREFIX=""
98 ZSH_THEME_PROMPT_SUFFIX=""
99 ZSH_THEME_PROMPT_SUFFIX_SPACING=""
100
101 function axzsh_prompt() {
102         local p
103         (( $UID == 0 )) \
104                 && p="${ZSH_THEME_PROMPT_ROOT_PREFIX}${ZSH_THEME_PROMPT_ROOT}" \
105                 || p="${ZSH_THEME_PROMPT_PREFIX}${ZSH_THEME_PROMPT}"
106         echo "${ZSH_THEME_PROMPT_PREFIX_SPACING}${p}${ZSH_THEME_PROMPT_SUFFIX}${ZSH_THEME_PROMPT_SUFFIX_SPACING}"
107 }
108
109 # Options and defaults
110
111 setopt PROMPT_SUBST