diff --git a/prompt.zsh b/prompt.zsh index d2f9d69..a89f145 100644 --- a/prompt.zsh +++ b/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 diff --git a/readme.md b/readme.md index 3aa5d0d..bcd80ff 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # Pure -Minimal and fast ZSH prompt +Pretty, minimal and fast ZSH prompt ![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. -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 -- Download or git submodule it into your dotfiles folder -- In your `.zshrc` add `. prompt.zsh` +- Download `prompt.zsh` or submodule this repo +- In your `.zshrc` add `. path/to/prompt.zsh` - Add your username to the `default_username` variable