Skip to content

Instantly share code, notes, and snippets.

@paulirish
Created October 15, 2012 22:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulirish/9e4f4673a3aa1610dc52 to your computer and use it in GitHub Desktop.
Save paulirish/9e4f4673a3aa1610dc52 to your computer and use it in GitHub Desktop.
# Pure
# by Sindre Sorhus
# 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
[ $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 '*'
}
preexec() {
export PREEXEC_TIME=$(date +'%s')
}
precmd() {
local stop=$(date +'%s')
local start=${PREEXEC_TIME:-$stop}
let elapsed=$stop-$start
let max=5
local cmd_time=`[ $elapsed -gt $max ] && echo ${elapsed}sec`
vcs_info
# Remove `%*` to hide the time
print -P '\n%F{blue}%~%F{236}$vcs_info_msg_0_`git_dirty` $username%*%f $cmd_time'
}
# Turns the prompt red if the last command exited with 0
PROMPT='%(?.%F{magenta}.%F{red})❯%f '
# Can be disabled:
# PROMPT='%F{magenta}❯%f '
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment