Allow excluding directories from starship's git status module

This commit is contained in:
Alexander Rosenberg 2022-11-20 03:17:52 -08:00
parent b8e8ec9cd6
commit 1f110837c6
Signed by: Zander671
GPG Key ID: 5FD0394ADBD72730

View File

@ -139,7 +139,7 @@ SPACESHIP_PACKAGE_SYMBOL=" "
autoload -U promptinit && promptinit
prompt spaceship
# Change cursor shape for different vi modes.
function zle-line-init zle-keymap-select {
function __zsh_vim_key_prompt_handler {
SPACESHIP_CHAR_SYMBOL=""
local _shape=0
case "${KEYMAP}" in
@ -157,9 +157,37 @@ function zle-line-init zle-keymap-select {
zle reset-prompt
printf '\e[%d q' "${_shape}"
}
function __zsh_check_disabled_git_prompt_dirs {
local excluded=false
for file in ${(s:\0:)__ZSH_PROMPT_EXCLUDE_GIT_STATUS}; do
if [[ "${PWD:P}/" = "${file}/"* ]]; then
SPACESHIP_GIT_STATUS_SHOW=false
excluded=true
break
fi
done
if ! $excluded; then
SPACESHIP_GIT_STATUS_SHOW=true
fi
}
function chpwd {
__zsh_check_disabled_git_prompt_dirs
}
function zle-line-init {
__zsh_vim_key_prompt_handler
}
function zle-keymap-select {
__zsh_vim_key_prompt_handler
}
zle -N zle-keymap-select
zle -N zle-line-init
# Exclude DIR from spaceship's git status module
# prompt_exclude_git_status <dir>
function prompt_exclude_git_status {
__ZSH_PROMPT_EXCLUDE_GIT_STATUS="${__ZSH_PROMPT_EXCLUDE_GIT_STATUS}\0${1:P}"
}
# Bookmarks
[ -v ZSH_BOOKMARK_DIR ] || ZSH_BOOKMARK_DIR="${HOME}/.cache/zsh/bookmarks"
[ -v ZSH_BOOKMARK_LS ] || ZSH_BOOKMARK_LS=true
@ -209,6 +237,7 @@ setopt histignoredups
# Clean up internal functions
unfunction load_plugin
unfunction prompt_exclude_git_status
# Run fortune and cowsay if we are not in nvim
[[ -v NVIM ]] || fortune | cowsay -felephant-in-snake -n