Add superfast way to detect if the branch is dirty
This commit is contained in:
35
prompt.zsh
35
prompt.zsh
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user