1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-07 11:41:16 +02:00

38986: new gsettings completion

This commit is contained in:
Oliver Kiddle 2016-08-03 17:27:25 +02:00
parent f70615d878
commit 7d282fa588
2 changed files with 51 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2016-08-03 Oliver Kiddle <opk@zsh.org>
* 38986: Completion/Unix/Command/_gsettings: new completion
2016-08-01 Daniel Shahaf <d.s@daniel.shahaf.name>
* 38981: Completion/Unix/Command/_man: Followup to 37634:

View file

@ -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