diff --git a/themes/fubing.zsh-theme b/themes/fubing.zsh-theme new file mode 100644 index 000000000..87ec2f8f0 --- /dev/null +++ b/themes/fubing.zsh-theme @@ -0,0 +1,65 @@ +# Colors: black, red, green, yellow, *blue, magenta, cyan, and white. +# + +# Machine name. +function box_name { + [ -f ~/.box-name ] && cat ~/.box-name || echo $HOST +} + +# Directory info. +local current_dir='${PWD/#$HOME/~}' + +# VCS +YS_VCS_PROMPT_PREFIX1=" %{$fg[white]%}on%{$reset_color%} " +YS_VCS_PROMPT_PREFIX2=":%{$fg[cyan]%}" +YS_VCS_PROMPT_SUFFIX="%{$reset_color%}" +YS_VCS_PROMPT_DIRTY=" %{$fg[red]%}x" +YS_VCS_PROMPT_CLEAN=" %{$fg[green]%}o" + +# Git info. +local git_info='$(git_prompt_info)' +ZSH_THEME_GIT_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}git${YS_VCS_PROMPT_PREFIX2}" +ZSH_THEME_GIT_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX" +ZSH_THEME_GIT_PROMPT_DIRTY="$YS_VCS_PROMPT_DIRTY" +ZSH_THEME_GIT_PROMPT_CLEAN="$YS_VCS_PROMPT_CLEAN" + +# HG info +local hg_info='$(ys_hg_prompt_info)' +ys_hg_prompt_info() { + # make sure this is a hg dir + if [ -d '.hg' ]; then + echo -n "${YS_VCS_PROMPT_PREFIX1}hg${YS_VCS_PROMPT_PREFIX2}" + echo -n $(hg branch 2>/dev/null) + if [ -n "$(hg status 2>/dev/null)" ]; then + echo -n "$YS_VCS_PROMPT_DIRTY" + else + echo -n "$YS_VCS_PROMPT_CLEAN" + fi + echo -n "$YS_VCS_PROMPT_SUFFIX" + fi +} + +# Prompt format: \n # USER at MACHINE in DIRECTORY on git:BRANCH STATE [TIME] \n $ +PROMPT=" +%{$terminfo[bold]$fg[magenta]%}%n%{$reset_color%} \ +%{$fg[white]%}at \ +%{$fg[yellow]%}$(box_name) \ +%{$fg[white]%}in \ +%{$fg[green]%}${current_dir}%{$reset_color%}\ +${hg_info}\ +${git_info} \ +%{$fg[white]%}[%*] +$ " + +if [[ "$USER" == "root" ]]; then +PROMPT=" +%{$bg[yellow]%}%{$fg[cyan]%}%n%{$reset_color%} \ +%{$fg[white]%}at \ +%{$fg[green]%}$(box_name) \ +%{$fg[white]%}in \ +%{$terminfo[bold]$fg[yellow]%}${current_dir}%{$reset_color%}\ +${hg_info}\ +${git_info} \ +%{$fg[white]%}[%*] +%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}" +fi