zdharma-continuum.zinit/_zplugin
2016-01-30 21:37:21 +01:00

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"