]> git.armaanb.net Git - admone.git/blob - admone.zsh
739e78f0fb819b591e1dd63b3c014ee57fdcbf69
[admone.git] / admone.zsh
1 # Admone Zsh prompt
2 # Copyright Armaan Bhojwani 2021 <me@armaanb.net>
3 # MIT licensed, see the LICENSE file for more information.
4
5 PROMPT_CHAR="➤"
6
7 zstyle ':vcs_info:git:*' formats '%b%u%c'
8 zstyle ':vcs_info:git:*' actionformats '%b|%a%u%c'
9 zstyle ':vcs_info:*' unstagedstr ' *'
10 zstyle ':vcs_info:*' stagedstr ' +'
11
12 ################################################################################
13
14 # Cursor shape depends on vi mode
15 function zle-keymap-select zle-line-init zle-line-finish {
16   case $KEYMAP in
17     vicmd)
18       # Block
19       print -n -- "\E]50;CursorShape=0\C-G"
20       ;;
21     viins|main)
22       # Beam
23       print -n -- "\E]50;CursorShape=1\C-G"
24       ;;
25   esac
26   # zle reset-prompt
27   zle -R
28 }
29
30 # Set everything!
31 set-prompt() {
32   PROMPT="%B%F{%(?.cyan.red)}${PROMPT_CHAR}%f%b "
33   RPROMPT="[%F{blue}%~%f]"
34   RPROMPT+="[%F{green}${vcs_info_msg_0_}%f]"
35   RPROMPT+="[%(?,%F{cyan}%?%f,%F{red}%?%f)]"
36
37   [[ -v PS1_NL ]] && echo || PS1_NL=
38 }
39
40 zstyle ':vcs_info:*' check-for-changes true
41 autoload -Uz add-zsh-hook vcs-info
42 add-zsh-hook precmd vcs_info
43 add-zsh-hook precmd set-prompt
44
45 zle -N zle-line-init
46 zle -N zle-line-finish
47 zle -N zle-keymap-select