zsh-workers
 help / color / mirror / code / Atom feed
From: Tanaka Akira <akr@m17n.org>
To: zsh-workers@sunsite.auc.dk
Subject: PATCH: make _regex_arguments using _alternative.
Date: 06 May 2000 16:54:43 +0900	[thread overview]
Message-ID: <hvog0rwnmf0.fsf@serein.m17n.org> (raw)

I modified _regex_arguments again using _alternative.

Index: Completion/Base/_regex_arguments
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/_regex_arguments,v
retrieving revision 1.3
diff -u -r1.3 _regex_arguments
--- Completion/Base/_regex_arguments	2000/05/04 20:46:57	1.3
+++ Completion/Base/_regex_arguments	2000/05/06 07:46:18
@@ -81,20 +81,7 @@
 	_ra_left="$_ra_line[_ra_p1 + 1, _ra_p2]"
 	_ra_right="$_ra_line[_ra_p2 + 1, -1]"
 	compset -p $(( $#PREFIX - $#_ra_line + $_ra_p1 ))
-	tmp=("${(@)_ra_actions%%:*}")
-	if (( $#tmp )); then
-	  _tags "$tmp[@]"
-	  while _tags; do
-	    for _ra_com in "$_ra_actions[@]"; do
-	      if _requested "${_ra_com%%:*}"; then
-		while _next_label "${_ra_com%%:*}" expl "${${_ra_com#*:}%%:*}"; do
-		  eval "${_ra_com#*:*:}"
-		done
-		[[ nm -ne "$compstate[nmatches]" ]] && break 2
-	      fi
-	    done
-	  done
-	fi
+	(( $#_ra_actions )) && _alternative "$_ra_actions[@]"
       fi
       ;;
     3) _message "invalid regex";;
Index: Completion/Debian/_apt
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Debian/_apt,v
retrieving revision 1.4
diff -u -r1.4 _apt
--- Completion/Debian/_apt	2000/05/04 20:16:09	1.4
+++ Completion/Debian/_apt	2000/05/06 07:46:19
@@ -50,9 +50,8 @@
   # skip --
   [[ 0 -lt $# ]] && shift
 
-  comp_hasarg="\
-  case \$current_option in
-  ${comp_hasarg}esac"
+  comp_hasarg="{case \$current_option in
+  ${comp_hasarg}esac}"
 
   local short_seq false true bool bool_prefix intlevel word word1 nul qnul
   local comp_bool comp_intlevel comp_configfile comp_arbitem comp_long comp_opt
@@ -75,13 +74,13 @@
   nul=$'\0'
   qnul="\$'\\0'"
 
-  comp_bool='compadd "$expl[@]" '"$bool"
-  comp_intlevel= #"_message 'intlevel'"
-  comp_configfile='_files "$expl[@]"'
-  comp_arbitem= #"_message 'Foo::Bar=bar'"
+  comp_bool="($bool)"
+  comp_intlevel=
+  comp_configfile='_files'
+  comp_arbitem=
 
   comp_short=\
-'if [[ $PREFIX = -'"$short_seq"' ]]; then
+'{if [[ $PREFIX = -'"$short_seq"' ]]; then
   _apt_consume_short ${PREFIX[2,-1]}
   tmp1=(${(M)${(s:,:)${(kj:,:)num_options[(R)*~0]}}:#-?})
   tmp2=(${PREFIX}${^tmp1#-})
@@ -89,7 +88,7 @@
 elif [[ -z "$PREFIX" ]]; then
   tmp1=(${(M)${(s:,:)${(kj:,:)num_options[(R)*~0]}}:#-?})
   _describe -o option tmp1
-fi'
+fi}'
 
   comp_long=\
 'tmp1="${(j:|:)${(@)${(@M)${(@s:,:)${(@kj:,:)num_options[(R)*~0]}}:#--*}#--}}"
@@ -106,7 +105,9 @@
 tmp3=("$tmp3[@]" $_ra_left${(M)^short_hasarg:#$~tmp1} $_ra_left${(M)^short_configfile:#$~tmp1} $_ra_left${(M)^short_arbitem:#$~tmp1})
 _describe -o option tmp2 -- tmp3 -S='
 
-  comp_opt='{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }"
+  comp_opt='{{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }}"
+  comp_short="{$comp_short}"
+  comp_long="{$comp_long}"
 
   regex_short=()
   regex_long=()
Index: Completion/X/_xset
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/X/_xset,v
retrieving revision 1.2
diff -u -r1.2 _xset
--- Completion/X/_xset	2000/05/04 20:16:09	1.2
+++ Completion/X/_xset	2000/05/06 07:46:19
@@ -44,67 +44,67 @@
 
 _regex_arguments _xset_parse \
   "/$word/" \
-  \( "/-d(isplay|)$nul/" "$guard" "/$word/" ':option-display:display:_x_display "$expl[@]"' \
+  \( "/-d(isplay|)$nul/" "$guard" "/$word/" ':option-display:display:_x_display' \
   \| "/-c$nul/" "$guard" \
   \| "/c$nul/" "$guard" \
-    \( "/(on|off)$nul/" ':option-c-bool:click:compadd "$expl[@]" on off' \
-    \| "/[0-9]##$nul/" ':option-c-volume:volume:_message volume' \
+    \( "/(on|off)$nul/" ':option-c-bool:click:(on off)' \
+    \| "/[0-9]##$nul/" ':option-c-volume:volume:' \
     \| \) \
   \| "/-b$nul/" "$guard" \
   \| "/b$nul/" "$guard" \
-    \( "/(on|off)$nul/" ':option-b-bool:bell:compadd "$expl[@]" on off' \
-    \| "/[0-9]##$nul/" ':option-b-volume:bell volume:_message volume' \
-      \( "/[0-9]##$nul/" ':option-b-pitch:bell pitch:_message pitch' \
-	\( "/[0-9]##$nul/" ':option-b-duration:bell duration:_message duration' \
+    \( "/(on|off)$nul/" ':option-b-bool:bell:(on off)' \
+    \| "/[0-9]##$nul/" ':option-b-volume:bell volume:' \
+      \( "/[0-9]##$nul/" ':option-b-pitch:bell pitch:' \
+	\( "/[0-9]##$nul/" ':option-b-duration:bell duration:' \
 	\| \) \
       \| \) \
     \| \) \
   \| "/bc$nul/" "$guard" \
   \| "/-bc$nul/" "$guard" \
-  \| "/fp$nul/" "$guard" "/$word/" ':option-fp:font path:compadd "$expl[@]" default rehash' \
-  \| "/(fp[+=]|[+]fp)$nul/" "$guard" "/$word/" ':option-fp-add:font path:compset -P "*,"; _xset_compfpadd' \
-  \| "/(fp-|-fp)$nul/" "$guard" "/$word/" ':option-fp-del:font path:compset -P "*,"; _xset_compfpdel' \
+  \| "/fp$nul/" "$guard" "/$word/" ':option-fp:font path:(default rehash)' \
+  \| "/(fp[+=]|[+]fp)$nul/" "$guard" "/$word/" ':option-fp-add:font path:{compset -P "*,"; _xset_compfpadd}' \
+  \| "/(fp-|-fp)$nul/" "$guard" "/$word/" ':option-fp-del:font path:{compset -P "*,"; _xset_compfpdel}' \
   \| "/-led$nul/" "$guard" \
-    \( "/[0-9]##$nul/" ':option-led-number:led number:_message "led number"' \
+    \( "/[0-9]##$nul/" ':option-led-number:led number:' \
     \| \) \
   \| "/led$nul/" "$guard" \
-    \( "/(on|off)$nul/" ':option-led-bool:led:compadd "$expl[@]" on off' \
-    \| "/[0-9]##$nul/" ':option-led-number:led number:_message "led number"' \
+    \( "/(on|off)$nul/" ':option-led-bool:led:(on off)' \
+    \| "/[0-9]##$nul/" ':option-led-number:led number:' \
     \| \) \
   \| "/m(ouse|)$nul/" "$guard" \
-    \( "/default$nul/" ':option-mouse-default:mouse parameter:compadd "$expl[@]" default' \
-    \| "/[0-9]##(/[0-9]##|)$nul/" ':option-mouse-mult-div:accel_mult/accel_div:_message accel_mult/accel_div' \
-      \( "/[0-9]##$nul/" ':option-mouse-threshold:threshold:_message threshold' \
+    \( "/default$nul/" ':option-mouse-default:mouse parameter:(default)' \
+    \| "/[0-9]##(/[0-9]##|)$nul/" ':option-mouse-mult-div:accel_mult/accel_div:' \
+      \( "/[0-9]##$nul/" ':option-mouse-threshold:threshold:' \
       \| \) \
     \| \) \
   \| "/[-+]dpms$nul/" "$guard" \
   \| "/dpms$nul/" "$guard" \
-    \( "/[0-9]##$nul/" ':option-dpms-standby:standby timeout:_message "standby timeout"' \
-      \( "/[0-9]##$nul/" ':option-dpms-suspend:suspend timeout:_message "suspend timeout"' \
-	\( "/[0-9]##$nul/" ':option-dpms-off:off timeout:_message "off timeout"' \
+    \( "/[0-9]##$nul/" ':option-dpms-standby:standby timeout:' \
+      \( "/[0-9]##$nul/" ':option-dpms-suspend:suspend timeout:' \
+	\( "/[0-9]##$nul/" ':option-dpms-off:off timeout:' \
 	\| \) \
       \| \) \
-    \| "/force/" ':option-dpms-force:force DPMS state:compadd "$expl[@]" force' \
-       "/(on|standby|suspend|off)$nul/" ':option-dpms-state:DPMS state:compadd "$expl[@]" on standby suspend off' \
+    \| "/force$nul/" ':option-dpms-force:force DPMS state:(force)' \
+       "/(on|standby|suspend|off)$nul/" ':option-dpms-state:DPMS state:(on standby suspend off)' \
     \) \
   \| "/s$nul/" "$guard" \
     \( "/(blank|noblank|expose|noexpose|default|on|activate|reset)$nul/" \
-       ':option-s:screen saver:compadd "$expl[@]" blank noblank expose noexpose default on activate reset off' \
-    \| "/off$nul/" \( "/off$nul/" ':option-s-off-period:period off:compadd "$expl[@]" off' \| \) \
-    \| "/[0-9]##$nul/" ':option-s-timeout:length:_message length' \
-      \( "/[0-9]##$nul/" ':option-s-period:period:_message period' \
+       ':option-s:screen saver:(blank noblank expose noexpose default on activate reset off)' \
+    \| "/off$nul/" \( "/off$nul/" ':option-s-off-period:period off:(off)' \| \) \
+    \| "/[0-9]##$nul/" ':option-s-timeout:length:' \
+      \( "/[0-9]##$nul/" ':option-s-period:period:' \
       \| \) \
     \| \) \
   \| "/-r$nul/" "$guard" \
-    \( "/[0-9]##$nul/" ':option-r-keycode:keycode:_message keycode' \
+    \( "/[0-9]##$nul/" ':option-r-keycode:keycode:' \
     \| \) \
   \| "/r$nul/" "$guard" \
-    \( "/(on|off)$nul/" ':option-r-autorepeat:autorepeat:compadd "$expl[@]" on off' \
-    \| "/[0-9]##$nul/" ':option-r-keycode:keycode:_message keycode' \
+    \( "/(on|off)$nul/" ':option-r-autorepeat:autorepeat:(on off)' \
+    \| "/[0-9]##$nul/" ':option-r-keycode:keycode:' \
     \| \) \
   \| "/p$nul/" "$guard" \
-    "/[0-9]##$nul/" ':option-p-pixel:pixel:_message pixel' \
-    "/$word/" ':option-p-color:color:_x_color "$expl[@]"' \
+    "/[0-9]##$nul/" ':option-p-pixel:pixel:' \
+    "/$word/" ':option-p-color:color:_x_color' \
   \| "/(-|)k$nul/" "$guard" \
   \| "/(-|)q$nul/" "$guard" \
   \| "/[]/" ':options:options:_xset_compopts' \
Index: Completion/X/_xwit
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/X/_xwit,v
retrieving revision 1.4
diff -u -r1.4 _xwit
--- Completion/X/_xwit	2000/05/04 20:16:09	1.4
+++ Completion/X/_xwit	2000/05/06 07:46:19
@@ -3,7 +3,7 @@
 local word=$'[^\0]#\0'
 local nul=$'\0'
 
-local guard='-_xwit_guard -${match[1]%?}'
+local guard='-_xwit_guard ${match[1]%?}'
 
 _xwit_guard () {
   local opt="$1" o
@@ -15,59 +15,109 @@
 }
 
 _xwit_compopts () {
-  compadd "$expl[@]" - ${(k)no[(R)*~0]} ||
-    compadd "$expl[@]" - ${(k)no}
+  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:_message width' \
-       "/$word/" ':option-resize-height:height:_message height' \
-    \| "/rows$nul/" "$guard" "/$word/" ':option-rows:rows:_message rows' \
-    \| "/columns$nul/" "$guard" "/$word/" ':option-columns:columns:_message columns' \
-    \| "/move$nul/" "$guard" \
-       "/$word/" ':option-move-x:x:_message x' \
-       "/$word/" ':option-move-y:y:_message y' \
-    \| "/rmove$nul/" "$guard" \
-       "/$word/" ':option-rmove-x:x:_message x' \
-       "/$word/" ':option-rmove-y:y:_message y' \
-    \| "/warp$nul/" "$guard" \
-       "/$word/" ':option-warp-x:x:_message x' \
-       "/$word/" ':option-warp-y:y:_message y' \
-    \| "/rwarp$nul/" "$guard" \
-       "/$word/" ':option-rwarp-x:x:_message x' \
-       "/$word/" ':option-rwarp-y:y:_message y' \
-    \| "/colormap$nul/" "$guard" \
-       "/$word/" ':option-colormap:colormapid:_x_colormapid' \
-    \| "/(name|label)$nul/" "$guard" \
-       "/$word/" ':option-name:name:_x_name "$expl[@]"' \
-    \| "/iconname$nul/" "$guard" \
-       "/$word/" ':option-name:iconname:_x_name "$expl[@]"' \
-    \| "/bitmap$nul/" "$guard" \
-       "/$word/" ':option-bitmap:bitmap file:_files "$expl[@]" -g \*.xbm' \
-    \| "/mask$nul/" "$guard" \
-       "/$word/" ':option-mask:mask file:_files "$expl[@]" -g \*.xbm' \
-    \| "/iconmove$nul/" "$guard" \
-       "/$word/" ':option-iconmove-x:x:_message x' \
-       "/$word/" ':option-iconmove-y:y:_message 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' \
-    \) \
+  \( "/-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 () {
-  typeset -A no eo
+  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
@@ -101,6 +151,16 @@
     -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'
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.34
diff -u -r1.34 compsys.yo
--- Doc/Zsh/compsys.yo	2000/05/04 20:16:09	1.34
+++ Doc/Zsh/compsys.yo	2000/05/06 07:46:19
@@ -3292,11 +3292,12 @@
 
 If no test succeeds and the remaining command line string contains no null
 character, the completion target is restricted to the remainder of the
-command line string and var(action)s for the target are evaluated.
+command line string and var(action)s for the target are executed.
 In this case, nothing is actually removed from the command line string
 so that any previous or neighbouring state may also have var(actions)s.
-var(actions)s evaluation are ordered by the tt(tag-order) style and
-specified var(tag).  var(descr) is used for set up the array parameter
+var(actions)s evaluation are ordered by the tt(tag-order) style and specified
+var(tag) by tt(_alternative).  So, various format supported by tt(_alternative)
+can be used in var(action).  var(descr) is used for set up the array parameter
 tt(expl).
 )
 item(tt(/)var(pattern)tt(/+) [tt(%)var(lookahead)tt(%)] [tt(-)var(guard)] [tt(:)var(tag)tt(:)var(descr)tt(:)var(action)])(
-- 
Tanaka Akira


                 reply	other threads:[~2000-05-06  7:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=hvog0rwnmf0.fsf@serein.m17n.org \
    --to=akr@m17n.org \
    --cc=zsh-workers@sunsite.auc.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).