# Added from: https://raw.github.com/paradox460/prezto/paradox/modules/prompt/functions/prompt_paradox_setup # 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}%}@%{%F{green}%}%M' prompt_segment blue black '%2~' 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' 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: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 "$@"