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
167 lines
5.1 KiB
Text
167 lines
5.1 KiB
Text
#
|
||
# 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 "$@"
|