From d5ba17feacbfbdc3a1f1ce6d57aab102ff3efe2e Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sun, 17 Jul 2011 20:15:51 -0400 Subject: [PATCH] Converted OMZ themes to native ZSH themes. --- functions/appearance.zsh | 16 ---- oh-my-zsh.zsh | 21 +---- templates/zshrc.template.zsh | 19 ++--- themes/minimal/minimal.theme.zsh | 15 ---- themes/minimal/prompt_minimal_setup | 35 ++++++++ themes/nicoulaj/nicoulaj.theme.zsh | 43 ---------- themes/nicoulaj/prompt_nicoulaj_setup | 47 +++++++++++ themes/sorin/prompt_sorin_setup | 34 ++++++++ themes/sorin/sorin.theme.zsh | 48 ----------- themes/steeef/prompt_steeef_setup | 110 ++++++++++++++++++++++++++ themes/steeef/steeef.theme.zsh | 100 ----------------------- 11 files changed, 240 insertions(+), 248 deletions(-) delete mode 100644 functions/appearance.zsh delete mode 100644 themes/minimal/minimal.theme.zsh create mode 100644 themes/minimal/prompt_minimal_setup delete mode 100644 themes/nicoulaj/nicoulaj.theme.zsh create mode 100644 themes/nicoulaj/prompt_nicoulaj_setup create mode 100644 themes/sorin/prompt_sorin_setup delete mode 100644 themes/sorin/sorin.theme.zsh create mode 100644 themes/steeef/prompt_steeef_setup delete mode 100644 themes/steeef/steeef.theme.zsh diff --git a/functions/appearance.zsh b/functions/appearance.zsh deleted file mode 100644 index 277274d..0000000 --- a/functions/appearance.zsh +++ /dev/null @@ -1,16 +0,0 @@ -# Load and run colors. -autoload -U colors -colors -i - -# Set the default prompt theme. -PS1="%n@%m:%~%# " - -# Set the default Git prompt theme. -ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix before the branch name. -ZSH_THEME_GIT_PROMPT_SUFFIX=")" # Suffix after the branch name. -ZSH_THEME_GIT_PROMPT_DIRTY="*" # Indicator to display if the branch is dirty. -ZSH_THEME_GIT_PROMPT_CLEAN="" # Indicator to display if the branch is clean. - -# Enable parameter, arithmentic expansion and command substitution in prompt. -setopt prompt_subst - diff --git a/oh-my-zsh.zsh b/oh-my-zsh.zsh index 67571dc..3980b64 100644 --- a/oh-my-zsh.zsh +++ b/oh-my-zsh.zsh @@ -5,11 +5,8 @@ if [[ "$TERM" == 'dumb' ]]; then DISABLE_COLOR='true' fi -# Add all defined plugins to fpath. -plugin=${plugin:=()} -for plugin in $plugins; do - fpath=("$OMZ/plugins/$plugin" $fpath) -done +# Add functions to fpath. +fpath+=(${OMZ}/plugins/${^plugins} $OMZ/themes/*(/)) # Load and run compinit. autoload -Uz compinit && compinit -i @@ -26,18 +23,8 @@ for plugin in $plugins; do fi done -# Load the theme. -if [[ "$ZSH_THEME" == "random" ]]; then - themes=($OMZ/themes/**/*.theme.zsh) - theme_index=${#themes[@]} - (( theme_index=((RANDOM % theme_index) + 1) )) - random_theme="${themes[$theme_index]}" - source "$random_theme" -else - if [[ -f "$OMZ/themes/$ZSH_THEME/$ZSH_THEME.theme.zsh" ]]; then - source "$OMZ/themes/$ZSH_THEME/$ZSH_THEME.theme.zsh" - fi -fi +# Load and run the prompt theming system. +autoload -Uz promptinit && promptinit -i # Compile zcompdump, if modified, to increase startup speed. if [[ "$HOME/.zcompdump" -nt "$HOME/.zcompdump.zwc" ]] || [[ ! -e "$HOME/.zcompdump.zwc" ]]; then diff --git a/templates/zshrc.template.zsh b/templates/zshrc.template.zsh index 99b9daf..510fcf9 100644 --- a/templates/zshrc.template.zsh +++ b/templates/zshrc.template.zsh @@ -1,24 +1,25 @@ # Path to oh-my-zsh. -export OMZ="$HOME/.oh-my-zsh" - -# Set the name of the theme to load (see $OMZ/themes/). -# Setting it to 'random' loads a random theme. -export ZSH_THEME="robbyrussell" +OMZ="$HOME/.oh-my-zsh" # Set to 'true' to enable case-sensitivity. -export CASE_SENSITIVE='false' +CASE_SENSITIVE='false' # Set to 'true' to disable color (auto set on dumb terminals). -export DISABLE_COLOR='false' +DISABLE_COLOR='false' # Set to 'true' to disable auto setting the tab and window titles. -export DISABLE_AUTO_TITLE='false' +DISABLE_AUTO_TITLE='false' # Set the plugins to load (see $OMZ/plugins/). -# Example: plugins=(rails git textmate ruby lighthouse) +# Example: plugins=(git lighthouse rails ruby textmate) plugins=(git) +# This will make you scream: OH MY ZSH! source "$OMZ/oh-my-zsh.zsh" +# Load the prompt theme (type prompt -l to list all themes). +# Setting it to 'random' loads a random theme. +[[ "$TERM" != 'dumb' ]] && prompt sorin || prompt off + # Customize to your needs... diff --git a/themes/minimal/minimal.theme.zsh b/themes/minimal/minimal.theme.zsh deleted file mode 100644 index d3c9e36..0000000 --- a/themes/minimal/minimal.theme.zsh +++ /dev/null @@ -1,15 +0,0 @@ -ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}[" -ZSH_THEME_GIT_PROMPT_SUFFIX="]%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$reset_color%}" -ZSH_THEME_GIT_PROMPT_CLEAN="" - -#Customized git status, oh-my-zsh currently does not allow render dirty status before branch -git_custom_status() { - local cb=$(current_branch) - if [ -n "$cb" ]; then - echo "- $ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" - fi -} - - -PROMPT='%2~ $(git_custom_status) »%b ' diff --git a/themes/minimal/prompt_minimal_setup b/themes/minimal/prompt_minimal_setup new file mode 100644 index 0000000..765d2fa --- /dev/null +++ b/themes/minimal/prompt_minimal_setup @@ -0,0 +1,35 @@ +function +vi-git-status() { + # Untracked files. + if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + hook_com[unstaged]='%F{red}●%f' + fi +} + +function prompt_minimal_precmd () { + setopt noxtrace noksharrays localoptions + vcs_info +} + +function prompt_minimal_setup() { + setopt noxtrace noksharrays localoptions + prompt_opts=(cr subst percent) + + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + add-zsh-hook precmd prompt_minimal_precmd + + zstyle ':vcs_info:*' enable bzr git hg svn + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' stagedstr '%F{green}●%f' + zstyle ':vcs_info:*' unstagedstr '%F{yellow}●%f' + zstyle ':vcs_info:*' formats ' - [%b%c%u]' + zstyle ':vcs_info:*' actionformats " - [%b%c%u|%F{cyan}%a%f]" + zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f' + zstyle ':vcs_info:git*+set-message:*' hooks git-status + + PROMPT='%2~${vcs_info_msg_0_} » ' +} + +prompt_minimal_setup "$@" + diff --git a/themes/nicoulaj/nicoulaj.theme.zsh b/themes/nicoulaj/nicoulaj.theme.zsh deleted file mode 100644 index 333aa5e..0000000 --- a/themes/nicoulaj/nicoulaj.theme.zsh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env zsh -# ------------------------------------------------------------------------------ -# Prompt for the Zsh shell: -# * One line. -# * VCS info on the right prompt. -# * Only shows the path on the left prompt by default. -# * Crops the path to a defined length and only shows the path relative to -# the current VCS repository root. -# * Wears a different color wether the last command succeeded/failed. -# * Shows user@hostname if connected through SSH. -# * Shows if logged in as root or not. -# ------------------------------------------------------------------------------ - -# Customizable parameters. -PROMPT_PATH_MAX_LENGTH=30 -PROMPT_DEFAULT_END=❯ -PROMPT_ROOT_END=❯❯❯ -PROMPT_SUCCESS_COLOR=$FG[071] -PROMPT_FAILURE_COLOR=$FG[124] -PROMPT_VCS_INFO_COLOR=$FG[242] - -# Set required options. -setopt promptsubst - -# Load required modules. -autoload -U add-zsh-hook -autoload -Uz vcs_info - -# Add hook for calling vcs_info before each command. -add-zsh-hook precmd vcs_info - -# Set vcs_info parameters. -zstyle ':vcs_info:*' enable hg bzr git -zstyle ':vcs_info:*:*' check-for-changes true # Can be slow on big repos. -zstyle ':vcs_info:*:*' unstagedstr '!' -zstyle ':vcs_info:*:*' stagedstr '+' -zstyle ':vcs_info:*:*' actionformats "%S" "%r/%s/%b %u%c (%a)" -zstyle ':vcs_info:*:*' formats "%S" "%r/%s/%b %u%c" -zstyle ':vcs_info:*:*' nvcsformats "%~" "" - -# Define prompts. -PROMPT="%(0?.%{$PROMPT_SUCCESS_COLOR%}.%{$PROMPT_FAILURE_COLOR%})${SSH_TTY:+[%n@%m]}%{$FX[bold]%}%$PROMPT_PATH_MAX_LENGTH<..<"'${vcs_info_msg_0_%%.}'"%<<%(!.$PROMPT_ROOT_END.$PROMPT_DEFAULT_END)%{$FX[no-bold]%}%{$FX[reset]%} " -RPROMPT="%{$PROMPT_VCS_INFO_COLOR%}"'$vcs_info_msg_1_'"%{$FX[reset]%}" diff --git a/themes/nicoulaj/prompt_nicoulaj_setup b/themes/nicoulaj/prompt_nicoulaj_setup new file mode 100644 index 0000000..71bbad3 --- /dev/null +++ b/themes/nicoulaj/prompt_nicoulaj_setup @@ -0,0 +1,47 @@ +# ------------------------------------------------------------------------------ +# Prompt for ZSH: +# * One line. +# * VCS info on the right prompt. +# * Only shows the path on the left prompt by default. +# * Crops the path to a defined length and only shows the path relative to +# the current VCS repository root. +# * Wears a different color wether the last command succeeded/failed. +# * Shows user@hostname if connected through SSH. +# * Shows if logged in as root or not. +# ------------------------------------------------------------------------------ + +function prompt_nicoulaj_setup() { + setopt noxtrace noksharrays localoptions + prompt_opts=(cr subst percent) + + # Load required modules. + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + # Add hook for calling vcs_info before each command. + add-zsh-hook precmd vcs_info + + # Customizable parameters. + local max_path_chars=30 + local user_char='❯' + local root_char='❯❯❯' + local success_color='%F{071}' + local failure_color='%F{124}' + local vcs_info_color='%F{242}' + + # Set vcs_info parameters. + zstyle ':vcs_info:*' enable bzr git hg svn + zstyle ':vcs_info:*:*' check-for-changes true # Can be slow on big repos. + zstyle ':vcs_info:*:*' unstagedstr '!' + zstyle ':vcs_info:*:*' stagedstr '+' + zstyle ':vcs_info:*:*' actionformats "%S" "%r/%s/%b %u%c (%a)" + zstyle ':vcs_info:*:*' formats "%S" "%r/%s/%b %u%c" + zstyle ':vcs_info:*:*' nvcsformats "%~" "" + + # Define prompts. + PROMPT="%(?.${success_color}.${failure_color})${SSH_TTY:+[%n@%m]}%B%${max_path_chars}<...<"'${vcs_info_msg_0_%%.}'"%<<%(!.${root_char}.${user_char})%b%f " + RPROMPT="${vcs_info_color}"'${vcs_info_msg_1_}'"%f" +} + +prompt_nicoulaj_setup "$@" + diff --git a/themes/sorin/prompt_sorin_setup b/themes/sorin/prompt_sorin_setup new file mode 100644 index 0000000..72e8a96 --- /dev/null +++ b/themes/sorin/prompt_sorin_setup @@ -0,0 +1,34 @@ +# ------------------------------------------------------------------------------ +# FILE: prompt_sorin_setup +# DESCRIPTION: oh-my-zsh theme file. +# AUTHOR: Sorin Ionescu +# VERSION: 1.0.4 +# SCREENSHOT: http://i.imgur.com/aipDQ.png +# ------------------------------------------------------------------------------ + + +function prompt_sorin_setup() { + setopt localoptions noxtrace noksharrays + prompt_opts=(cr subst percent) + + MODE_INDICATOR="%B%F{red}❮%f%b%F{red}❮❮%f" + ZSH_THEME_GIT_PROMPT_SHA_BEFORE="" + ZSH_THEME_GIT_PROMPT_SHA_AFTER="" + ZSH_THEME_GIT_PROMPT_AHEAD="" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_PREFIX=" %F{blue}git%f:%F{red}" + ZSH_THEME_GIT_PROMPT_SUFFIX="%f" + ZSH_THEME_GIT_PROMPT_ADDED="%F{green} ✚%f" + ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue} ✹%f" + ZSH_THEME_GIT_PROMPT_DELETED="%F{red} ✖%f" + ZSH_THEME_GIT_PROMPT_RENAMED="%F{magenta} ➜%f" + ZSH_THEME_GIT_PROMPT_UNMERGED="%F{yellow} ═%f" + ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{cyan} ✭%f" + + PROMPT='%F{cyan}%~%f$(git-prompt-info) %(!.%B%F{red}#%f%b.%B%F{green}❯%f%b) ' + RPROMPT='%(?::%F{red}⏎%f)$(git-prompt-status)' +} + +prompt_sorin_setup "$@" + diff --git a/themes/sorin/sorin.theme.zsh b/themes/sorin/sorin.theme.zsh deleted file mode 100644 index a63a984..0000000 --- a/themes/sorin/sorin.theme.zsh +++ /dev/null @@ -1,48 +0,0 @@ -# ------------------------------------------------------------------------------ -# FILE: sorin.zsh-theme -# DESCRIPTION: oh-my-zsh theme file. -# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) -# VERSION: 1.0.3 -# SCREENSHOT: http://i.imgur.com/aipDQ.png -# ------------------------------------------------------------------------------ - - -if [[ "$DISABLE_COLOR" != "true" ]]; then - MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}" - local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}" - - PROMPT='%{$fg[cyan]%}%c$(git_prompt_info) %(!.%{$fg_bold[red]%}#.%{$fg_bold[green]%}❯)%{$reset_color%} ' - - ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[blue]%}git%{$reset_color%}:%{$fg[red]%}" - ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" - ZSH_THEME_GIT_PROMPT_DIRTY="" - ZSH_THEME_GIT_PROMPT_CLEAN="" - - RPROMPT='${return_status}$(git_prompt_status)%{$reset_color%}' - - ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%} ✚" - ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[blue]%} ✹" - ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%} ✖" - ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[magenta]%} ➜" - ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} ═" - ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} ✭" -else - MODE_INDICATOR="❮❮❮" - local return_status="%(?::⏎)" - - PROMPT='%c$(git_prompt_info) %(!.#.❯) ' - - ZSH_THEME_GIT_PROMPT_PREFIX=" git:" - ZSH_THEME_GIT_PROMPT_SUFFIX="" - ZSH_THEME_GIT_PROMPT_DIRTY="" - ZSH_THEME_GIT_PROMPT_CLEAN="" - - RPROMPT='${return_status}$(git_prompt_status)' - - ZSH_THEME_GIT_PROMPT_ADDED=" ✚" - ZSH_THEME_GIT_PROMPT_MODIFIED=" ✹" - ZSH_THEME_GIT_PROMPT_DELETED=" ✖" - ZSH_THEME_GIT_PROMPT_RENAMED=" ➜" - ZSH_THEME_GIT_PROMPT_UNMERGED=" ═" - ZSH_THEME_GIT_PROMPT_UNTRACKED=" ✭" -fi diff --git a/themes/steeef/prompt_steeef_setup b/themes/steeef/prompt_steeef_setup new file mode 100644 index 0000000..96ee7b0 --- /dev/null +++ b/themes/steeef/prompt_steeef_setup @@ -0,0 +1,110 @@ +# Prompt style and colors based on Steve Losh's Prose theme: +# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme +# +# vcs_info modifications from Bart Trojanowski's zsh prompt: +# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt +# +# Git untracked files modification from Brian Carper: +# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt + +function virtualenv_info() { + if [[ -n "$VIRTUAL_ENV" ]]; then + echo '('`basename $VIRTUAL_ENV`') ' + fi +} + +function prompt_steeef_precmd() { + if [[ -n "$__PROMPT_STEEEF_VCS_UPDATE" ]] ; then + # Check for untracked files or updated submodules since vcs_info doesn't. + if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + __PROMPT_STEEEF_VCS_UPDATE=1 + fmt_branch="(${__PROMPT_STEEEF_COLORS[1]}%b%f%u%c${__PROMPT_STEEEF_COLORS[4]}●%f)" + else + fmt_branch="(${__PROMPT_STEEEF_COLORS[1]}%b%f%u%c)" + fi + zstyle ':vcs_info:*:prompt:*' formats "${fmt_branch}" + + vcs_info 'prompt' + __PROMPT_STEEEF_VCS_UPDATE='' + fi +} + +function prompt_steeef_preexec() { + case "$(history $HISTCMD)" in + *git*) + __PROMPT_STEEEF_VCS_UPDATE=1 + ;; + *svn*) + __PROMPT_STEEEF_VCS_UPDATE=1 + ;; + esac +} + +function prompt_steeef_chpwd() { + __PROMPT_STEEEF_VCS_UPDATE=1 +} + +function prompt_steeef_setup() { + setopt localoptions noxtrace noksharrays + prompt_opts=(cr subst percent) + + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + add-zsh-hook precmd prompt_steeef_precmd + add-zsh-hook preexec prompt_steeef_preexec + add-zsh-hook chpwd prompt_steeef_chpwd + + __PROMPT_STEEEF_VCS_UPDATE=1 + + # Use extended color pallete if available. + if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then + __PROMPT_STEEEF_COLORS=( + "%F{81}" # turquoise + "%F{166}" # orange + "%F{135}" # purple + "%F{161}" # hotpink + "%F{118}" # limegreen + ) + else + __PROMPT_STEEEF_COLORS=( + "%F{cyan}" + "%F{yellow}" + "%F{magenta}" + "%F{red}" + "%F{green}" + ) + fi + + # Enable VCS systems you use. + zstyle ':vcs_info:*' enable bzr git hg svn + + # check-for-changes can be really slow. + # You should disable it if you work with large repositories. + zstyle ':vcs_info:*:prompt:*' check-for-changes true + + # Formats: + # %b - branchname + # %u - unstagedstr (see below) + # %c - stagedstr (see below) + # %a - action (e.g. rebase-i) + # %R - repository path + # %S - path in the repository + local fmt_branch="(${__PROMPT_STEEEF_COLORS[1]}%b%f%u%c)" + local fmt_action="(${__PROMPT_STEEEF_COLORS[5]}%a%f)" + local fmt_unstaged="${__PROMPT_STEEEF_COLORS[2]}●%f" + local fmt_staged="${__PROMPT_STEEEF_COLORS[5]}●%f" + + zstyle ':vcs_info:*:prompt:*' unstagedstr "${fmt_unstaged}" + zstyle ':vcs_info:*:prompt:*' stagedstr "${fmt_staged}" + zstyle ':vcs_info:*:prompt:*' actionformats "${fmt_branch}${fmt_action}" + zstyle ':vcs_info:*:prompt:*' formats "${fmt_branch}" + zstyle ':vcs_info:*:prompt:*' nvcsformats "" + + PROMPT=" +${__PROMPT_STEEEF_COLORS[3]}%n%f at ${__PROMPT_STEEEF_COLORS[2]}%m%f in ${__PROMPT_STEEEF_COLORS[5]}%~%f "'${vcs_info_msg_0_}'" +"'$(virtualenv_info)'"$ " +} + +prompt_steeef_setup "$@" + diff --git a/themes/steeef/steeef.theme.zsh b/themes/steeef/steeef.theme.zsh deleted file mode 100644 index a2583b0..0000000 --- a/themes/steeef/steeef.theme.zsh +++ /dev/null @@ -1,100 +0,0 @@ -# prompt style and colors based on Steve Losh's Prose theme: -# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme -# -# vcs_info modifications from Bart Trojanowski's zsh prompt: -# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt -# -# git untracked files modification from Brian Carper: -# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt - -function virtualenv_info { - [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') ' -} -PR_GIT_UPDATE=1 - -setopt prompt_subst -autoload colors -colors - -autoload -U add-zsh-hook -autoload -Uz vcs_info - -#use extended color pallete if available -if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then - turquoise="%F{81}" - orange="%F{166}" - purple="%F{135}" - hotpink="%F{161}" - limegreen="%F{118}" -else - turquoise="$fg[cyan]" - orange="$fg[yellow]" - purple="$fg[magenta]" - hotpink="$fg[red]" - limegreen="$fg[green]" -fi - -# enable VCS systems you use -zstyle ':vcs_info:*' enable git svn - -# check-for-changes can be really slow. -# you should disable it, if you work with large repositories -zstyle ':vcs_info:*:prompt:*' check-for-changes true - -# set formats -# %b - branchname -# %u - unstagedstr (see below) -# %c - stagedstr (see below) -# %a - action (e.g. rebase-i) -# %R - repository path -# %S - path in the repository -PR_RST="%{${reset_color}%}" -FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" -FMT_ACTION="(%{$limegreen%}%a${PR_RST})" -FMT_UNSTAGED="%{$orange%}●" -FMT_STAGED="%{$limegreen%}●" - -zstyle ':vcs_info:*:prompt:*' unstagedstr "${FMT_UNSTAGED}" -zstyle ':vcs_info:*:prompt:*' stagedstr "${FMT_STAGED}" -zstyle ':vcs_info:*:prompt:*' actionformats "${FMT_BRANCH}${FMT_ACTION}" -zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" -zstyle ':vcs_info:*:prompt:*' nvcsformats "" - - -function steeef_preexec { - case "$(history $HISTCMD)" in - *git*) - PR_GIT_UPDATE=1 - ;; - *svn*) - PR_GIT_UPDATE=1 - ;; - esac -} -add-zsh-hook preexec steeef_preexec - -function steeef_chpwd { - PR_GIT_UPDATE=1 -} -add-zsh-hook chpwd steeef_chpwd - -function steeef_precmd { - if [[ -n "$PR_GIT_UPDATE" ]] ; then - # check for untracked files or updated submodules, since vcs_info doesn't - if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then - PR_GIT_UPDATE=1 - FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})" - else - FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})" - fi - zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" - - vcs_info 'prompt' - PR_GIT_UPDATE= - fi -} -add-zsh-hook precmd steeef_precmd - -PROMPT=$' -%{$purple%}%n%{$reset_color%} at %{$orange%}%m%{$reset_color%} in %{$limegreen%}%~%{$reset_color%} $vcs_info_msg_0_ -$(virtualenv_info)$ '