From: Sergey Matveev Date: Sun, 13 Feb 2022 13:25:05 +0000 (+0300) Subject: Do not overwrite PS1 every time X-Git-Url: http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff_plain;h=6a00c557dd831561223801b4ed93b9ac48d61d89 Do not overwrite PS1 every time --- diff --git a/zsh/.zsh/rc/015prompt.zsh b/zsh/.zsh/rc/015prompt.zsh index b460fc5..c8a34c1 100644 --- a/zsh/.zsh/rc/015prompt.zsh +++ b/zsh/.zsh/rc/015prompt.zsh @@ -1,17 +1,24 @@ +setopt PROMPT_SUBST + +PS1="%2~ %B" +PS1+='${(j::)psvar}' +PS1+="%(1j.%j.)%b" +PS1+='%U${vcs_info_msg_0_[1,-32]}%u' +PS1+="%(?..%S%?%s)" +PS1+='%(1S.%B${SECONDS}%b.)' +PS1+='%B%F{magenta}${_VIMODE}%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)" - prompt+="%(1S.%U${SECONDS}%u.)" - local state="%#" - [[ ${KEYMAP} == vicmd ]] && state="+" - prompt+="%B%F{magenta}${state}%f%b " - PS1=$prompt + [[ ${KEYMAP} == vicmd ]] && _VIMODE="+" || _VIMODE="%#" + [[ "$#_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) + } zle reset-prompt } + zle -N zle-line-init zle -N zle-keymap-select