diff options
author | Henry Yan <yanhonglei@gmail.com> | 2012-10-14 22:06:48 +0800 |
---|---|---|
committer | Henry Yan <yanhonglei@gmail.com> | 2012-10-14 22:06:48 +0800 |
commit | 3ad138a08aa3de1246cffde0b7187ffcd017298c (patch) | |
tree | 4060de701525c143c8f73244b5d5a5ddd69273ba /themes/agnoster.zsh-theme | |
parent | 3fe1e5c78760b81335eef501ef7f89875ae7753a (diff) | |
parent | c2ae9e09ca1f33ff1e13e629a0b2e6bdd19f83a9 (diff) | |
download | zsh-3ad138a08aa3de1246cffde0b7187ffcd017298c.tar.gz zsh-3ad138a08aa3de1246cffde0b7187ffcd017298c.tar.bz2 zsh-3ad138a08aa3de1246cffde0b7187ffcd017298c.zip |
Merge remote-tracking branch 'upstream/master'
* upstream/master: (35 commits)
make README reflect latest changes
URL Tools Plugin
added a comment to the composer installation alias
added Composer completition and aliases
added two aliases to Symfony2 Plugin
fix test aliases
Missing comment line
look for test/unit instead of test/units. #typo
Correct error message.
Clean up doc
Jira ticket shortcut to browse existing issues or create a new issue.
Add zeus plugin
Make rvm prompt function a bit cleaner
Fixing the rvm_prompt_info command, now it will not show empty parens if no rvm is currently being used
Add link to gist
Updated documentation for agnoster theme
Use HISTFILE evironment variable directly rather than copying it
added autojump plugin support for mac os x + port
Colemak plugin
Per directory history plugin
...
Diffstat (limited to 'themes/agnoster.zsh-theme')
-rw-r--r-- | themes/agnoster.zsh-theme | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme new file mode 100644 index 000000000..c3107c06c --- /dev/null +++ b/themes/agnoster.zsh-theme @@ -0,0 +1,115 @@ +# vim:ft=zsh ts=2 sw=2 sts=2 +# +# agnoster's Theme - https://gist.github.com/3712874 +# A Powerline-inspired theme for ZSH +# +# # README +# +# In order for this theme to render correctly, you will need a +# [Powerline-patched font](https://gist.github.com/1595572). +# +# In addition, I recommend the +# [Solarized theme](https://github.com/altercation/solarized/) and, if you're +# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app - +# it has significantly better color fidelity. +# +# # Goals +# +# The aim of this theme is to only show you *relevant* information. Like most +# prompts, it will only show git information when in a git working directory. +# However, it goes a step further: everything from the current user and +# hostname to whether the last call exited with an error to whether background +# jobs are running in this shell will all be displayed automatically when +# appropriate. + +### 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 black default "%(!.%{%F{yellow}%}.)$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)" + if [[ -n $dirty ]]; then + prompt_segment yellow black + else + prompt_segment green black + fi + echo -n "${ref/refs\/heads\//⭠ }$dirty" + fi +} + +# Dir: current working directory +prompt_dir() { + prompt_segment blue black '%~' +} + +# Status: +# - was there an error +# - am I root +# - are there background jobs? +prompt_status() { + local symbols + symbols=() + [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" + [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" + + [[ -n "$symbols" ]] && prompt_segment black default "$symbols" +} + +## Main prompt +build_prompt() { + RETVAL=$? + prompt_status + prompt_context + prompt_dir + prompt_git + prompt_end +} + +PROMPT='%{%f%b%k%}$(build_prompt) ' |