SEGMENT_DATE="%K{249}%F{black} %* %k%f"

if [ $(id -u) -eq 0 ]; then
    SEGMENT_USERNAME_BG=%K{red}
    SEGMENT_USERNAME_FG=%F{white}
    USER_PROMPT="%K{red}%F{011}|%# %f%k"
else
    SEGMENT_USERNAME_BG=%K{031}
    SEGMENT_USERNAME_FG=%F{white}
    USER_PROMPT="%F{245}|%# %f%k"
fi

#SEGMENT_HOSTNAME_BG=%K{020}
#SEGMENT_HOSTNAME_FG=%F{011}
SEGMENT_HOSTNAME_BG=%K{202}
SEGMENT_HOSTNAME_FG=%F{011}
if [ "$SEGMENT_DETECT_SSH" != "" ]; then
    if [ -n "$SSH_CLIENT" ]; then
        SEGMENT_HOSTNAME_BG=%K{202}
        SEGMENT_HOSTNAME_FG=%F{011}
    fi
fi

SEGMENT_RESULT="%B%(?.%K{green}%F{black} OK.%K{red}%F{011} RETURN %?) %f%k%b"
SEGMENT_HOSTNAME="${SEGMENT_HOSTNAME_BG}${SEGMENT_HOSTNAME_FG} @%m %k%f"
SEGMENT_USER_NAME="${SEGMENT_USERNAME_FG}${SEGMENT_USERNAME_BG} %B%n%b %k"
SEGMENT_CURRENT_PATH="%K{242}%F{white} %~ %k%f"

ZSH_THEME_GIT_PROMPT_DIRTY="%F{red}[Dirty]%F{black}"
ZSH_THEME_GIT_PROMPT_CLEAN="%F{green}[Clean]%F{black}"
ZSH_THEME_GIT_PROMPT_ADDED="%F{green}[Added]%F{black}"
ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue}[Modified]%F{black}"
ZSH_THEME_GIT_PROMPT_DELETED="%F{red}[Deleted]%F{black}"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{yellow}[Untracked]%F{black}"
ZSH_THEME_GIT_PROMPT_RENAMED="%F{blue}[Renamed]%F{black}"
ZSH_THEME_GIT_PROMPT_UNMERGED="%F{orange}[Unmerged]%F{black}"
ZSH_THEME_GIT_PROMPT_AHEAD="%F{orange}[Ahead]%F{black}"
ZSH_THEME_GIT_PROMPT_BEHIND="%F{orange}[Behind]%F{black}"
ZSH_THEME_GIT_PROMPT_DIVERGED="%F{orange}[Diverged]%F{black}"

SEGMENT_GIT_INFO_LEFT='$(git_prompt_status)'
if [ $SEGMENT_GIT_INFO_LEFT ]; then
    SEGMENT_GIT_INFO_LEFT="%F{249} $SEGMENT_GIT_INFO_LEFT %k%f"
fi
SEGMENT_GIT_INFO_RIGHT=$'${vcs_info_msg_0_}'

zstyle ':vcs_info:*' formats "(%s)-[%b]%u%c"

ALL_SEGMENTS="${SEGMENT_HOSTNAME}${SEGMENT_USER_NAME}${SEGMENT_CURRENT_PATH}${SEGMENT_GIT_INFO_LEFT}
${USER_PROMPT}"

_lineup=$'\e[1A'
_linedown=$'\e[1B'

RPROMPT="%{${_lineup}%}${SEGMENT_GIT_INFO_RIGHT}${SEGMENT_DATE}${SEGMENT_RESULT}%{${_linedown}%}"

function zle-line-init zle-keymap-select {
    PROMPT="%B"${${KEYMAP/vicmd/%F{022}%K{white} NORMAL %k%f}/(main|viins)/%F{022}%K{154} INSERT %f%k}"%b${ALL_SEGMENTS}"
    zle reset-prompt
}

zle -N zle-line-init
zle -N zle-keymap-select
