1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#compdef xfconf-query
local curcontext="$curcontext" state state_descr line ret=1
typeset -A opt_args
_arguments -C -s -w : \
'(-c --channel)'{-c,--channel}'[select channel to query/modify]:channel:( ${$(xfconf-query -l)\:#Channels\:} )' \
'(-p --property)'{-p,--property}'[select property to query/modify]:property:->property' \
'(-v --verbose)'{-v,--verbose}'[print property and value (with -l/-m)]' \
'(-t --type)'{-t,--type}'[specify the property value type]:type:(empty string bool {,u}int{,16,64} double array {,u}char float)' \
'(-R --recursive)'{-R,--recursive}'[recursively reset properties (with -r)]' \
+ '(operations)' \
{-h,--help}'[show help options]' \
{-V,--version}'[show version information]' \
{-s,--set}'[define the value of a property]:value' \
{-l,--list}'[list properties or channels]' \
{-n,--create}'[create a new property]:new property name' \
{-r,--reset}'[reset property]' \
{-T,--toggle}'[invert boolean property]' \
{-m,--monitor}'[monitor a channel for property changes]' && return
case $state in
property)
# if -c/--channel is currently on the line, use it to complete an property.
if [[ -v opt_args[(i)-(c|-channel)] ]]; then
local expl
_wanted properties expl property compadd "$@" -- ${(f)"$(xfconf-query -c ${(v)opt_args[(i)-(c|-channel)]} -l)"} && ret=0
else # just display a message
_message -e properties property && ret=0
fi
;;
esac
return ret
|