1
0
dotfiles/.config/zsh/lib/completion.zsh

69 lines
1.8 KiB
Bash
Raw Normal View History

2021-03-21 18:25:10 +03:00
#!/bin/zsh
ZSHU[f_compdump]="${ZSHU[d_cache]}/compdump"
ZSHU[d_compcache]="${ZSHU[d_cache]}/compcache"
[ -d "${ZSHU[d_compcache]}" ] || mkdir -p "${ZSHU[d_compcache]}"
2021-03-22 22:57:36 +03:00
fpath=( "${ZSHU[d_cache]}/completion" $fpath )
2021-03-21 18:25:10 +03:00
__z_compdump_print() { printf '#zshu %s %s\n' "$1" "${(P)1}" ; }
__z_compdump_invalidate() {
command rm -f "${ZSHU[f_compdump]}"
find "${ZSHU[d_compcache]}/" -mindepth 1 -type f '!' -name '.keep' -delete
ZSHU[compdump_refresh]=1
}
__z_compdump_verify() {
unset "ZSHU[compdump_refresh]"
ZSHU[compdump_meta]='ZSH_VERSION ZSH_PATCHLEVEL FPATH PATH'
local i s
for i ( ${(s: :)ZSHU[compdump_meta]} ) ; do
s=$(__z_compdump_print "$i")
command grep -Fx -e "$s" "${ZSHU[f_compdump]}" &>/dev/null && continue
__z_compdump_invalidate
break
done
}
__z_compdump_finalize() {
local i
if (( ${+ZSHU[compdump_refresh]} )) ; then
{
echo
for i ( ${(s: :)ZSHU[compdump_meta]} ) ; do
__z_compdump_print "$i"
done
} | tee -a "${ZSHU[f_compdump]}" &>/dev/null
unset "ZSHU[compdump_refresh]"
fi
unset "ZSHU[compdump_meta]"
}
__z_comp_bash() {
(( ${+commands[$1]} )) || return 1
(( ${+_comps[$1]} )) && return 2
(( ${+ZSHU[compdump_bash]} )) || return 3
(( ${+2} )) && return 0
2021-03-22 22:44:26 +03:00
local f p x
2021-03-21 18:25:10 +03:00
f=0
for p ( /usr/share/bash-completion/completions ) ; do
2021-03-22 22:44:26 +03:00
x="_$1" ; [ -s "$p/$x" ] && f=1 && break
x="$1" ; [ -s "$p/$x" ] && f=1 && break
2021-03-21 18:25:10 +03:00
done
2021-03-22 22:44:26 +03:00
[ "$f" = 0 ] && return 4
complete -C "$x" "$1"
2021-03-21 18:25:10 +03:00
return 0
}
2021-03-22 22:57:36 +03:00
__z_comp_external() {
2021-03-21 18:25:10 +03:00
(( ${+commands[$1]} )) || return 1
2021-03-22 22:57:36 +03:00
(( ${+_comps[$1]} )) && return 2
local f="${ZSHU[d_cache]}/completion/_$1"
if ! [ -s "$f" ] ; then
"$2" > "$f" || return 3
fi
autoload -Uz "_$1"
2021-03-21 18:25:10 +03:00
return 0
}