From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26250 invoked from network); 24 Mar 2000 11:27:22 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 24 Mar 2000 11:27:22 -0000 Received: (qmail 21902 invoked by alias); 24 Mar 2000 11:27:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 10223 Received: (qmail 21866 invoked from network); 24 Mar 2000 11:26:59 -0000 To: zsh-workers@sunsite.auc.dk Subject: PATCH: _xwit MIME-Version: 1.0 (generated by AKEMI 1.13.2 - =?ISO-2022-JP?B?Ig==?= =?ISO-2022-JP?B?GyRCQTA0Y0s8GyhCIg==?=) Content-Type: text/plain; charset=US-ASCII From: Tanaka Akira Date: 24 Mar 2000 20:26:21 +0900 Message-ID: User-Agent: Chao-gnus/6.12.5 AKEMI/1.13.2 (=?ISO-2022-JP?B?GyRCQTAbKEI=?= =?ISO-2022-JP?B?GyRCNGNLPBsoQg==?=) FLAM-DOODLE/1.12.6 (=?ISO-2022-JP?B?GyRCM3cbKEI=?= 10R4.0/5.0) Emacs/20.4 (sparc-sun-solaris2.6) MULE/4.0 (HANANOEN) This is a completion function for xwit. I used _regex_arguments for parsing a command line since xwit has the option -keyrepeat which cannot be handled by _arguments. -keyrepeat takes variable length of arguments for it, but the last argument is featureless --- just a integer. So _arguments cannot detect end of the option. Index: Completion/Base/_regex_arguments =================================================================== RCS file: /projects/zsh/zsh/Completion/Base/_regex_arguments,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 _regex_arguments --- Completion/Base/_regex_arguments 2000/01/19 01:17:24 1.1.1.14 +++ Completion/Base/_regex_arguments 2000/03/24 09:06:47 @@ -64,7 +64,7 @@ _regex_arguments () { local regex funcname="$1" shift - regex=(${@/(#b):(*)/":_ra_comp ${(qqqq)match[1]}"}) + regex=(${@:/(#b):(*)/":_ra_comp ${(qqqq)match[1]}"}) eval \ "$funcname"' () { --- /dev/null Fri Mar 24 11:42:38 2000 +++ Completion/X/_x_colormapid Mon Mar 6 00:45:05 2000 @@ -0,0 +1,15 @@ +#autoload + +local expl list desc + +_wanted colormapids expl 'colormap id' || return 1 + +list=(${(f)"$(xprop -root -f RGB_COLOR_MAP 32xcccccccxx ': $0\n'|awk -F'[ ():]' '/^[a-zA-Z_]+\(RGB_COLOR_MAP\)/ {print $5, "--", $1}')"}) + +if zstyle -T ":completion:${curcontext}:colormap-id" verbose; then + desc=(-ld list) +else + desc=() +fi + +compadd "$expl[@]" "$@" "$desc[@]" - "${(@)list%% *}" --- /dev/null Fri Mar 24 11:42:38 2000 +++ Completion/X/_xwit Fri Mar 24 20:19:29 2000 @@ -0,0 +1,97 @@ +#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 + _description options expl option + compadd "$expl[@]" - ${(k)no[(R)*~0]} || compadd "$expl[@]" - ${(k)no} +} + +_regex_arguments _xwit_parse \ + "/$word/" \ + \( \ + "/-/+" \ + \( "/display$nul/" "$guard" "/$word/" ":_x_display" \ + \| "/(sync|pop|open|iconify|unmap|root|current|select|(no|)(save|backingstore|saveunder))$nul/" "$guard" \ + \| "/resize$nul/" "$guard" "/$word/" ":_message width" "/$word/" ":_message height" \ + \| "/rows$nul/" "$guard" "/$word/" ":_message rows" \ + \| "/columns$nul/" "$guard" "/$word/" ":_message columns" \ + \| "/(r|)move$nul/" "$guard" "/$word/" ":_message x" "/$word/" ":_message y" \ + \| "/(r|)warp$nul/" "$guard" "/$word/" ":_message x" "/$word/" ":_message y" \ + \| "/colormap$nul/" "$guard" "/$word/" ":_x_colormapid" \ + \| "/(name|label)$nul/" "$guard" "/$word/" ":_x_name" \ + \| "/iconname$nul/" "$guard" "/$word/" ":_x_name" \ + \| "/bitmap$nul/" "$guard" "/$word/" ":_files -g \\*.xbm" \ + \| "/mask$nul/" "$guard" "/$word/" ":_files -g \\*.xbm" \ + \| "/iconmove$nul/" "$guard" "/$word/" ":_message x" "/$word/" ":_message y" \ + \| "/id$nul/" "$guard" "/$word/" ":_x_window" \ + \| "/(no|)keyrepeat$nul/" "$guard" \ + \( "/[0-9]##$nul/" ":_message keycode" \ + \( "/-$nul/" "/[0-9]##$nul/" ":_message 'last keycode'" \| \) \) \# \ + \| "/names$nul/" "$guard" "/$word/" ":_x_window -n" \# \ + \| "/[]/" ':_xwit_compopts' \ + \) \ + \) \# + +_xwit () { + typeset -A no eo + + 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 + ) + + 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 +} + +[[ -o kshautoload ]] || _xwit "$@" -- Tanaka Akira