Add zsh completion

This commit is contained in:
Sebastian Ramacher 2018-05-22 14:55:34 +02:00
parent 11da8e7c8e
commit 753ca0f315
2 changed files with 58 additions and 0 deletions

View File

@ -52,5 +52,11 @@ bash_completion = configure_file(
output: 'zathura',
configuration: conf_data
)
zsh_completion = configure_file(
input: 'zsh-completion.in',
output: '_zathura',
configuration: conf_data
)
install_data(bash_completion, install_dir: join_paths(datadir, 'bash-completion', 'completions'))
install_data(zsh_completion, install_dir: join_paths(datadir, 'zsh', 'vendor-completions'))

52
data/zsh-completion.in Normal file
View File

@ -0,0 +1,52 @@
#compdef zathura
local -a all_opts
all_opts=(
'(-c --config-dir=DIR)'{-c,--config-dir}'[Path to config directory]:config directory:_files -/'
'(-d --data-dir=DIR)'{-d,--data-dir}'[Path to data directory]:data directory:_files -/'
'--cache-dir=DIR[Path to cache directory]:cache directory:_files -/'
'(-p --plugins-dir=DIR)'{-p,--plugins-dir}'[Path to plugins directory]:plugins directory:_files -/'
'(-e --reparent=XID)'{-e,--reparent}'[Reparents to window specified by XID (X11)]:xid'
'(-w --password=password)'{-w,--password}'[Document password]:password'
'(-P --page=page)'{-p,--page}'[Page number to go to]:page number'
'(-l --log-level=level)'{-l,--log-level}'[Log level]:level:(error warning info debug)'
'(-x --snyctex-editor-command=cmd)'{-x,--synxtec-editor-command}'[Synctex editor (forwarded to the synctex command)]:command'
'--synctex-forward=position[Move to given synctex position]:position'
'--synctex-pid=pid[Highlight position in given process]:pid'
'--mode=mode[Start in a non-default mode]:mode:(presentation fullscreen)'
'--fork[Fork into the background]'
'-h --help[Show help message]'
'-V --version[Print version information]'
'*:file:->files'
)
local context state state_descr line
typeset -A opt_args
_arguments -S "$all_opts[@]" && return 0
local exts
for PLUGIN in @PLUGINDIR@/lib*.so; do
case ${PLUGIN##*/} in
libpdf-poppler.so)
exts="$exts|pdf"
;;
libpdf-mupdf.so)
exts="$exts|pdf|epub|oxps"
;;
libps.so)
exts="$exts|ps|eps|epsi|epsf"
;;
libdjvu.so)
exts="$exts|djvu|djv"
;;
libcb.so)
exts="$exts|cb7|cbr|cbz|cbt|rar|zip|7z|tar"
;;
esac
done
case $state in
(files)
_files -g "*.($exts)"
;;
esac