Created
May 7, 2016 02:37
-
-
Save benmezger/e419bc448805e2b99dfe7f0f8f74b6a1 to your computer and use it in GitHub Desktop.
prompt_lambda_setup - zprezto's theme.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# my custom zprezto's prompt theme. | |
############ BEGIN SORIN ############# | |
# https://github.com/sorin-ionescu/prezto/blob/master/modules/prompt/functions/prompt_sorin_setup | |
function prompt_unix_pwd { | |
local pwd="${PWD/#$HOME/~}" | |
if [[ "$pwd" == (#m)[/~] ]]; then | |
_prompt_unix_pwd="$MATCH" | |
unset MATCH | |
else | |
_prompt_unix_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" | |
fi | |
} | |
function prompt_unix_git_info { | |
if (( _prompt_unix_precmd_async_pid > 0 )); then | |
# Append Git status. | |
if [[ -s "$_prompt_unix_precmd_async_data" ]]; then | |
alias typeset='typeset -g' | |
source "$_prompt_unix_precmd_async_data" | |
RPROMPT+='${git_info:+${(e)git_info[status]}}' | |
unalias typeset | |
fi | |
# Reset PID. | |
_prompt_unix_precmd_async_pid=0 | |
# Redisplay prompt. | |
zle && zle reset-prompt | |
fi | |
} | |
function prompt_unix_precmd_async { | |
# Get Git repository information. | |
if (( $+functions[git-info] )); then | |
git-info | |
typeset -p git_info >! "$_prompt_unix_precmd_async_data" | |
fi | |
# Signal completion to parent process. | |
kill -WINCH $$ | |
} | |
function prompt_unix_precmd { | |
setopt LOCAL_OPTIONS | |
unsetopt XTRACE KSH_ARRAYS | |
# format PWD | |
prompt_unix_pwd | |
# Kill the old process of slow commands if it is still running. | |
if (( _prompt_unix_precmd_async_pid > 0 )); then | |
kill -KILL "$_prompt_unix_precmd_async_pid" &>/dev/null | |
fi | |
# Compute slow commands in the background. | |
trap prompt_unix_git_info WINCH | |
prompt_unix_precmd_async &! | |
_prompt_unix_precmd_async_pid=$! | |
} | |
############ END SORIN SETUP ############## | |
function prompt_unix_setup { | |
setopt LOCAL_OPTIONS | |
unsetopt XTRACE KSH_ARRAYS | |
prompt_opts=(cr percent subst) | |
_prompt_unix_precmd_async_pid=0 | |
_prompt_unix_precmd_async_data="${TMPPREFIX}-prompt_unix_data" | |
# Load required functions. | |
autoload -Uz add-zsh-hook | |
# Add a hook for calling info functions before each command. | |
add-zsh-hook precmd prompt_unix_precmd | |
_prompt_unix_colors=( | |
"%F{1}" | |
) | |
# Set git-info parameters. | |
zstyle ':prezto:module:git:info' verbose 'no' | |
zstyle ':prezto:module:git:info:action' format ' +%s' | |
zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f' | |
zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f' | |
zstyle ':prezto:module:git:info:indexed' format ' ' | |
zstyle ':prezto:module:git:info:unindexed' format ' ' | |
zstyle ':prezto:module:git:info:untracked' format ' ' | |
zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f' | |
zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D' | |
# Define prompts. | |
PROMPT='%n λ %F{1}%m %F{4}${_prompt_unix_pwd} %f$ ' | |
RPROMPT='${git_info[rprompt]}' | |
} | |
prompt_unix_setup "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment