1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-11-20 05:53:52 +01:00
zsh/Completion/X/_xset

199 lines
5.6 KiB
Plaintext
Raw Normal View History

#compdef xset
local word=$'[^\0]#\0'
local nul=$'\0'
local guard='-_xset_guard ${match[1]%?}'
_xset_guard () {
local opt="$1" o
(( no[$opt]-- ))
for o in ${=eo[$opt]}; do
no[$o]=0
done
:
}
_xset_compopts () {
local expl
local opt tmp
tmp=()
for opt in ${(k)no[(R)*~0]}
do
if (( $+desc[$opt] )); then
tmp=("$tmp[@]" "$opt:$desc[$opt]")
else
tmp=("$tmp[@]" "$opt")
fi
done
_describe -o options tmp -- ||
_describe -o options allopts --
}
_xset_compfpadd () {
_files "$expl[@]" -/
}
_xset_compfpdel () {
compadd "$expl[@]" - ${(s:,:)${"$(xset q)"##*
Font Path:
#}%%
*}
}
_regex_arguments _xset_parse \
"/$word/" \
\( "/-d(isplay|)$nul/" "$guard" "/$word/" ':option-display:display:_x_display "$expl[@]"' \
\| "/-c$nul/" "$guard" \
\| "/c$nul/" "$guard" \
\( "/(on|off)$nul/" ':option-c-bool:click:compadd "$expl[@]" on off' \
\| "/[0-9]##$nul/" ':option-c-volume:volume:_message volume' \
\| \) \
\| "/-b$nul/" "$guard" \
\| "/b$nul/" "$guard" \
\( "/(on|off)$nul/" ':option-b-bool:bell:compadd "$expl[@]" on off' \
\| "/[0-9]##$nul/" ':option-b-volume:bell volume:_message volume' \
\( "/[0-9]##$nul/" ':option-b-pitch:bell pitch:_message pitch' \
\( "/[0-9]##$nul/" ':option-b-duration:bell duration:_message duration' \
\| \) \
\| \) \
\| \) \
\| "/bc$nul/" "$guard" \
\| "/-bc$nul/" "$guard" \
\| "/fp$nul/" "$guard" "/$word/" ':option-fp:font path:compadd "$expl[@]" default rehash' \
\| "/(fp[+=]|[+]fp)$nul/" "$guard" "/$word/" ':option-fp-add:font path:compset -P "*,"; _xset_compfpadd' \
\| "/(fp-|-fp)$nul/" "$guard" "/$word/" ':option-fp-del:font path:compset -P "*,"; _xset_compfpdel' \
\| "/-led$nul/" "$guard" \
\( "/[0-9]##$nul/" ':option-led-number:led number:_message "led number"' \
\| \) \
\| "/led$nul/" "$guard" \
\( "/(on|off)$nul/" ':option-led-bool:led:compadd "$expl[@]" on off' \
\| "/[0-9]##$nul/" ':option-led-number:led number:_message "led number"' \
\| \) \
\| "/m(ouse|)$nul/" "$guard" \
\( "/default$nul/" ':option-mouse-default:mouse parameter:compadd "$expl[@]" default' \
\| "/[0-9]##(/[0-9]##|)$nul/" ':option-mouse-mult-div:accel_mult/accel_div:_message accel_mult/accel_div' \
\( "/[0-9]##$nul/" ':option-mouse-threshold:threshold:_message threshold' \
\| \) \
\| \) \
\| "/[-+]dpms$nul/" "$guard" \
\| "/dpms$nul/" "$guard" \
\( "/[0-9]##$nul/" ':option-dpms-standby:standby timeout:_message "standby timeout"' \
\( "/[0-9]##$nul/" ':option-dpms-suspend:suspend timeout:_message "suspend timeout"' \
\( "/[0-9]##$nul/" ':option-dpms-off:off timeout:_message "off timeout"' \
\| \) \
\| \) \
\| "/force/" ':option-dpms-force:force DPMS state:compadd "$expl[@]" force' \
"/(on|standby|suspend|off)$nul/" ':option-dpms-state:DPMS state:compadd "$expl[@]" on standby suspend off' \
\) \
\| "/s$nul/" "$guard" \
\( "/(blank|noblank|expose|noexpose|default|on|activate|reset)$nul/" \
':option-s:screen saver:compadd "$expl[@]" blank noblank expose noexpose default on activate reset off' \
\| "/off$nul/" \( "/off$nul/" ':option-s-off-period:period off:compadd "$expl[@]" off' \| \) \
\| "/[0-9]##$nul/" ':option-s-timeout:length:_message length' \
\( "/[0-9]##$nul/" ':option-s-period:period:_message period' \
\| \) \
\| \) \
\| "/-r$nul/" "$guard" \
\( "/[0-9]##$nul/" ':option-r-keycode:keycode:_message keycode' \
\| \) \
\| "/r$nul/" "$guard" \
\( "/(on|off)$nul/" ':option-r-autorepeat:autorepeat:compadd "$expl[@]" on off' \
\| "/[0-9]##$nul/" ':option-r-keycode:keycode:_message keycode' \
\| \) \
\| "/p$nul/" "$guard" \
"/[0-9]##$nul/" ':option-p-pixel:pixel:_message pixel' \
"/$word/" ':option-p-color:color:_x_color "$expl[@]"' \
\| "/(-|)k$nul/" "$guard" \
\| "/(-|)q$nul/" "$guard" \
\| "/[]/" ':options:options:_xset_compopts' \
\) \#
_xset () {
local expl allopts
typeset -A desc no eo
desc=(
b 'specify bell parameters'
-b 'disable bell'
bc 'enable bug compatibility'
-bc 'disable bug compatibility'
c 'control key click'
-c 'disable key click'
-dpms 'disable DPMS'
+dpms 'enable DPMS'
dpms 'specify DPMS parameter'
fp\= 'set font path'
fp 'control font path'
-fp 'remove font path elements'
fp- 'remove font path elements'
+fp 'prepend font path elements'
fp+ 'append font path elements'
led 'control keyboard LEDs'
-led 'turn off all LEDs'
m 'specify mouse parameters'
mouse 'specify mouse parameters'
p 'specify pixel color values'
r 'enable autorepeat'
-r 'disable autorepeat'
s 'specify screen saver parameters'
q 'query current information'
k 'enable lock'
-k 'disable lock'
-display 'display'
)
no=(
-display 1 -d 0
-c 1 c 1
-b 1 b 1
-bc 1 bc 1
fp 1 fp= 1 +fp 1 fp+ 1 -fp 1 fp- 1
-led 1 led 1
mouse 1 m 0
+dpms 1 -dpms 1 dpms 1
s 1
-r 1 r 1
p 1
-k 1 k 1
-q 0 q 1
)
allopts=()
for opt in ${(k)no}
do
if (( $+desc[$opt] )); then
allopts=("$allopts[@]" "$opt:$desc[$opt]")
else
allopts=("$allopts[@]" "$opt")
fi
done
eo=(
-display '-display -d'
-d '-display -d'
-c '-c c'
c '-c c'
-b '-b b'
b '-b b'
-bc '-bc bc'
bc '-bc bc'
fp+ 'fp fp='
fp- 'fp fp='
+fp 'fp fp='
-fp 'fp fp='
m 'm mouse'
mouse 'm mouse'
-dpms '+dpms -dpms dpms'
+dpms '+dpms -dpms dpms'
dpms '+dpms -dpms dpms'
-k '-k k'
k '-k k'
)
_xset_parse
}
[[ -o kshautoload ]] || _xset "$@"