ys.zsh-theme
2426 bytes
1# Clean, simple, compatible and meaningful.
2# Tested on Linux, Unix and Windows under ANSI colors.
3# It is recommended to use with a dark background.
4# Colors: black, red, green, yellow, *blue, magenta, cyan, and white.
5#
6# Mar 2013 Yad Smood
7
8# VCS
9YS_VCS_PROMPT_PREFIX1=" %{$reset_color%}on%{$fg[blue]%} "
10YS_VCS_PROMPT_PREFIX2=":%{$fg[cyan]%}"
11YS_VCS_PROMPT_SUFFIX="%{$reset_color%}"
12YS_VCS_PROMPT_DIRTY=" %{$fg[red]%}x"
13YS_VCS_PROMPT_CLEAN=" %{$fg[green]%}o"
14
15# Git info
16local git_info='$(git_prompt_info)'
17ZSH_THEME_GIT_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}git${YS_VCS_PROMPT_PREFIX2}"
18ZSH_THEME_GIT_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX"
19ZSH_THEME_GIT_PROMPT_DIRTY="$YS_VCS_PROMPT_DIRTY"
20ZSH_THEME_GIT_PROMPT_CLEAN="$YS_VCS_PROMPT_CLEAN"
21
22# SVN info
23local svn_info='$(svn_prompt_info)'
24ZSH_THEME_SVN_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}svn${YS_VCS_PROMPT_PREFIX2}"
25ZSH_THEME_SVN_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX"
26ZSH_THEME_SVN_PROMPT_DIRTY="$YS_VCS_PROMPT_DIRTY"
27ZSH_THEME_SVN_PROMPT_CLEAN="$YS_VCS_PROMPT_CLEAN"
28
29# HG info
30local hg_info='$(ys_hg_prompt_info)'
31ys_hg_prompt_info() {
32 # make sure this is a hg dir
33 if [ -d '.hg' ]; then
34 echo -n "${YS_VCS_PROMPT_PREFIX1}hg${YS_VCS_PROMPT_PREFIX2}"
35 echo -n $(hg branch 2>/dev/null)
36 if [[ "$(hg config oh-my-zsh.hide-dirty 2>/dev/null)" != "1" ]]; then
37 if [ -n "$(hg status 2>/dev/null)" ]; then
38 echo -n "$YS_VCS_PROMPT_DIRTY"
39 else
40 echo -n "$YS_VCS_PROMPT_CLEAN"
41 fi
42 fi
43 echo -n "$YS_VCS_PROMPT_SUFFIX"
44 fi
45}
46
47# Virtualenv
48local venv_info='$(virtenv_prompt)'
49YS_THEME_VIRTUALENV_PROMPT_PREFIX=" %{$fg[green]%}"
50YS_THEME_VIRTUALENV_PROMPT_SUFFIX=" %{$reset_color%}%"
51virtenv_prompt() {
52 [[ -n "${VIRTUAL_ENV:-}" ]] || return
53 echo "${YS_THEME_VIRTUALENV_PROMPT_PREFIX}${VIRTUAL_ENV:t}${YS_THEME_VIRTUALENV_PROMPT_SUFFIX}"
54}
55
56local exit_code="%(?,,C:%{$fg[red]%}%?%{$reset_color%})"
57
58# Prompt format:
59#
60# PRIVILEGES USER @ MACHINE in DIRECTORY on git:BRANCH STATE [TIME] C:LAST_EXIT_CODE
61# $ COMMAND
62#
63# For example:
64#
65# % ys @ ys-mbp in ~/.oh-my-zsh on git:master x [21:47:42] C:0
66# $
67PROMPT="
68%{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \
69%(#,%{$bg[yellow]%}%{$fg[black]%}%n%{$reset_color%},%{$fg[cyan]%}%n) \
70%{$reset_color%}@ \
71%{$fg[green]%}%m \
72%{$reset_color%}in \
73%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}\
74${hg_info}\
75${git_info}\
76${svn_info}\
77${venv_info}\
78 \
79[%*] $exit_code
80%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}"