prezto/modules/prompt/functions/prompt_paradox_setup
Milind Shakya b5eedbf3ba Added virtualenv info to prompt.
Added virtualenv info to paradox prompt.

whitespace

Updated authors list in paradox prompt file

Changed virtualenv color to yellow to better distinguish directory segment, which was also blue before

Fixed bug when deactivating virtualenv, it left an empty segment. Now deactivating removes entire virtualenv segment.

Formatting
2015-03-18 21:38:33 -03:00

167 lines
5.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
# A two-line, Powerline-inspired theme that displays contextual information.
#
# This theme requires a patched Powerline font, get them from
# https://github.com/Lokaltog/powerline-fonts.
#
# Authors:
# Isaac Wolkerstorfer <i@agnoster.net>
# Jeff Sandberg <paradox460@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Milind Shakya <sh.milind@gmail.com>
#
# Screenshots:
# http://i.imgur.com/0XIWX.png
#
# Load dependencies.
pmodload 'helper'
# Define variables.
_prompt_paradox_current_bg='NONE'
_prompt_paradox_segment_separator=''
_prompt_paradox_start_time=$SECONDS
function prompt_paradox_start_segment {
local bg fg
[[ -n "$1" ]] && bg="%K{$1}" || bg="%k"
[[ -n "$2" ]] && fg="%F{$2}" || fg="%f"
if [[ "$_prompt_paradox_current_bg" != 'NONE' && "$1" != "$_prompt_paradox_current_bg" ]]; then
print -n " $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg "
else
print -n "$bg$fg "
fi
_prompt_paradox_current_bg="$1"
[[ -n "$3" ]] && print -n "$3"
}
function prompt_paradox_end_segment {
if [[ -n "$_prompt_paradox_current_bg" ]]; then
print -n " %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator"
else
print -n "%k"
fi
print -n "%f"
_prompt_paradox_current_bg=''
}
function prompt_paradox_build_prompt {
prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f'
prompt_paradox_start_segment blue black '$_prompt_paradox_pwd'
if [[ -n "$git_info" ]]; then
prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}'
fi
if [[ -n "${python_info}" ]]; then
prompt_paradox_start_segment yellow black '${python_info[ref]}${python_info[virtualenv]}'
fi
prompt_paradox_end_segment
}
function prompt_paradox_pwd {
local pwd="${PWD/#$HOME/~}"
if [[ "$pwd" == (#m)[/~] ]]; then
_prompt_paradox_pwd="$MATCH"
unset MATCH
else
_prompt_paradox_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}"
fi
}
function prompt_paradox_print_elapsed_time {
local end_time=$(( SECONDS - _prompt_paradox_start_time ))
local hours minutes seconds remainder
if (( end_time >= 3600 )); then
hours=$(( end_time / 3600 ))
remainder=$(( end_time % 3600 ))
minutes=$(( remainder / 60 ))
seconds=$(( remainder % 60 ))
print -P "%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b"
elif (( end_time >= 60 )); then
minutes=$(( end_time / 60 ))
seconds=$(( end_time % 60 ))
print -P "%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b"
elif (( end_time > 10 )); then
print -P "%B%F{green}>>> elapsed time ${end_time}s%b"
fi
}
function prompt_paradox_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
prompt_paradox_pwd
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Virtual env info
if (( $+functions[python-info] )); then
python-info
fi
# Calculate and print the elapsed time.
prompt_paradox_print_elapsed_time
}
function prompt_paradox_preexec {
_prompt_paradox_start_time="$SECONDS"
}
function prompt_paradox_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 preexec prompt_paradox_preexec
add-zsh-hook precmd prompt_paradox_precmd
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}%f%b'
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}%f%b'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format ' ⁝ %s'
zstyle ':prezto:module:git:info:added' format ' ✚'
zstyle ':prezto:module:git:info:ahead' format ' ⬆'
zstyle ':prezto:module:git:info:behind' format ' ⬇'
zstyle ':prezto:module:git:info:branch' format ' %b'
zstyle ':prezto:module:git:info:commit' format '➦ %.7c'
zstyle ':prezto:module:git:info:deleted' format ' ✖'
zstyle ':prezto:module:git:info:dirty' format ' ⁝'
zstyle ':prezto:module:git:info:modified' format ' ✱'
zstyle ':prezto:module:git:info:position' format '%p'
zstyle ':prezto:module:git:info:renamed' format ' ➙'
zstyle ':prezto:module:git:info:stashed' format ' S'
zstyle ':prezto:module:git:info:unmerged' format ' ═'
zstyle ':prezto:module:git:info:untracked' format ' ?'
zstyle ':prezto:module:git:info:keys' format \
'ref' '$(coalesce "%b" "%p" "%c")' \
'status' '%s%D%A%B%S%a%d%m%r%U%u'
# Set python-info parameters.
zstyle ':prezto:module:python:info:virtualenv' format '%F{black}py:%v%f'
# Define prompts.
PROMPT='
${(e)$(prompt_paradox_build_prompt)}
${editor_info[keymap]} '
RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f'
SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '
}
prompt_paradox_setup "$@"