Add superfast way to detect if the branch is dirty

This commit is contained in:
Sindre Sorhus
2012-09-20 21:30:33 +02:00
parent 62852d7fd1
commit 3c9b554154
2 changed files with 33 additions and 10 deletions

View File

@@ -3,19 +3,42 @@
# https://github.com/sindresorhus/pure/
# MIT License
# Change this to your own username
local default_username='sindresorhus'
# For my own and others sanity
# git:
# %b => current branch
# %a => current action (rebase/merge)
# prompt:
# %F => color dict
# %f => reset color
# %~ => current path
# %* => time
# %n => username
# %m => shortname host
# %(?..) => prompt conditional - %(condition.true.false)
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git # You can add hg too if needed: `git hg`
zstyle ':vcs_info:git*' formats ' %b'
zstyle ':vcs_info:git*' actionformats ' %b|%a'
# Only show username if not default
username() {
if [ $USER != $default_username ]; then echo '%n@%m '; fi
[ $USER != $default_username ] && local username='%n@%m '
# Fastest possible way to check if repo is dirty
git_dirty() {
git diff --quiet --ignore-submodules HEAD 2>/dev/null; [ $? -eq 1 ] && echo '*'
}
git_branch() {
echo `git symbolic-ref --short -q HEAD 2>/dev/null`
}
precmd() {
print -P '\n%F{blue}%~%f %F{236}`git_branch` `username`%*%f'
vcs_info
# Remove `%*` to hide the time
print -P '\n%F{blue}%~%F{236}$vcs_info_msg_0_ $username%*%f'
}
# Turns the prompt red if the last command exited with 0