1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
prezto/modules/prompt/functions/prompt_sorin_setup

163 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#
# A simple theme that displays relevant, contextual information.
#
# - Git branch
# - Python environment
# - Ruby environment (gemset)
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Matthew Crenshaw <sgt@squig.gs>
#
# Screenshots:
# http://i.imgur.com/nrGV6pg.png
# http://i.imgur.com/w2ein8H.png
#
#
# 16 Terminal Colors
# -- ---------------
# 0 black
# 1 red
# 2 green
# 3 yellow
# 4 blue
# 5 magenta
# 6 cyan
# 7 white
# 8 bright black
# 9 bright red
# 10 bright green
# 11 bright yellow
# 12 bright blue
# 13 bright magenta
# 14 bright cyan
# 15 bright white
#
# Load dependencies.
pmodload 'helper'
function _prompt_sorin_async_job {
prompt_sorin_style
local output=''
builtin cd -q $1
if (( $+functions[python-info] )); then
python-info
output+=" ${python_info:+${(e)python_info[virtualenv]}}"
fi
if (( $+functions[ruby-info] )); then
ruby-info
output+=" ${ruby_info:+${(e)ruby_info[version]}}"
fi
if (( $+functions[git-info] )); then
git-info
output+=" ${git_info:+${(e)git_info[status]}}"
fi
print $output
}
function _prompt_sorin_callback {
local job=$1 code=$2 output=$3 exec_time=$4
if [[ -n $output ]]; then
# Append to rprompt
RPROMPT+=$output
# Redisplay prompt.
zle && zle reset-prompt
fi
}
function _prompt_sorin_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
_prompt_sorin_pwd=$(promptpwd)
# Define prompts.
RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}'
# Kill any currently running async jobs
async_flush_jobs 'prompt_sorin'
# We need the worker's env to be up to date, so here we are restarting the worker
async_stop_worker 'prompt_sorin'
async_start_worker 'prompt_sorin' -n -u
async_register_callback 'prompt_sorin' _prompt_sorin_callback
# Kick off async jobs
async_job 'prompt_sorin' _prompt_sorin_async_job "$(pwd)"
}
function prompt_sorin_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz async && async
# Start async worker
# async_start_worker 'prompt_sorin' -n -u
# Register callback
# async_register_callback 'prompt_sorin' _prompt_sorin_callback
# Add hook for calling git-info before each command.
add-zsh-hook precmd _prompt_sorin_precmd
# Apply styles
prompt_sorin_style
# Define prompts.
PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{4}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} '
RPROMPT=''
SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? '
}
function prompt_sorin_style {
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}%F{3}%F{2}%f%b'
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}%F{3}%F{1}%f%b'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b'
zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b'
zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b'
zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b'
zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b'
zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b'
zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b'
zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b'
zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b'
zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b'
zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b'
zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b'
zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b'
zstyle ':prezto:module:git:info:keys' format \
'status' '$(coalesce "%b" "%p" "%c")%s%A%B%S%a%d%m%r%U%u'
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format ' %F{4}rbenv%f:%F{2}%v%f'
# Set python-info parameters.
zstyle ':prezto:module:python:info:virtualenv' format ' %F{4}pyenv%f:%F{2}%v%f'
}
function prompt_sorin_preview {
local +h PROMPT=''
local +h RPROMPT=''
local +h SPROMPT=''
editor-info 2>/dev/null
prompt_preview_theme 'sorin'
}
prompt_sorin_setup "$@"