Created
March 19, 2013 06:25
-
-
Save Zolmeister/5194090 to your computer and use it in GitHub Desktop.
Zolmeister zsh theme
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
# vim:ft=zsh ts=2 sw=2 sts=2 | |
# Zolmeister zsh theme | |
### Segment drawing | |
# A few utility functions to make it easy and re-usable to draw segmented prompts | |
CURRENT_BG='NONE' | |
SEGMENT_SEPARATOR='' | |
# Begin a segment | |
# Takes two arguments, background and foreground. Both can be omitted, | |
# rendering default background/foreground. | |
prompt_segment() { | |
local bg fg | |
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n "%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%}" | |
else | |
echo -n "%{$bg%}%{$fg%}" | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && echo -n $3 | |
} | |
# End the prompt, closing any open segments | |
prompt_end() { | |
if [[ -n $CURRENT_BG ]]; then | |
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" | |
else | |
echo -n "%{%k%}" | |
fi | |
echo -n "%{%f%}" | |
CURRENT_BG='' | |
} | |
### Prompt components | |
# Each component will draw itself, and hide itself if no information needs to be shown | |
# Context: user@hostname (who am I and where am I) | |
prompt_context() { | |
local user=`whoami` | |
if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then | |
prompt_segment NONE default "$user@%m " | |
fi | |
} | |
# Git: branch/detached head, dirty status | |
prompt_git() { | |
local ref dirty | |
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then | |
ZSH_THEME_GIT_PROMPT_DIRTY='±' | |
dirty=$(parse_git_dirty) | |
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="$(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" | |
prompt_segment NONE green | |
echo -n "${ref/refs\/heads\// }$dirty" | |
fi | |
} | |
# Dir: current working directory | |
prompt_dir() { | |
prompt_segment NONE blue '%~$' | |
} | |
## Main prompt | |
build_prompt() { | |
RETVAL=$? | |
prompt_context | |
prompt_dir | |
prompt_git | |
prompt_end | |
} | |
PROMPT='%{%f%b%k%}$(build_prompt)' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment