X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=zsh%2F.zsh%2Frc%2F015prompt.zsh;h=9a6219ac2396cdc9e7160f3c8e3e4f5c62fb8185;hb=0e026879717deecd27b7797736321a6bdce03505;hp=3ffbab91d8b47120830fe74843207f75e7693564;hpb=9e0a9b2f9d90cf0846f4719b03bde806c301543c;p=dotfiles.git diff --git a/zsh/.zsh/rc/015prompt.zsh b/zsh/.zsh/rc/015prompt.zsh index 3ffbab9..9a6219a 100644 --- a/zsh/.zsh/rc/015prompt.zsh +++ b/zsh/.zsh/rc/015prompt.zsh @@ -1,28 +1,40 @@ +setopt PROMPT_SUBST + +PROMPT="%2~ %B" +# A: autoenv +# V: virtualenv +# M: laxed umask +PROMPT+='${(j::)psvar}' +PROMPT+="%(1j.%j.)%b" +PROMPT+='%U${vcs_info_msg_0_}%u' +PROMPT+="%(?.. %S%?%s)" +PROMPT+='%(1S. %B${SECONDS}%b.)' +PROMPT+='%B%F{magenta}%#%f%b ' + function zle-line-init zle-keymap-select { - prompt="%2~ %B" - [[ "$#_autoenv_stack_entered" -gt 0 ]] && prompt+="A" - [[ -n "$VIRTUAL_ENV" ]] && prompt+="V" - prompt+="%(1j.%j.)%b" - prompt+="%U${vcs_info_msg_0_[1,-32]}%u" - prompt+="%(?..%S%?%s)" - [[ $timer ]] && { - local val=$(( $SECONDS - $timer )) - [[ $val -gt 0 ]] && prompt+="%U${val}%u" + local ccolour=red + [[ ${KEYMAP} == vicmd ]] || ccolour=green + printf "\e]12;${ccolour}\e\\" + [[ "$#_autoenv_stack_entered" -eq 0 ]] && psvar=(${psvar#A}) || { + [[ -n "${psvar[(r)A]}" ]] || psvar=(A $psvar) + } + [[ -z "$VIRTUAL_ENV" ]] && psvar=(${psvar#V}) || { + [[ -n "${psvar[(r)V]}" ]] || psvar=(V $psvar) + } + [[ `umask` == "077" ]] && psvar=(${psvar#M}) || { + [[ -n "${psvar[(r)M]}" ]] || psvar=("M" $psvar) } - local state="%#" - [[ ${KEYMAP} == vicmd ]] && state="+" - prompt+="%B%F{magenta}${state}%f%b " - PS1=$prompt zle reset-prompt } + zle -N zle-line-init zle -N zle-keymap-select preexec() { - timer=$SECONDS + SECONDS=0 } precmd() { - printf "\a\033]2;\033\\" + printf "\a\e]2;\e\\" vcs_info }