]> Sergey Matveev's repositories - dotfiles.git/blobdiff - zsh/.zsh/rc/015prompt.zsh
Change cursor's colour based on vi-mode
[dotfiles.git] / zsh / .zsh / rc / 015prompt.zsh
index cdbd0faac9423679640101f2b9524cd53640000e..d119a19739111722f47f0832007a5c53a6e739eb 100644 (file)
@@ -1,21 +1,34 @@
+setopt PROMPT_SUBST
+
+PS1="%2~ %B"
+PS1+='${(j::)psvar}'
+PS1+="%(1j.%j.)%b"
+PS1+='%U${vcs_info_msg_0_}%u'
+PS1+="%(?.. %S%?%s)"
+PS1+='%(1S. %B${SECONDS}%b.)'
+PS1+='%B%F{magenta}%#%f%b '
+
 function zle-line-init zle-keymap-select {
-    local state="%#" timer_val="?"
-    [[ ${KEYMAP} == vicmd ]] && state="+"
-    [[ $timer ]] && timer_val=$(( $SECONDS - $timer ))
-    prompt="%2~ "
-    prompt+="%U${timer_val}%u|"
-    prompt+="%B%?%b"
-    prompt+="%B%F{magenta}${state}%f%b "
-    PS1=$prompt
+    printf "\e]12;"
+    [[ ${KEYMAP} == vicmd ]] && printf "red" || printf "green"
+    printf "\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)
+    }
     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
 }