about summary refs log tree commit diff
path: root/Completion/X/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/X/Command')
-rw-r--r--Completion/X/Command/_xwit176
1 files changed, 176 insertions, 0 deletions
diff --git a/Completion/X/Command/_xwit b/Completion/X/Command/_xwit
new file mode 100644
index 000000000..8676ef484
--- /dev/null
+++ b/Completion/X/Command/_xwit
@@ -0,0 +1,176 @@
+#compdef xwit
+
+local word=$'[^\0]#\0'
+local nul=$'\0'
+
+local guard='-_xwit_guard ${match[1]%?}'
+
+_xwit_guard () {
+  local opt="$1" o
+  (( no[$opt]-- ))
+  for o in ${=eo[$opt]}; do
+    no[$o]=0
+  done 
+  :
+}
+
+_xwit_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 --
+
+#  compadd "$expl[@]" - ${(k)no[(R)*~0]} ||
+#    compadd "$expl[@]" - ${(k)no}
+}
+
+_regex_arguments _xwit_parse \
+  "/$word/" \
+  \( "/-display$nul/" "$guard" "/$word/" ':option-display:display:_x_display' \
+  \| "/-(sync|pop|open|iconify|unmap|root|current|select|(no|)(save|backingstore|saveunder))$nul/" "$guard" \
+  \| "/-resize$nul/" "$guard" \
+     "/$word/" ':option-resize-width:width:' \
+     "/$word/" ':option-resize-height:height:' \
+  \| "/-rows$nul/" "$guard" "/$word/" ':option-rows:rows:' \
+  \| "/-columns$nul/" "$guard" "/$word/" ':option-columns:columns:' \
+  \| "/-move$nul/" "$guard" \
+     "/$word/" ':option-move-x:x:' \
+     "/$word/" ':option-move-y:y:' \
+  \| "/-rmove$nul/" "$guard" \
+     "/$word/" ':option-rmove-x:x:' \
+     "/$word/" ':option-rmove-y:y:' \
+  \| "/-warp$nul/" "$guard" \
+     "/$word/" ':option-warp-x:x:' \
+     "/$word/" ':option-warp-y:y:' \
+  \| "/-rwarp$nul/" "$guard" \
+     "/$word/" ':option-rwarp-x:x:' \
+     "/$word/" ':option-rwarp-y:y:' \
+  \| "/-colormap$nul/" "$guard" \
+     "/$word/" ':option-colormap:colormapid:_x_colormapid' \
+  \| "/-(name|label)$nul/" "$guard" \
+     "/$word/" ':option-name:name:_x_name' \
+  \| "/-iconname$nul/" "$guard" \
+     "/$word/" ':option-name:iconname:_x_name' \
+  \| "/-bitmap$nul/" "$guard" \
+     "/$word/" ':option-bitmap:bitmap file:_files -g *.xbm' \
+  \| "/-mask$nul/" "$guard" \
+     "/$word/" ':option-mask:mask file:_files -g *.xbm' \
+  \| "/-iconmove$nul/" "$guard" \
+     "/$word/" ':option-iconmove-x:x:' \
+     "/$word/" ':option-iconmove-y:y:' \
+  \| "/-id$nul/" "$guard" "/$word/" ':option-id:window id:_x_window' \
+  \| "/-(no|)keyrepeat$nul/" "$guard" \
+      \( "/[0-9]##$nul/" ':option-keyrepeat-keycode:keycode:{[[ -prefix [0-9]# ]] && _message keycode}' \
+	\( "/-$nul/" "/[0-9]##$nul/" \
+	   ':option-keyrepeat-last-keycode:last keycode:{[[ -prefix [0-9]# ]] && _message "last keycode"}' \| \) \) \# \
+  \| "/-names$nul/" "$guard" \
+     "/$word/" ':option-names:window name:_x_window -n' \# \
+  \| "/[]/" ':options:option:_xwit_compopts' \
+  \) \#
+
+_xwit () {
+  local expl allopts
+  typeset -A desc no eo
+
+  desc=(
+    -display 'specify display'
+    -sync 'synchronous mode'
+    -pop 'pop up window'
+    -open 'pop up window'
+    -iconify 'iconify window'
+    -unmap 'iconify window by unmapping'
+    -root 'select the root window'
+    -current 'select the window under current pointer'
+    -select 'select the window interactively'
+    -save 'activate screen saver'
+    -backingstore 'enable backingstore'
+    -saveunder 'enable saveunder'
+    -nosave 'reset screen saver'
+    -nobackingstore 'disable backingstore'
+    -nosaveunder 'disable saveunder'
+    -resize 'resize window'
+    -rows 'resize window rows'
+    -columns 'resize window columns'
+    -move 'move window'
+    -rmove 'move window relatively'
+    -warp 'warp pointer'
+    -rwarp 'warp pointer relatively'
+    -colormap 'install colormap'
+    -name 'specify window name'
+    -label 'specify window name'
+    -iconname 'specify icon name'
+    -bitmap 'specify icon bitmap'
+    -mask 'specify icon mask'
+    -iconmove 'move icon'
+    -id 'select the window by window-ID'
+    -keyrepeat 'enable keyrepeat'
+    -nokeyrepeat 'disable keyrepeat'
+    -names 'select the window by name'
+  )
+
+  no=(
+    -display 1
+    -sync 1
+    -pop 1 -open 0
+    -iconify 1
+    -unmap 1
+    -root 1
+    -current 1
+    -select 1
+    -save 1
+    -backingstore 1
+    -saveunder 1
+    -nosave 1
+    -nobackingstore 1
+    -nosaveunder 1
+    -resize 1
+    -rows 1
+    -columns 1
+    -move 1
+    -rmove 1
+    -warp 1
+    -rwarp 1
+    -colormap 1
+    -name 1 -label 0
+    -iconname 1
+    -bitmap 1
+    -mask 1
+    -iconmove 1
+    -id 1
+    -keyrepeat 1
+    -nokeyrepeat 1
+    -names 1
+  )
+
+  allopts=()
+  for opt in ${(k)no}
+  do
+    if (( $+desc[$opt] )); then
+      allopts=("$allopts[@]" "$opt:$desc[$opt]")
+    else
+      allopts=("$allopts[@]" "$opt")
+    fi
+  done
+
+  eo=(
+    -root    '-root -current -select -id -names'
+    -current '-root -current -select -id -names'
+    -select  '-root -current -select -id -names'
+    -id      '-root -current -select -id -names'
+    -names   '-root -current -select -id -names'
+  )
+
+  _xwit_parse
+}
+
+_xwit "$@"