function prompt_ben_precmd { git-info } function virtualenv_info { if [[ -z "$VIRTUAL_ENV" ]]; then venv="default" else venv="${VIRTUAL_ENV##*/}" fi echo "🐍${venv}" } function rvm_info { if [[ -z "$RUBY_VERSION" ]]; then rvminfo="default" else rvminfo=`rvm-prompt` fi echo "💎${rvminfo}" } function nvm_info { if [[ -z "$NVM_BIN" ]]; then nvminfo="default" else nvminfo=`nvm current` fi echo "💛${nvminfo}" } function box_name { [ -f ~/.box-name ] && cat ~/.box-name || hostname -s } function zle-line-init zle-keymap-select { local return_status="%{%F{red}%}%(?..✘)%{$reset_color%}" RPS1="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}${return_status}%{$reset_color%}" RPS2=$RPS1 zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select function prompt_ben_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_ben_precmd # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:branch' format '@%F{cyan}%b%f' zstyle ':prezto:module:git:info:clean' format '' zstyle ':prezto:module:git:info:added' format '%{%F{green}%}!' zstyle ':prezto:module:git:info:modified' format '%{%F{green}%}?' zstyle ':prezto:module:git:info:untracked' format '%{%F{magenta}%}?' zstyle ':prezto:module:git:info:keys' format \ 'prompt' '%b%a%m%u' # Define prompts. PROMPT=' %{%F{black}%}$(nvm_info) $(rvm_info) $(virtualenv_info) %{%F{magenta}%}%n%{%f%}@%{%F{yellow}%}$(box_name)%{%f%} %{%B%F{green}%}${PWD/#$HOME/~}%{%f%b%}${git_info[prompt]} %{%f%} %(?,,%{${%B%F{white}%}[%?]%{%f%b%} )$ ' } prompt_ben_setup "$@" #setopt PROMPT_SUBST ZSH_THEME_GIT_PROMPT_PREFIX="@%{%F{cyan}%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{%F{green}%}!" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{%F{green}%}?" ZSH_THEME_GIT_PROMPT_CLEAN=""