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/ # https://github.com/sindresorhus/pure/
# MIT License # MIT License
# Change this to your own username
local default_username='sindresorhus' 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 # Only show username if not default
username() { [ $USER != $default_username ] && local username='%n@%m '
if [ $USER != $default_username ]; then echo '%n@%m '; fi
# 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() { 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 # Turns the prompt red if the last command exited with 0

View File

@@ -1,6 +1,6 @@
# Pure # Pure
Minimal and fast ZSH prompt Pretty, minimal and fast ZSH prompt
![screenshot](https://raw.github.com/sindresorhus/pure/master/screenshot.png) ![screenshot](https://raw.github.com/sindresorhus/pure/master/screenshot.png)
@@ -8,13 +8,13 @@ Minimal and fast ZSH prompt
Most prompts are ugly, cluttered and slow. I wanted something visually pleasing that stayed out of my way. Most prompts are ugly, cluttered and slow. I wanted something visually pleasing that stayed out of my way.
Pure only shows the current user if it's not the default. It shows the current git branch, but not dirty status since that is awfully slow. And the prompt symbol turns red if the last command exited with 0. Pure only shows the current user if it's not the default. It shows the current git branch and if it's dirty using the fastest method possible. And the prompt symbol turns red if the last command exited with 0.
## Getting Started ## Getting Started
- Download or git submodule it into your dotfiles folder - Download `prompt.zsh` or submodule this repo
- In your `.zshrc` add `. prompt.zsh` - In your `.zshrc` add `. path/to/prompt.zsh`
- Add your username to the `default_username` variable - Add your username to the `default_username` variable