From f4a1c3c4a34f9a7d2572be5a8811576566fc3ebf Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Fri, 24 Aug 2018 07:49:02 +0200 Subject: 43328: new zeal completion --- ChangeLog | 4 ++++ Completion/X/Command/_zeal | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 Completion/X/Command/_zeal diff --git a/ChangeLog b/ChangeLog index 7bde76715..9f4933c9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2018-08-24 Oliver Kiddle + + * 43328: Completion/X/Command/_zeal: new completion + 2018-08-23 dana * unposted: Completion/Unix/Command/_man: Fix --ascii typo diff --git a/Completion/X/Command/_zeal b/Completion/X/Command/_zeal new file mode 100644 index 000000000..334331d40 --- /dev/null +++ b/Completion/X/Command/_zeal @@ -0,0 +1,43 @@ +#compdef zeal + +local curcontext="$curcontext" cfg docset setdir mbegin mend ret=1 +local -a state line expl suf docsets globbed match +local -A opt_args dsets + +_arguments -S \ + ':query:->queries' \ + + '(opt)' \ + {-h,--help}'[display help information]' \ + {-v,--version}'[display version information]' \ + {-f,--force}'[force the application to run]' && ret=0 + +if [[ -n $state ]]; then + cfg=${XDG_CONFIG_HOME:-~/.config}/Zeal/Zeal.conf + if [[ -r $cfg ]]; then + docsets=${${(M)${(f)"$(<$cfg)"}:#path=*}#path=} + else + docsets=${XDG_DATA_HOME:-~/.local/share}/Zeal/Zeal/docsets + fi + for docset in $docsets/*.docset/Contents/Info.plist(N); do + setdir=${docset:h:h:r:t:l:gs/+/p} + [[ $(<$docset) = *DocSetPlatformFamily\<[^\<]#\(#b)([^\<]#)* ]] || + match=( ${docset:h:h:r:t:l:gs/+/p} ) + dsets+=( $match[1] ${docset:h} ) + done + if compset -P 1 '*:'; then + globbed=( ${dsets[${IPREFIX%:}]}/Resources/docSet.dsidx(N[1]) ) + if (( $+commands[sqlite3] )) && [[ -e $globbed ]]; then + _description queries expl 'query' + compadd "$expl[@]" - ${(f)"$(_call_program queries + sqlite3 $globbed 'select name from searchIndex')"} && ret=0 + else + _message -e queries 'query' + fi + else + compset -S ':*' || suf=( -qS : ) + _description docsets expl 'docset' + compadd "$expl[@]" $suf -k dsets && ret=0 + fi +fi + +return ret -- cgit 1.4.1