mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 13:33:52 +01:00
198 lines
4.9 KiB
Plaintext
198 lines
4.9 KiB
Plaintext
|
#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 () {
|
||
|
_wanted directories expl directory _files -/
|
||
|
}
|
||
|
|
||
|
_xset_compfpdel () {
|
||
|
_wanted directories expl directory compadd - ${(s:,:)${"$(xset q)"##*
|
||
|
Font Path:
|
||
|
#}%%
|
||
|
*}
|
||
|
}
|
||
|
|
||
|
_regex_arguments _xset_parse \
|
||
|
"/$word/" \
|
||
|
\( "/-d(isplay|)$nul/" "$guard" "/$word/" ":_x_display" \
|
||
|
\| "/-c$nul/" "$guard" \
|
||
|
\| "/c$nul/" "$guard" \
|
||
|
\( "/(on|off)$nul/" ':_wanted values expl click compadd on off' \
|
||
|
\| "/[0-9]##$nul/" ':_message volume' \
|
||
|
\| \) \
|
||
|
\| "/-b$nul/" "$guard" \
|
||
|
\| "/b$nul/" "$guard" \
|
||
|
\( "/(on|off)$nul/" ':_wanted values expl bell compadd on off' \
|
||
|
\| "/[0-9]##$nul/" ':_message volume' \
|
||
|
\( "/[0-9]##$nul/" ':_message pitch' \
|
||
|
\( "/[0-9]##$nul/" ':_message duration' \
|
||
|
\| \) \
|
||
|
\| \) \
|
||
|
\| \) \
|
||
|
\| "/bc$nul/" "$guard" \
|
||
|
\| "/-bc$nul/" "$guard" \
|
||
|
\| "/fp$nul/" "$guard" "/$word/" ':_wanted values expl "font path" compadd default rehash' \
|
||
|
\| "/(fp[+=]|[+]fp)$nul/" "$guard" "/$word/" ':compset -P "*,"; _xset_compfpadd' \
|
||
|
\| "/(fp-|-fp)$nul/" "$guard" "/$word/" ':compset -P "*,"; _xset_compfpdel' \
|
||
|
\| "/-led$nul/" "$guard" \
|
||
|
\( "/[0-9]##$nul/" ':_message integer' \
|
||
|
\| \) \
|
||
|
\| "/led$nul/" "$guard" \
|
||
|
\( "/(on|off)$nul/" ':_wanted values expl led compadd on off' \
|
||
|
\| "/[0-9]##$nul/" ':_message integer' \
|
||
|
\| \) \
|
||
|
\| "/m(ouse|)$nul/" "$guard" \
|
||
|
\( "/default$nul/" ':_wanted values expl "mouse parameter" compadd default' \
|
||
|
\| "/[0-9]##(/[0-9]##|)$nul/" ':_message accel_mult/accel_div' \
|
||
|
\( "/[0-9]##$nul/" ':_message threshold' \
|
||
|
\| \) \
|
||
|
\| \) \
|
||
|
\| "/[-+]dpms$nul/" "$guard" \
|
||
|
\| "/dpms$nul/" "$guard" \
|
||
|
\( "/[0-9]##$nul/" ':_message "standby timeout"' \
|
||
|
\( "/[0-9]##$nul/" ':_message "suspend timeout"' \
|
||
|
\( "/[0-9]##$nul/" ':_message "off timeout"' \
|
||
|
\| \) \
|
||
|
\| \) \
|
||
|
\| "/(on|standby|suspend|off)$nul/" ':_wanted values expl DPMS compadd on standby suspend off' \
|
||
|
\) \
|
||
|
\| "/s$nul/" "$guard" \
|
||
|
\( "/(blank|noblank|expose|noexpose|default|on|activate|reset)$nul/" \
|
||
|
':_wanted values expl "screen saver" compadd blank noblank expose noexpose default on activate reset off' \
|
||
|
\| "/off$nul/" \( "/off$nul/" ':compadd off' \| \) \
|
||
|
\| "/[0-9]##$nul/" ':_message length' \
|
||
|
\( "/[0-9]##$nul/" ':_message period' \
|
||
|
\| \) \
|
||
|
\| \) \
|
||
|
\| "/-r$nul/" "$guard" \
|
||
|
\( "/[0-9]##$nul/" ':_message keycode' \
|
||
|
\| \) \
|
||
|
\| "/r$nul/" "$guard" \
|
||
|
\( "/(on|off)$nul/" ':_wanted values expl autorepeat compadd on off' \
|
||
|
\| "/[0-9]##$nul/" ':_message keycode' \
|
||
|
\| \) \
|
||
|
\| "/p$nul/" "$guard" \
|
||
|
"/[0-9]##$nul/" ':_message pixel' \
|
||
|
"/$word/" ':_x_color' \
|
||
|
\| "/(-|)k$nul/" "$guard" \
|
||
|
\| "/(-|)q$nul/" "$guard" \
|
||
|
\| "/[]/" ':_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 "$@"
|