diff options
author | Oliver Kiddle <opk@zsh.org> | 2016-08-03 17:27:25 +0200 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2016-08-03 17:27:25 +0200 |
commit | 7d282fa588ba9901ef71177d85c731938cdce639 (patch) | |
tree | 61de029e7a5a2ab8ccb8c14cf0aad6cfb8ea8b1a /Completion/Unix | |
parent | f70615d878b80f9303f7e04daa11cef9e133ac3b (diff) | |
download | zsh-7d282fa588ba9901ef71177d85c731938cdce639.tar.gz zsh-7d282fa588ba9901ef71177d85c731938cdce639.tar.xz zsh-7d282fa588ba9901ef71177d85c731938cdce639.zip |
38986: new gsettings completion
Diffstat (limited to 'Completion/Unix')
-rw-r--r-- | Completion/Unix/Command/_gsettings | 47 |
1 files changed, 47 insertions, 0 deletions
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 |