summaryrefslogtreecommitdiff
path: root/prompts/prompt_toasty_setup
blob: c10c766728940cf6a04d1725bb87085ed65e6c14 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
setopt promptsubst

autoload -Uz add-zsh-hook
autoload -Uz vcs_info

zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes false
zstyle ':vcs_info:*' actionformats \
    '%B%F{cyan}(%b)%f%%b%c'
zstyle ':vcs_info:*' formats \
    '%B%F{cyan}(%b)%f%%b%c'

# we want to catch unstaged and untracked in one swoop
zstyle ':vcs_info:git*+set-message:*' hooks git-dirty
function +vi-git-dirty {
    if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]]
    then
        if git status --porcelain | grep -Fq -e 'A' -e '??' -e 'M'
        then
            hook_com[staged]+=' %B%F{yellow}✗%f%b '
        else
            hook_com[staged]+=' %B%F{green}✔%f%b '
        fi
    fi
}

add-zsh-hook -Uz precmd vcs_info

PS1='%B%(?.%F{green}.%F{red})→%f%b %B%(!.%F{red}.%F{blue})%1~%f%b ${vcs_info_msg_0_}'
RPS1='%B%F{red}[%n@%m]%f%b'

# vim: ft=zsh