2 # Copyright Armaan Bhojwani 2020 <code@armaanb.net>
3 # MIT licensed, see the LICENSE file for more information.
4 # Git repo at <https://codeberg.org/armaan/admone>
6 #######################################################################
8 #######################################################################
28 INCLUDE="admone-pwd;admone-vcs;admone-exit-code"
29 FORMAT_LOWER="%B%F{%(?.cyan.red)}"
31 TRANSIENT_PROMPT="0" # This is buggy
33 FORMAT_SHORT="%B%F{%(?.cyan.red)}"
35 zstyle ':vcs_info:git:*' formats '%b%u%c'
36 zstyle ':vcs_info:git:*' actionformats '%b|%a%u%c'
37 zstyle ':vcs_info:*' unstagedstr ' *'
38 zstyle ':vcs_info:*' stagedstr ' +'
40 #######################################################################
42 #######################################################################
48 echo "%F{green}${vcs_info_msg_0_}%f"
51 ([[ $SHOW_0_EXIT_CODE == "1" ]] && echo "%(?,%F{cyan}%?%f,%F{red}%?%f)") ||
52 echo "%(?,,%F{red}%?%f)"
63 # Intergration with https://codeberg.org/armaan/zsh-command-time
65 echo "%F{cyan}$timer_show%f"
68 #######################################################################
70 #######################################################################
72 # Cursor shape depends on vi mode
73 function zle-keymap-select zle-line-init zle-line-finish {
77 print -n -- "\E]50;CursorShape=0\C-G"
81 print -n -- "\E]50;CursorShape=1\C-G"
91 lower="${PRE_LOWER}${FORMAT_LOWER}${PROMPT_CHAR}%f%b "
93 # Add in functions as defined above
94 NUM_FUNCS="$(echo $INCLUDE | grep -o ';' | wc -l)"
96 THE_COMMAND="$(echo $INCLUDE | cut -d ';' -f 1)"
97 upper+="$BLOCK_LEFT$($THE_COMMAND)$BLOCK_RIGHT"
99 for (( i = 0; i < $NUM_FUNCS; i++ )); do
100 THE_COMMAND="$(echo $INCLUDE | cut -d ';' -f $(($i + 2)))"
101 upper+="$BLOCK_SEPARATOR$BLOCK_LEFT$($THE_COMMAND)$BLOCK_RIGHT"
105 [[ -v PS1_NL ]] && echo || PS1_NL=
107 PROMPT=$upper$'\n'$lower
112 if [[ $TRANSIENT_PROMPT == "1" ]]; then
113 SHORT_PROMPT=$FORMAT_SHORT$SHORT_PROMPT' '%f%b
115 set-transient-prompt() {
116 if [[ $PROMPT != $SHORT_PROMPT ]]; then
126 trap 'set-transient-prompt; return 130' INT
129 if [[ ! $(echo $INCLUDE | grep -q "vcs") ]]; then
130 zstyle ':vcs_info:*' check-for-changes true
131 autoload -Uz add-zsh-hook vcs-info
132 add-zsh-hook precmd vcs_info
135 autoload -Uz add-zsh-hook
136 add-zsh-hook precmd set-prompt
139 zle -N zle-line-finish
140 zle -N zle-keymap-select