Last active
August 24, 2016 22:45
-
-
Save nelanka/a8a9ff586958853cb3bb to your computer and use it in GitHub Desktop.
My 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
# ~/.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