Files
dotfiles/zsh/prompt.zsh
2013-09-12 16:14:33 -05:00

69 lines
1.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# heavily inspired by the wonderful pure theme
# https://github.com/sindresorhus/pure
# 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'
autoload colors && colors
git_dirty() {
# check if we're in a git repo
command git rev-parse --is-inside-work-tree &>/dev/null || return
# check if it's dirty
command git diff --quiet --ignore-submodules HEAD &>/dev/null;
if [[ $? -eq 1 ]]; then
echo "%F{red}✗%f"
else
echo "%F{green}✔%f"
fi
}
git_prompt_info() {
ref=$(/usr/bin/git symbolic-ref HEAD 2>/dev/null) || return
# echo "(%{\e[0;33m%}${ref#refs/heads/}%{\e[0m%})"
echo "${ref#refs/heads/}"
}
needs_push() {
if [[ $(git cherry -v @{upstream} 2>/dev/null) == "" ]]
then
echo ""
else
echo "%{$fg_bold[magenta]%}☁%{$reset_color%} "
fi
}
# indicate a job (for example, vim) has been backgrounded
suspended_jobs() {
sj=$(jobs 2>/dev/null | tail -n 1)
if [[ $sj == "" ]]; then
echo ""
else
echo "%{$FG[208]%}✱%{$reset_color%}"
fi
}
precmd() {
vcs_info
print -P '\n%F{013}%~'
}
export PROMPT='%(?.%F{magenta}.%F{red})%f '
export RPROMPT='`git_dirty`%F{241}$vcs_info_msg_0_%f `needs_push``suspended_jobs`'