mirror of
https://github.com/zdharma-continuum/zinit.git
synced 2026-09-10 07:36:38 -04:00
118 lines
3.8 KiB
Plaintext
118 lines
3.8 KiB
Plaintext
#compdef zplugin zpl zplg
|
|
|
|
local context state state_descr line ret=1
|
|
typeset -A opt_args
|
|
|
|
typeset -a commands
|
|
commands=(
|
|
help:'usage information'
|
|
load:'load plugin'
|
|
unload:'unload plugin'
|
|
report:'show plugin'"'"'s report'
|
|
all-reports:'show all plugin reports'
|
|
loaded:'show what plugins are loaded'
|
|
list:'show what plugins are loaded'
|
|
comp:'list completions in use'
|
|
completions:'list completions in use'
|
|
cdisable:'disable completion'
|
|
cenable:'enable completion'
|
|
creinstall:'install completions for plugin'
|
|
cuninstall:'uninstall completions for plugin'
|
|
compinit:'refresh installed completions'
|
|
)
|
|
|
|
_arguments \
|
|
'1: :->command'\
|
|
'*: :->argument' && ret=0
|
|
|
|
case $state in
|
|
command)
|
|
_describe -t commands "Zplugin command" commands && ret=0
|
|
;;
|
|
argument)
|
|
case $words[2] in
|
|
help)
|
|
ret=0
|
|
;;
|
|
load)
|
|
ret=0
|
|
;;
|
|
unload)
|
|
compadd "$@" -a - ZPLG_REGISTERED_PLUGINS && ret=0
|
|
;;
|
|
report)
|
|
compadd "$@" -a - ZPLG_REGISTERED_PLUGINS && ret=0
|
|
;;
|
|
all-reports)
|
|
ret=0
|
|
;;
|
|
loaded|list)
|
|
ret=0
|
|
;;
|
|
comp|completions)
|
|
ret=0
|
|
;;
|
|
cdisable)
|
|
# Find enabled completions
|
|
typeset -a completions
|
|
completions=( ~/.zplugin/completions/_*(N:t) )
|
|
completions=( "${completions[@]#_}" )
|
|
compadd "$@" -a - completions && ret=0
|
|
;;
|
|
cenable)
|
|
# Find disabled
|
|
typeset -a completions
|
|
completions=( ~/.zplugin/completions/[^_]*(N:t) )
|
|
compadd "$@" -a - completions && ret=0
|
|
;;
|
|
creinstall)
|
|
# Complete only plugins that have any completions
|
|
# We must iterate each plugin to check
|
|
# for completions that can be installed
|
|
typeset -a plugins completions
|
|
local p c user plugin
|
|
for p in "${ZPLG_PLUGINS_DIR[@]}"/*; do
|
|
completions=( "$p"/_*(N) )
|
|
for c in "${completions[@]}"; do
|
|
p="${p:t}"
|
|
user="${p%%---*}"
|
|
plugin="${p#*---}"
|
|
plugins+=( "$user/$plugin" )
|
|
break
|
|
done
|
|
done
|
|
compadd "$@" -a - plugins && ret=0
|
|
;;
|
|
cuninstall)
|
|
# We must iterate each plugin and check if
|
|
# it has completions that are installed
|
|
typeset -a plugins completions
|
|
local p c user plugin
|
|
for p in "${ZPLG_PLUGINS_DIR[@]}"/*; do
|
|
completions=( "$p"/_*(N) )
|
|
for c in "${completions[@]}"; do
|
|
cfile="${c:t}"
|
|
bkpfile="${cfile#_}"
|
|
# Completion installed, either enabled or disabled?
|
|
if [[ -e "$ZPLG_COMPLETIONS_DIR"/"$cfile" || -e "$ZPLG_COMPLETIONS_DIR"/"$bkpfile" ]]; then
|
|
p="${p:t}"
|
|
user="${p%%---*}"
|
|
plugin="${p#*---}"
|
|
plugins+=( "$user/$plugin" )
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
compadd "$@" -a - plugins && ret=0
|
|
;;
|
|
compinit)
|
|
ret=0
|
|
;;
|
|
*)
|
|
ret=1
|
|
;;
|
|
esac
|
|
esac
|
|
|
|
return "$ret"
|