# vim: ft=zsh NOCOLOR="" PURPLE="" YELLOW="" GREEN="" BOLDYELLOW="" BOLDRED="" BOLDGREEN="" typeset -A modecolor modecolor[emacs]=$BOLDYELLOW modecolor[viins]=$BOLDYELLOW modecolor[main]=$BOLDYELLOW modecolor[vicmd]=$PURPLE modecolor[viopp]=$BOLDYELLOW modecolor[visual]=$YELLOW modecolor[isearch]=$BOLDRED modecolor[command]=$BOLDGREEN modecolor[.safe]=$BOLDYELLOW function update-prompt-color { MODE=$2 [ -z "$MODE" ] && MODE=$KEYMAP [ -z "$MODE" ] && MODE=main COLOR="${modecolor[$MODE]}" [ "$MODE" = "main" ] && INDICATOR='+' || INDICATOR=' ' PS1="%{$COLOR%}[$INDICATOR] %~%# %{$NOCOLOR%}" [ -n "$VIRTUAL_ENV" -a ! "$(basename "$VIRTUAL_ENV")" = "default" ] && VENV_STRING="%{$GREEN%}($(basename $VIRTUAL_ENV))" || VENV_STRING= USER_STRING="%{$PURPLE%}%n@%m" #USER_STRING="%{$PURPLE%}rhelmot@%m" TIME_STRING="%{$PURPLE%}[%{$YELLOW%}%D{%r}%{$PURPLE%}]" RPS1="$VENV_STRING $USER_STRING $TIME_STRING%{$NOCOLOR%}" zle && zle reset-prompt } function neutral-prompt-color { update-prompt-color dummy main } zle -N zle-line-init update-prompt-color zle -N zle-keymap-select update-prompt-color zle -N zle-line-finish neutral-prompt-color update-prompt-color