You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
# A simple prompt based on https://github.com/isqua/bureau
|
|
ASYNC_PROC=0
|
|
|
|
git_prompt=""
|
|
|
|
_prompt_setup () {
|
|
autoload -U colors && colors
|
|
autoload -Uz vcs_info add-zsh-hook
|
|
_prompt_git_staff
|
|
add-zsh-hook precmd _prompt_precmd
|
|
add-zsh-hook zshexit _prompt_exit
|
|
PROMPT=$(_prompt)
|
|
}
|
|
|
|
_prompt () {
|
|
local color=green
|
|
if [ "$UID" = "0" ]; then color=red; fi
|
|
_display_arrow
|
|
}
|
|
|
|
_prompt_git_staff() {
|
|
zstyle ':vcs_info:*' enable git
|
|
zstyle ':vcs_info:*' check-for-changes true
|
|
zstyle ':vcs_info:*' max-exports 2
|
|
zstyle ':vcs_info:git*' stagedstr "%{$fg_bold[blue]%}●"
|
|
zstyle ':vcs_info:git*' unstagedstr "%{$fg_bold[red]%}●"
|
|
zstyle ':vcs_info:git*' formats "on %{$fg[blue]%}(%{$fg[red]%}%m%u%c%{$fg[yellow]%} %{$fg[magenta]%} %b%{$fg[blue]%})%{$reset_color%}"
|
|
}
|
|
|
|
_prompt_precmd() {
|
|
local left="%{$fg[cyan]%}%c%{$reset_color%} $(_prompt_vcs_prompt &!)$git_prompt"
|
|
print -P "\n${left}"
|
|
if [[ "${ASYNC_PROC}" != 0 ]]; then
|
|
kill -s HUP $ASYNC_PROC >/dev/null 2>&1 || :
|
|
fi
|
|
ASYNC_PROC=$!
|
|
}
|
|
|
|
_prompt_vcs_prompt () {
|
|
vcs_info
|
|
printf "%s" "$vcs_info_msg_0_" > "$(_prompt_temp_file)"
|
|
kill -s USR1 $$
|
|
}
|
|
|
|
_prompt_exit () {
|
|
rm -f "$(_prompt_temp_file)" 2> /dev/null
|
|
}
|
|
|
|
_display_arrow() {
|
|
echo "%(?:%{$fg_bold[green]%}➙ : %{$fg_bold[red]%}➙ %{$reset_color%})"
|
|
}
|
|
|
|
_prompt_string_width () {
|
|
local str=$1
|
|
echo ${#${(S%%)str//(\%([KF1]|)\{*\}|\%[Bbkf])}}
|
|
}
|
|
|
|
_prompt_temp_file() {
|
|
echo "/tmp/$(whoami)_zsh_rprompt.$$"
|
|
}
|
|
|
|
TRAPUSR1 () {
|
|
git_prompt="$(cat $(_prompt_temp_file))"
|
|
ASYNC_PROC=0
|
|
zle && zle .reset-prompt
|
|
}
|
|
|
|
|
|
function clear-scrollback-buffer {
|
|
clear
|
|
ASYNC_PROC=0
|
|
_prompt_precmd
|
|
zle .reset-prompt && zle -R
|
|
}
|
|
|
|
zle -N clear-scrollback-buffer
|
|
bindkey '^L' clear-scrollback-buffer
|
|
|
|
|
|
_prompt_setup $@
|
|
|