]> git.armaanb.net Git - admone.git/blob - admone.zsh
Combine VCS and PWD
[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 '%f|%F{green}%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}%~${vcs_info_msg_0_}%f][%(?,%F{cyan}%?,%F{red}%?)%f]"
34
35   [[ -v PS1_NL ]] && echo || PS1_NL=
36 }
37
38 zstyle ':vcs_info:*' check-for-changes true
39 autoload -Uz add-zsh-hook vcs-info
40 add-zsh-hook precmd vcs_info
41 add-zsh-hook precmd set-prompt
42
43 zle -N zle-line-init
44 zle -N zle-line-finish
45 zle -N zle-keymap-select