]> arthur.barton.de Git - ax-zsh.git/blobdiff - core/50_prompt/50_prompt.zshrc
50_prompt: Implement some common functions as "dummies"
[ax-zsh.git] / core / 50_prompt / 50_prompt.zshrc
index 5dc89d93c37f8460e3543fe4657d908b846266d8..5869f060826af3d7e90f400355a1636574014ab0 100644 (file)
 # AX-ZSH: Alex' Modular ZSH Configuration
 # 50_prompt.zshrc: Setup default prompts
 
+# Some dummy functions (used by some OhMyZsh themes, for example) ...
+git_prompt_info(){ true; }
+git_prompt_status(){ true; }
+rvm_prompt_info(){ true; }
+
 # Logname ("user name")
 
-(( $UID == 0 )) \
-       && ZSH_THEME_LOGNAME_PROMPT_PREFIX="%{$fg_no_bold[red]%}" \
-       || ZSH_THEME_LOGNAME_PROMPT_PREFIX=""
-ZSH_THEME_LOGNAME_PROMPT_SUFFIX="%{$reset_color%}@"
+ZSH_THEME_LOGNAME_PROMPT_PREFIX_SPACING=""
+if (( $UID == 0 )); then
+       ZSH_THEME_LOGNAME_PROMPT_PREFIX="%{$fg_no_bold[red]%}" \
+       ZSH_THEME_LOGNAME_PROMPT_SUFFIX="%{$reset_color%}"
+else
+       ZSH_THEME_LOGNAME_PROMPT_PREFIX=""
+       ZSH_THEME_LOGNAME_PROMPT_SUFFIX=""
+fi
+ZSH_THEME_LOGNAME_PROMPT_SUFFIX_SPACING="@"
 
 function ax_logname_prompt_root() {
        (( $UID == 0 )) || return 1
-       echo "$LOGNAME"
        return 0
 }
 
-ax_logname_prompt_functions=($ax_logname_prompt_functions ax_logname_prompt_root)
-
-function ax_logname_prompt() {
+function ax_logname_prompt_yn() {
        local func
-       local p
        for func ($ax_logname_prompt_functions); do
-               p=$( $func ) || continue
-               echo "${ZSH_THEME_LOGNAME_PROMPT_PREFIX}${p}${ZSH_THEME_LOGNAME_PROMPT_SUFFIX}"
+               $func || continue
+               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}"
                return
        done
 }
 
+ax_logname_prompt_functions=(ax_logname_prompt_root)
+
 # Hostname
 
+ZSH_THEME_HOSTNAME_PROMPT_PREFIX_SPACING=""
 ZSH_THEME_HOSTNAME_PROMPT_PREFIX=""
-ZSH_THEME_HOSTNAME_PROMPT_SUFFIX="%{$reset_color%}:"
+ZSH_THEME_HOSTNAME_PROMPT_SUFFIX=""
+ZSH_THEME_HOSTNAME_PROMPT_SUFFIX_SPACING=":"
 
 function ax_hostname_prompt_root() {
        (( $UID == 0 )) || return 1
-       echo "$SHORT_HOST"
        return 0
 }
 
-ax_hostname_prompt_functions=($ax_hostname_prompt_functions ax_hostname_prompt_root)
-
-function ax_hostname_prompt() {
+function ax_hostname_prompt_yn() {
        local func
-       local p
        for func ($ax_hostname_prompt_functions); do
-               p=$( $func ) || continue
-               echo "${ZSH_THEME_HOSTNAME_PROMPT_PREFIX}${p}${ZSH_THEME_HOSTNAME_PROMPT_SUFFIX}"
+               $func || continue
+               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}"
                return
        done
 }
 
+ax_hostname_prompt_functions=()
+
 # VCS
 
-ZSH_THEME_VCS_PROMPT_PREFIX="(%{$fg_no_bold[yellow]%}"
-ZSH_THEME_VCS_PROMPT_SUFFIX="%{$reset_color%}) "
+if axzsh_is_utf_terminal; then
+       clean="✔"; dirty="✘"; ahead="→"; behind="←"
+else
+       clean="+"; dirty="x"; ahead=">"; behind="<"
+fi
+
+ZSH_THEME_VCS_PROMPT_PREFIX_SPACING="("
+ZSH_THEME_VCS_PROMPT_PREFIX="%{$fg_no_bold[yellow]%}"
+ZSH_THEME_VCS_PROMPT_SUFFIX="%{$reset_color%}"
+ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING=")"
 
-ZSH_THEME_VCS_PROMPT_CLEAN="%{$fg_no_bold[green]%}✔"
-ZSH_THEME_VCS_PROMPT_DIRTY="%{$fg_no_bold[red]%}✘"
-ZSH_THEME_VCS_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}→"
-ZSH_THEME_VCS_PROMPT_BEHIND="%{$fg_no_bold[blue]%}←"
+ZSH_THEME_VCS_PROMPT_CLEAN=" %{$fg_no_bold[green]%}$clean"
+ZSH_THEME_VCS_PROMPT_DIRTY=" %{$fg_no_bold[red]%}$dirty"
+ZSH_THEME_VCS_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}$ahead"
+ZSH_THEME_VCS_PROMPT_BEHIND="%{$fg_no_bold[blue]%}$behind"
+
+unset clean dirty ahead behind
 
 function ax_vcs_prompt() {
        local func
        local p
        for func ($ax_vcs_prompt_functions); do
                p=$( $func ) || continue
-               echo "${ZSH_THEME_VCS_PROMPT_PREFIX}${p}${ZSH_THEME_VCS_PROMPT_SUFFIX}"
+               echo "${ZSH_THEME_VCS_PROMPT_PREFIX_SPACING}${ZSH_THEME_VCS_PROMPT_PREFIX}${p}${ZSH_THEME_VCS_PROMPT_SUFFIX}${ZSH_THEME_VCS_PROMPT_SUFFIX_SPACING}"
                return
        done
 }
 
+ax_vcs_prompt_functions=()
+
+# Prompt
+
+ZSH_THEME_PROMPT="$"
+ZSH_THEME_PROMPT_ROOT="#"
+
+ZSH_THEME_PROMPT_PREFIX_SPACING=""
+ZSH_THEME_PROMPT_PREFIX=""
+ZSH_THEME_PROMPT_ROOT_PREFIX=""
+ZSH_THEME_PROMPT_SUFFIX=""
+ZSH_THEME_PROMPT_SUFFIX_SPACING=""
+
+function ax_prompt() {
+       local p
+       (( $UID == 0 )) \
+               && p="${ZSH_THEME_PROMPT_ROOT_PREFIX}${ZSH_THEME_PROMPT_ROOT}" \
+               || p="${ZSH_THEME_PROMPT_PREFIX}${ZSH_THEME_PROMPT}"
+       echo "${ZSH_THEME_PROMPT_PREFIX_SPACING}${p}${ZSH_THEME_PROMPT_SUFFIX}${ZSH_THEME_PROMPT_SUFFIX_SPACING}"
+}
+
 # Options and defaults
 
 setopt PROMPT_SUBST
-
-export PS1 RPS1