-
-
Save paulirish/9e4f4673a3aa1610dc52 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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