Forked from https://github.com/paradox460/prezto/blob/paradox/modules/prompt/functions/prompt_paradox_setup
replace "@" to " at ", show fullpath
place prompt_paradox_setup to .zprezto/modules/prompt/functions/
Forked from https://github.com/paradox460/prezto/blob/paradox/modules/prompt/functions/prompt_paradox_setup
replace "@" to " at ", show fullpath
place prompt_paradox_setup to .zprezto/modules/prompt/functions/
# Load dependencies. | |
pmodload 'helper' | |
CURRENT_BG='NONE' | |
SEGMENT_SEPARATOR='⮀' | |
# Begin a segment | |
# Takes two arguments, background and foreground. Both can be omitted, | |
# rendering default background/foreground. | |
prompt_segment() { | |
local bg fg | |
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " | |
else | |
echo -n "%{$bg%}%{$fg%} " | |
fi | |
CURRENT_BG=$1 | |
[[ -n $3 ]] && print -Pn $3 | |
} | |
# End the prompt, closing any open segments | |
prompt_end() { | |
if [[ -n $CURRENT_BG ]]; then | |
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" | |
else | |
echo -n "%{%k%}" | |
fi | |
echo -n "%{%f%}" | |
CURRENT_BG='' | |
} | |
function build_prompt { | |
prompt_segment black default '%(1?;%{%F{red}%}✘ ;)%(!;%{%F{yellow}%}⚡ ;)%(1j;%{%F{cyan}%}%j⚙ ;)%{%F{blue}%}%n %{%F{red}%}at %{%F{green}%}%M' | |
prompt_segment blue black '%~' | |
if $git_status; then | |
prompt_segment green black '${(e)git_info[prompt]}${git_info[status]}' | |
fi | |
prompt_end | |
} | |
start_time=$SECONDS | |
function prompt_paradox_preexec { | |
start_time=$SECONDS | |
} | |
function calc_elapsed_time { | |
if [[ $timer_result -ge 3600 ]]; then | |
let "timer_hours = $timer_result / 3600" | |
let "remainder = $timer_result % 3600" | |
let "timer_minutes = $remainder / 60" | |
let "timer_seconds = $remainder % 60" | |
print -P "%B%F{red}>>> elapsed time ${timer_hours}h${timer_minutes}m${timer_seconds}s%b" | |
elif [[ $timer_result -ge 60 ]]; then | |
let "timer_minutes = $timer_result / 60" | |
let "timer_seconds = $timer_result % 60" | |
print -P "%B%F{yellow}>>> elapsed time ${timer_minutes}m${timer_seconds}s%b" | |
elif [[ $timer_result -gt 10 ]]; then | |
print -P "%B%F{green}>>> elapsed time ${timer_result}s%b" | |
fi | |
} | |
function prompt_paradox_precmd { | |
setopt LOCAL_OPTIONS | |
unsetopt XTRACE KSH_ARRAYS | |
# Get Git repository information. | |
if (( $+functions[git-info] )); then | |
git_status=git-info | |
fi | |
timer_result=$(($SECONDS-$start_time)) | |
if [[ $timer_result -gt 10 ]]; then | |
calc_elapsed_time | |
fi | |
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 | |
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' | |
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: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 \ | |
'prompt' '$(coalesce "%b" "%p" "%c")%s' \ | |
'status' ' %A%B%S%a%d%m%r%U%u' | |
# Define prompts. | |
PROMPT=' | |
%{%f%b%k%}$(build_prompt) | |
${editor_info[keymap]} ' | |
RPROMPT='[%D{%L:%M:%S %p}]' | |
SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' | |
} | |
prompt_paradox_setup "$@" |