1
0
mirror of https://github.com/danbee/dotfiles-local synced 2025-03-04 08:49:07 +00:00

It lives!

This commit is contained in:
Daniel Barber 2019-04-24 22:05:44 -04:00
parent 6bdf768a91
commit d0ed6384fe
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8

View File

@ -1,69 +1,30 @@
source "$HOME/.zsh/lib/async.zsh" source "$HOME/.zsh/lib/gitstatus/gitstatus.plugin.zsh"
async_init gitstatus_start MY
async_register_callback git_prompt_worker git_prompt_callback export GIT_PROMPT=""
export PROMPT_GIT_BRANCH="" update_git_prompt() {
export PROMPT_GIT_DIRTY="" typeset -g GIT_PROMPT=""
git_prompt_callback() { gitstatus_query -t 5 MY || return
case $1 in [[ $VCS_STATUS_RESULT == ok-sync ]] || return
git_branch)
PROMPT_GIT_BRANCH=$3
;;
git_dirty)
PROMPT_GIT_DIRTY=$3
;;
esac
zle reset-prompt GIT_PROMPT+="%{$fg_bold[green]%}${VCS_STATUS_LOCAL_BRANCH}%{$reset_color%}"
}
# gets whether git is currently dirty if [[ $VCS_STATUS_HAS_STAGED == 1 ]] || [[ $VCS_STATUS_HAS_UNSTAGED ]]; then
git_dirty() { GIT_PROMPT+="%{$fg_bold[red]%}✱%{$reset_color%}"
git diff --ignore-submodules --quiet
if [[ $? == 1 ]]; then
echo "✱"
else
git diff --staged --ignore-submodules --quiet
[[ $? == 1 ]] && echo "✱"
fi fi
}
# gets the current git branch [[ $VCS_STATUS_COMMITS_AHEAD -gt 0 ]] && GIT_PROMPT+=" ⇡${VCS_STATUS_COMMITS_AHEAD}"
git_branch() { [[ $VCS_STATUS_COMMITS_BEHIND -gt 0 ]] && GIT_PROMPT+=" ⇣${VCS_STATUS_COMMITS_BEHIND}"
git rev-parse --abbrev-ref HEAD 2>/dev/null
}
# adds the current branch name in green GIT_PROMPT+=" "
git_prompt_info() {
if [[ -n $PROMPT_GIT_BRANCH ]]; then
echo "%{$fg_bold[green]%}${PROMPT_GIT_BRANCH}%{$reset_color%}%{$fg_bold[red]%}${PROMPT_GIT_DIRTY}%{$reset_color%} "
fi
} }
git_branch_async() {
async_job git_prompt_worker git_branch
}
git_status_async() {
async_job git_prompt_worker git_dirty
}
worker_change_directory() {
PROMPT_GIT_BRANCH=""
PROMPT_GIT_DIRTY=""
async_worker_eval git_prompt_worker builtin cd -q "$PWD"
}
async_start_worker git_prompt_worker
autoload -Uz add-zsh-hook autoload -Uz add-zsh-hook
add-zsh-hook chpwd worker_change_directory add-zsh-hook precmd update_git_prompt
add-zsh-hook precmd git_branch_async
add-zsh-hook precmd git_status_async
# makes color constants available # makes color constants available
autoload -U colors autoload -U colors
@ -76,12 +37,12 @@ export CLICOLOR=1
setopt promptsubst setopt promptsubst
# prompt # prompt
export PROMPT='$(git_prompt_info)${SSH_CONNECTION+"%{$fg[yellow]%}%n@%m%{$reset_color%}:"}%{$fg_bold[blue]%}%2c%{$reset_color%} %{$fg_bold[cyan]%}%{$reset_color%} ' export PROMPT='${GIT_PROMPT}${SSH_CONNECTION+"%{$fg[yellow]%}%n@%m%{$reset_color%}:"}%{$fg_bold[blue]%}%2c%{$reset_color%} %{$fg_bold[cyan]%}%{$reset_color%} '
export RPROMPT='%D{%K:%M:%S}' export RPROMPT='%D{%K:%M:%S}'
# update the prompt on carriage return # update the prompt on carriage return
function _reset-prompt-and-accept-line() { # function _reset-prompt-and-accept-line() {
zle reset-prompt # zle reset-prompt
zle .accept-line # zle .accept-line
} # }
zle -N accept-line _reset-prompt-and-accept-line # zle -N accept-line _reset-prompt-and-accept-line