initial commit
This commit is contained in:
54
.config/zsh/lib/git.zsh
Normal file
54
.config/zsh/lib/git.zsh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/zsh
|
||||
|
||||
## fancy and manageable PS1 for git
|
||||
typeset -gA ZSHU_PS
|
||||
ZSHU_PS[git]=0
|
||||
|
||||
_zshu_git_avail() { (( $+commands[git] )) ; }
|
||||
|
||||
_zshu_git() { GIT_OPTIONAL_LOCKS=0 command git "$@"; }
|
||||
|
||||
_zshu_git_is_repo() { _zshu_git rev-parse --git-dir &>/dev/null ; }
|
||||
|
||||
zshu-git-test() {
|
||||
[ "${ZSHU_PS[git]}" = '1' ] || return 1
|
||||
|
||||
_zshu_git_avail || return 2
|
||||
|
||||
_zshu_git_is_repo || return 3
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
_zshu_git_pwd() {
|
||||
zshu-git-test || return
|
||||
local p=${(%):-%~}
|
||||
[[ "$p" =~ '/.+' ]] || return
|
||||
local s pfx last
|
||||
s=$(_zshu_git rev-parse --show-prefix)
|
||||
s="${s%%/}"
|
||||
if [ -n "$s" ] ; then
|
||||
p=${p%%/$s}
|
||||
last="${s:t}"
|
||||
pfx="${s%${last}}"
|
||||
pfx="${pfx%/}"
|
||||
pfx="/${pfx}${pfx:+/}"
|
||||
else
|
||||
last="/"
|
||||
fi
|
||||
ZSHU_PS[pwd]="%F{magenta}$p%F{cyan}${pfx}%B${last}%f%b"
|
||||
}
|
||||
|
||||
zshu-git-enable() { ZSHU_PS[git]=1 ; }
|
||||
zshu-git-disable() { ZSHU_PS[git]=0 ; }
|
||||
|
||||
zshu-git-status() {
|
||||
_zshu_git_avail
|
||||
echo "Git binary: "${(%):-%(?..NOT )}"found in PATH"
|
||||
[ "${ZSHU_PS[git]}" = 1 ]
|
||||
echo "Git prompt: "${(%):-%(?.enabled.disabled)}
|
||||
_zshu_git_is_repo
|
||||
echo "Git repo: "${(%):-%(?..NOT )}"present"
|
||||
}
|
||||
|
||||
ZSHU[pwd_hook]="${ZSHU[pwd_hook]}${ZSHU[pwd_hook]:+ }_zshu_git_pwd"
|
Reference in New Issue
Block a user