#
# A theme based on sorin theme
#  * ruby info shown on the right
#  * git info on the left
#  * editor mode as $> or <#
#  * single line prompt
#
# Authors:
#   Sorin Ionescu <sorin.ionescu@gmail.com>
#   Kyle West <kswest@gmail.com>

function prompt_kylewest_precmd {
  setopt LOCAL_OPTIONS
  unsetopt XTRACE KSH_ARRAYS

  # Get Git repository information.
  if (( $+functions[git-info] )); then
    git-info on
    git-info
  fi

  # Get ruby information
  if (( $+functions[ruby-info] )); then
    ruby-info
  fi
}

function prompt_kylewest_setup {
  setopt LOCAL_OPTIONS
  unsetopt XTRACE KSH_ARRAYS
  prompt_opts=(cr percent subst)

  # Load required functions.
  autoload -Uz add-zsh-hook

  # Add hook for calling git-info before each command.
  add-zsh-hook precmd prompt_kylewest_precmd

  # editor
  zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
  zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}$>%f%b"
  zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}<#%f%b"

  # ruby info (rvm, rbenv)
  zstyle ':prezto:module:ruby:info:version' format '[ %v ]'

  # vcs
  zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f'
  zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b'
  zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D '

  # prompts
  PROMPT='%F{cyan}%c%f ${git_info[prompt]}${editor_info[keymap]} '
  RPROMPT='%F{blue}${ruby_info[version]}'
}

prompt_kylewest_setup "$@"
