Skip to content

Instantly share code, notes, and snippets.

@nelanka
Last active August 24, 2016 22:45
Show Gist options
  • Save nelanka/a8a9ff586958853cb3bb to your computer and use it in GitHub Desktop.
Save nelanka/a8a9ff586958853cb3bb to your computer and use it in GitHub Desktop.
My Zsh Theme
# ~/.oh-my-zsh/themes/nelanka.zsh-theme
# Nelanka's Oh My Zsh Theme
# Characters
SEGMENT_SEPARATOR="\ue0b0" # 
PLUSMINUS="\u00b1" # ±
BRANCH="\ue0a0" # 
DETACHED="\u27a6" # ➦
CROSS="\u2718" # ✘
LIGHTNING="\u26a1" # ⚡
GEAR="\u2699" # ⚙
# End the prompt, closing any open segments
prompt_end() {
print -n "%{%F{default}%}>"
}
### 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_CONNECTION" ]]; then
print -n "%{%F{yellow}%}$user@%m "
fi
}
prompt_git() {
local color ref
is_dirty() {
test -n "$(git status --porcelain --ignore-submodules)"
}
ref="$vcs_info_msg_0_"
if [[ -n "$ref" ]]; then
if [[ "${ref/.../}" == "$ref" ]]; then
ref="$BRANCH $ref"
else
ref="$DETACHED ${ref/.../}"
fi
if is_dirty; then
color=yellow
ref+=" $PLUSMINUS "
else
color=green
fi
print -n "%{%F{$color}%}$ref"
fi
}
# Dir: current working directory
prompt_dir() {
print -n "%{%F{blue}%}%~ "
}
# Status:
# - was there an error
# - am I root
# - are there background jobs?
prompt_status() {
local symbols
symbols=()
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$CROSS"
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}$LIGHTNING"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$GEAR"
[[ -n "$symbols" ]] && print -n "$symbols "
}
## Main prompt
prompt_nelanka_main() {
RETVAL=$?
CURRENT_BG='NONE'
prompt_context
prompt_status
prompt_dir
prompt_git
prompt_end
}
prompt_nelanka_precmd() {
vcs_info
PROMPT='%{%f%b%k%}$(prompt_nelanka_main) '
}
prompt_nelanka_setup() {
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
prompt_opts=(cr subst percent)
add-zsh-hook precmd prompt_nelanka_precmd
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes false
zstyle ':vcs_info:git*' formats '%b'
zstyle ':vcs_info:git*' actionformats '%b (%a)'
}
prompt_nelanka_setup "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment