summary refs log tree commit diff
path: root/Completion/X/_xset
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2000-04-26 08:31:20 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2000-04-26 08:31:20 +0000
commitf33678484656a91fdaa6502ca5c088c2062fec1b (patch)
treeb45b3c0c311e8bf3e412a89b0709b2e1a3bbf06f /Completion/X/_xset
parentddb16a1b2b2426f14daa54e6ee759bea64f3cb55 (diff)
downloadzsh-f33678484656a91fdaa6502ca5c088c2062fec1b.tar.gz
zsh-f33678484656a91fdaa6502ca5c088c2062fec1b.tar.xz
zsh-f33678484656a91fdaa6502ca5c088c2062fec1b.zip
new completion function for xset from Tanaka (10885)
Diffstat (limited to 'Completion/X/_xset')
-rw-r--r--Completion/X/_xset197
1 files changed, 197 insertions, 0 deletions
diff --git a/Completion/X/_xset b/Completion/X/_xset
new file mode 100644
index 000000000..6cf4da8e1
--- /dev/null
+++ b/Completion/X/_xset
@@ -0,0 +1,197 @@
+#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 "$@"