From 7d282fa588ba9901ef71177d85c731938cdce639 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Wed, 3 Aug 2016 17:27:25 +0200 Subject: 38986: new gsettings completion --- Completion/Unix/Command/_gsettings | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Completion/Unix/Command/_gsettings (limited to 'Completion/Unix/Command/_gsettings') diff --git a/Completion/Unix/Command/_gsettings b/Completion/Unix/Command/_gsettings new file mode 100644 index 000000000..f47bbc6b1 --- /dev/null +++ b/Completion/Unix/Command/_gsettings @@ -0,0 +1,47 @@ +#compdef gsettings + +local curcontext="$curcontext" state line expl ret=1 +local subcmds + +_arguments \ + '(- 1 *)--version[show version information]' \ + '--schemadir[specify location of schemata]:directory:_directories' \ + ':command:->subcmds' \ + '*::args:->subargs' && ret=0 + +if [[ $state = subargs ]]; then + curcontext="${curcontext%:*}-$words[1]:" + case $words[1] in + help) state=subcmds;; + get|range|reset|writable|monitor) + _arguments ':schema:->schemata' ':key:->keys' + ;; + set) + _arguments ':schema:->schemata' ':key:->keys' ':value' + ;; + (list|reset)-(keys|recursively|children)) state=schemata ;; + *) _default && ret=0 ;; + esac +fi + +case $state in + subcmds) + subcmds=( ${(L)${${(M)${${(f)"$(_call_program commands $service help)"}[(r)Commands:*,-2]}:# *}#??}/ ##/:} ) + _describe -t commands 'command' subcmds -M 'r:?|-=* r:|=*' && ret=0 + state='' + ;; + schemata) + if compset -P '*:'; then + _directories && ret=0 + else + _wanted schemata expl 'schema' compadd -M 'r:|.=* r:|=*' \ + $(_call_program schemata $service list-schemas) && ret=0 + fi + ;; + keys) + _wanted keys expl 'key' compadd \ + $(_call_program keys $service list-keys $words[CURRENT-1]) && ret=0 + ;; +esac + +return ret -- cgit 1.4.1