mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			176 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #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 -e keycodes keycode}' \
 | |
| 	\( "/-$nul/" "/[0-9]##$nul/" \
 | |
| 	   ':option-keyrepeat-last-keycode:last keycode:{[[ -prefix [0-9]# ]] && _message -e keycodes "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 "$@"
 |