zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: _cvs
@ 1999-07-28 17:23 Tanaka Akira
  1999-07-28 17:50 ` Tanaka Akira
  0 siblings, 1 reply; 8+ messages in thread
From: Tanaka Akira @ 1999-07-28 17:23 UTC (permalink / raw)
  To: zsh-workers

Hm. Since cvsignore may have patterns instead of concrete filenames, 
_cvs should not quote them.

--- Completion/User/_cvs	Thu Jul 29 01:09:13 1999
+++ Completion/User/_cvs	Thu Jul 29 02:17:47 1999
@@ -198,7 +198,7 @@
 _cvsdirentries () {
   setopt localoptions nullglob unset
   if [[ -f ${pref}CVS/Entries ]]; then
-    entries=( ${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*} )
+    entries=( ${${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*}:q} )
   else
     entries=()
   fi
@@ -207,7 +207,7 @@
 _cvsentries () {
   setopt localoptions nullglob unset
   if [[ -f ${pref}CVS/Entries ]]; then
-    entries=( ${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*} )
+    entries=( ${${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*}:q} )
   else
     entries=()
   fi
@@ -234,13 +234,13 @@
   local OLDTZ="$TZ"; if ! (( $+TZ )); then unset OLDTZ; fi; export TZ=GMT
 
   mtime=( ${(s:/:)${(j:/:)${${${${(M)${(f)Entries}:#/*}#/}%/*/*}/\\/*\\///}}} )
-  entries=( ${${${(M)${(f)Entries}:#D/*}#D/}%%/*} )
+  entries=( ${${${${(M)${(f)Entries}:#D/*}#D/}%%/*}:q} )
   builtin stat -n +mtime -F '%a %b %e %T %Y' "$pref${(@k)^mtime}" |
   while read line
   do
     line=${line#$pref}
     if [[ x"$mtime[${line%% *}]" != x"${line#* }" ]]; then
-      entries=($entries "${line%% *}")
+      entries=($entries "${${line%% *}:q}")
     fi
   done
 
@@ -252,8 +252,8 @@
     _cvsdirentries
     case $#entries in
       0) false;;
-      1) compgen "$@" -g "${entries:q}";;
-      *) compgen "$@" -g '('${(j:|:)entries:q}')';;
+      1) compgen "$@" -g "$entries";;
+      *) compgen "$@" -g '('${(j:|:)entries}')';;
     esac
   else
     _files
@@ -267,8 +267,8 @@
     _cvsentries
     case $#entries in
       0) false;;
-      1) compgen -g "${entries:q}";;
-      *) compgen -g '('${(j:|:)entries:q}')';;
+      1) compgen -g "$entries";;
+      *) compgen -g '('${(j:|:)entries}')';;
     esac
   else
     _files
@@ -282,8 +282,8 @@
     _cvsentries_modified
     case $#entries in
       0) false;;
-      1) compgen -g "${entries:q}";;
-      *) compgen -g '('${(j:|:)entries:q}')';;
+      1) compgen -g "$entries";;
+      *) compgen -g '('${(j:|:)entries}')';;
     esac
   else
     _files 
@@ -297,9 +297,9 @@
     _cvsentries
     setopt localoptions unset
     local omit
-    omit=( ${pref}*(D:t) )
-    eval 'entries=( ${entries:#('${(j:|:)omit:q}')} )'
-    compadd -P "$qpref" - ${entries:q} ||
+    omit=( ${pref}*(D:t:q) )
+    eval 'entries=( ${entries:#('${(j:|:)omit}')} )'
+    compadd -P "$qpref" - ${entries} ||
     _cvsdirs
   else
     _files
@@ -316,8 +316,8 @@
     omit=( CVS $entries ${=cvsignore} )
     [[ -r ~/.cvsignore ]] && omit=( $omit $(<~/.cvsignore) )
     [[ -r ${pref}.cvsignore ]] && omit=( $omit $(<${pref}.cvsignore) )
-    compgen -g '*~(*/|)('${(j:|:)omit:q}')(D)' ||
-    { _cvsdirentries; compgen -g '('${(j:|:)entries:q}')(D)' }
+    compgen -g '*~(*/|)('${(j:|:)omit}')(D)' ||
+    { _cvsdirentries; compgen -g '('${(j:|:)entries}')(D)' }
   else
     _files
   fi

-- 
Tanaka Akira


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: PATCH: _cvs
  1999-07-28 17:23 PATCH: _cvs Tanaka Akira
@ 1999-07-28 17:50 ` Tanaka Akira
  0 siblings, 0 replies; 8+ messages in thread
From: Tanaka Akira @ 1999-07-28 17:50 UTC (permalink / raw)
  To: zsh-workers

In article <rsqvhb4bsdi.fsf@crane.jaist.ac.jp>,
  Tanaka Akira <akr@jaist.ac.jp> writes:

> Hm. Since cvsignore may have patterns instead of concrete filenames, 
> _cvs should not quote them.

Sorry, I found more simple fix on second thoughts.
This revert previous patch and fix it by simple way.

--- Completion/User/_cvs	Thu Jul 29 02:34:48 1999
+++ Completion/User/_cvs	Thu Jul 29 02:35:26 1999
@@ -198,7 +198,7 @@
 _cvsdirentries () {
   setopt localoptions nullglob unset
   if [[ -f ${pref}CVS/Entries ]]; then
-    entries=( ${${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*}:q} )
+    entries=( ${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*} )
   else
     entries=()
   fi
@@ -207,7 +207,7 @@
 _cvsentries () {
   setopt localoptions nullglob unset
   if [[ -f ${pref}CVS/Entries ]]; then
-    entries=( ${${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*}:q} )
+    entries=( ${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*} )
   else
     entries=()
   fi
@@ -234,13 +234,13 @@
   local OLDTZ="$TZ"; if ! (( $+TZ )); then unset OLDTZ; fi; export TZ=GMT
 
   mtime=( ${(s:/:)${(j:/:)${${${${(M)${(f)Entries}:#/*}#/}%/*/*}/\\/*\\///}}} )
-  entries=( ${${${${(M)${(f)Entries}:#D/*}#D/}%%/*}:q} )
+  entries=( ${${${(M)${(f)Entries}:#D/*}#D/}%%/*} )
   builtin stat -n +mtime -F '%a %b %e %T %Y' "$pref${(@k)^mtime}" |
   while read line
   do
     line=${line#$pref}
     if [[ x"$mtime[${line%% *}]" != x"${line#* }" ]]; then
-      entries=($entries "${${line%% *}:q}")
+      entries=($entries "${line%% *}")
     fi
   done
 
@@ -252,8 +252,8 @@
     _cvsdirentries
     case $#entries in
       0) false;;
-      1) compgen "$@" -g "$entries";;
-      *) compgen "$@" -g '('${(j:|:)entries}')';;
+      1) compgen "$@" -g "${entries:q}";;
+      *) compgen "$@" -g '('${(j:|:)entries:q}')';;
     esac
   else
     _files
@@ -267,8 +267,8 @@
     _cvsentries
     case $#entries in
       0) false;;
-      1) compgen -g "$entries";;
-      *) compgen -g '('${(j:|:)entries}')';;
+      1) compgen -g "${entries:q}";;
+      *) compgen -g '('${(j:|:)entries:q}')';;
     esac
   else
     _files
@@ -282,8 +282,8 @@
     _cvsentries_modified
     case $#entries in
       0) false;;
-      1) compgen -g "$entries";;
-      *) compgen -g '('${(j:|:)entries}')';;
+      1) compgen -g "${entries:q}";;
+      *) compgen -g '('${(j:|:)entries:q}')';;
     esac
   else
     _files 
@@ -297,9 +297,9 @@
     _cvsentries
     setopt localoptions unset
     local omit
-    omit=( ${pref}*(D:t:q) )
-    eval 'entries=( ${entries:#('${(j:|:)omit}')} )'
-    compadd -P "$qpref" - ${entries} ||
+    omit=( ${pref}*(D:t) )
+    eval 'entries=( ${entries:#('${(j:|:)omit:q}')} )'
+    compadd -P "$qpref" - ${entries:q} ||
     _cvsdirs
   else
     _files
@@ -313,11 +313,11 @@
     _cvsentries
     setopt localoptions unset
     local omit
-    omit=( CVS $entries ${=cvsignore} )
+    omit=( CVS ${entries:q} ${=cvsignore} )
     [[ -r ~/.cvsignore ]] && omit=( $omit $(<~/.cvsignore) )
     [[ -r ${pref}.cvsignore ]] && omit=( $omit $(<${pref}.cvsignore) )
     compgen -g '*~(*/|)('${(j:|:)omit}')(D)' ||
-    { _cvsdirentries; compgen -g '('${(j:|:)entries}')(D)' }
+    { _cvsdirentries; compgen -g '('${(j:|:)entries:q}')(D)' }
   else
     _files
   fi
-- 
Tanaka Akira


^ permalink raw reply	[flat|nested] 8+ messages in thread

* PATCH: _cvs
@ 2002-09-06 15:23 Oliver Kiddle
  0 siblings, 0 replies; 8+ messages in thread
From: Oliver Kiddle @ 2002-09-06 15:23 UTC (permalink / raw)
  To: Zsh workers

This adds descriptions for the keyword substitutions and corrects
`don't recursive' to `don't recurse' which makes more sense.

Index: Completion/Unix/Command/_cvs
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_cvs,v
retrieving revision 1.16
diff -u -r1.16 _cvs
--- Completion/Unix/Command/_cvs	16 Jul 2002 04:47:58 -0000	1.16
+++ Completion/Unix/Command/_cvs	6 Sep 2002 15:03:13 -0000
@@ -125,7 +125,7 @@
 _cvs_annotate () {
   # "+lr:D:fR"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '-f[use head revision]' \
     '(-l)-R[recursive]' \
     '(-f -D)-r+[specify revision]:tag:_cvs_revisions' \
@@ -137,7 +137,7 @@
 _cvs_rannotate () {
   # "+lr:D:fR"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '-f[use head revision]' \
     '(-l)-R[recursive]' \
     '(-f -D)-r+[specify revision]:tag:_cvs_revisions' \
@@ -153,7 +153,7 @@
     '-A[reset sticky tags, dates and -k]' \
     '-n[disable checkout program]' \
     '-f[use most recent revision if -D/-r is not matched]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '(-s)-c[module database]' \
     '(-c)-s[module database with status]' \
@@ -171,7 +171,7 @@
   # "+nlRm:fF:r:"
   _arguments -s \
     '-n[disable module program]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-f[force to commit]' \
     '(-F)-m+[message]:message:_cvs_m' \
@@ -217,7 +217,7 @@
 
   # "+abcdefhilnpstuw0123456789BHNRC:D:F:I:L:U:V:W:k:r:"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-k+[keyword]:keyword substitution:_cvs_k' \
     '(-r)-D+[specify date]:date:_cvs_D' \
@@ -299,7 +299,7 @@
 _cvs_edit () {
   # "+lRa:"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-a+[specify action]:action:(edit unedit commit all none)' \
     '*:file:_cvs_files'
@@ -309,7 +309,7 @@
 _cvs_editors () {
   # "+lR"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '*:file:_cvs_files'
 }
@@ -321,7 +321,7 @@
     '-N[don'\''t shorten module paths]' \
     '-n[disable checkout program]' \
     '-f[use most recent revision if -D/-r is not matched]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-k+[keyword]:keyword substitution:_cvs_k' \
     '-d+[directory]:directory:_files -/' \
@@ -415,7 +415,7 @@
   _arguments -s \
     '-b[default branch]' \
     '(-t)-h[header]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-N[don'\''t list tags]' \
     '(-h)-t[header with descriptive text]' \
@@ -444,7 +444,7 @@
     '-u[output a unified diff]' \
     '-f[use most recent revision if -D/-r is not matched]' \
     '-s[short patch]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-V+[specify version]:version:' \
     '-k+[keyword]:keyword substitution:_cvs_k' \
@@ -469,7 +469,7 @@
   # "+flR"
   _arguments -s \
     '-f[force to remove]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '*:removed file:_cvs_remove_arg'
 }
@@ -491,7 +491,7 @@
     '(-d)-a[clear tag from removed files]' \
     '-n[disable tag program]' \
     '(-d)-f[force a head revision]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '(-b)-d[delete tag]' \
     '(-d)-b[create branch]' \
@@ -506,7 +506,7 @@
   # "+vlR"
   _arguments -s \
     '-v[verbose]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '*:file:_cvs_files'
 }
@@ -516,7 +516,7 @@
   # "+FQqlRcdr:D:bf"
   _arguments -s \
     '(-d)-F[move tag if already exists]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-c[check that working files unmodified]' \
     '(-b)-d[delete tag]' \
@@ -532,7 +532,7 @@
 _cvs_unedit () {
   # "+lR"
   _arguments -s \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '*:file:_cvs_files'
 }
@@ -546,7 +546,7 @@
     '-p[check out to standard output]' \
     '-P[prune empty directory]' \
     '-f[use head revision]' \
-    '(-R)-l[don'\''t recursive]' \
+    "(-R)-l[don't recurse]" \
     '(-l)-R[recursive]' \
     '-d[create directories]' \
     '-k+[keyword]:keyword substitution:_cvs_k' \
@@ -568,14 +568,14 @@
     case "$words[2]" in
       on|off) # "+lR"
 	_arguments -s \
-	    '(-R)-l[don'\''t recursive]' \
+	    "(-R)-l[don't recurse]" \
 	    '(-l)-R[recursive]' \
 	    ':watch command:' \
 	    '*:file:_cvs_files'
 	;;
       add|remove) # "+lRa:"
 	_arguments -s \
-	    '(-R)-l[don'\''t recursive]' \
+	    "(-R)-l[don't recurse]" \
 	    '(-l)-R[recursive]' \
 	    '*-a+[specify action]:action:(edit unedit commit all none)' \
 	    ':watch command:' \
@@ -589,7 +589,7 @@
 _cvs_watchers () {
   # "+lR"
   _arguments -s \
-      '(-R)-l[don'\''t recursive]' \
+      "(-R)-l[don't recurse]" \
       '(-l)-R[recursive]' \
       '*:file:_cvs_files'
 }
@@ -674,7 +674,13 @@
 
 (( $+functions[_cvs_k] )) ||
 _cvs_k () {
-  _tags values && compadd "$@" kv kvl k o b v
+  _values 'keyword substitution' \
+    'kv[generate keyword strings using the default form]' \
+    "kvl[include locker's name in strings if given revision is locked]" \
+    'k[generate only keyword names in keyword strings; omit their values]' \
+    'o[generate the old keyword string as present in the file before check in]' \
+    "b[binary - like \`o' but also inhibit line ending conversions]" \
+    'v[generate only keyword values for keyword strings]'
 }
 
 (( $+functions[_cvs_m] )) ||

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* PATCH: _cvs
@ 2000-05-16  0:06 Tanaka Akira
  0 siblings, 0 replies; 8+ messages in thread
From: Tanaka Akira @ 2000-05-16  0:06 UTC (permalink / raw)
  To: zsh-workers

I rewrited filename completion functions in _cvs to:

* complete removed files.
* handle special characters in filenames more properly.

Index: Completion/User/_cvs
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/User/_cvs,v
retrieving revision 1.6
diff -u -r1.6 _cvs
--- Completion/User/_cvs	2000/05/05 20:36:13	1.6
+++ Completion/User/_cvs	2000/05/15 23:59:29
@@ -36,7 +36,7 @@
 
 (( $+functions[_cvs_command] )) ||
 _cvs_command () {
-  local cmd
+  local cmd cvsroot="${opt_args[-d]:Q}"
   typeset -A cmds
   cmds=(add " ad new "          admin " adm rcs "       annotate " ann "
 	checkout " co get "     commit " ci com "       diff " di dif "
@@ -432,9 +432,18 @@
     '-f[force to remove]' \
     '(-R)-l[don'\''t recursive]' \
     '(-l)-R[recursive]' \
-    '*:file:_cvs_files_removed'
+    '*:file:_cvs_remove_arg'
 }
 
+(( $+functions[_cvs_remove_arg] )) ||
+_cvs_remove_arg () {
+  if (( $+opt_args[-f] )); then
+    _cvs_files
+  else
+    _cvs_files_removed
+  fi
+}
+
 (( $+functions[_cvs_rtag] )) ||
 _cvs_rtag () {
   # "+FanfQqlRdbr:D:"
@@ -548,11 +557,12 @@
 
 (( $+functions[_cvs_loadstat] )) ||
 _cvs_loadstat () {
-  zstyle -t ":completion:${curcontext}:" disable-stat && return
-  (( $+_cvs_loadstat_tried )) && return
-  _cvs_loadstat_tried=yes
+  zstyle -t ":completion:${curcontext}:" disable-stat && return 1
+  (( $+_cvs_loadstat_status )) && return $_cvs_loadstat_status
 
   zmodload -i zsh/stat 2>/dev/null
+  (( _cvs_loadstat_status = ! $+builtins[stat] ))
+  return $_cvs_loadstat_status
 }
 
 (( $+functions[_cvs_root] )) ||
@@ -562,8 +572,7 @@
   typeset -gU _cvs_roots
 
   if [[ -f "${cvspassfile::=${CVS_PASSFILE:-$HOME/.cvspass}}" ]]; then
-    _cvs_loadstat
-    if (( $+builtins[stat] )); then
+    if _cvs_loadstat; then
       id="$(LC_ALL=C builtin stat -g +mtime -F '%Y/%m/%d-%T' "$cvspassfile")"
     else
       id="$(LC_ALL=C ls -l "$cvspassfile")"
@@ -629,14 +638,26 @@
 
 (( $+functions[_cvs_modules] )) ||
 _cvs_modules () {
-  local root=$CVSROOT expl
-
+  local root="$CVSROOT" expl
   [[ -f CVS/Root ]] && root=$(<CVS/Root)
+  [[ -n "$cvsroot" ]] && root="$cvsroot"
 
   if [[ $root = :* || ! -d $root ]]; then
-    _message "module name"
+    if [[ $_cvs_modules_root != $root ]]; then
+      _cvs_modules_root="$root"
+      if zstyle -T ":completion:${curcontext}:" remote-access; then
+	_cvs_modules_cache=(${(M)${${(f)"$(CVS_IGNORE_REMOTE_ROOT= cvs -d "$root" co -c)"}%%[ 	]*}:#?*})
+      else
+	_cvs_modules_cache=()
+      fi
+    fi
+    if (( $#_cvs_modules_cache )); then
+      _wanted modules expl 'module name' compadd - $_cvs_modules_cache
+    else
+      _message 'module name'
+    fi
   else
-    _wanted modules expl module \
+    _wanted modules expl 'module name' \
         compadd - $root/^CVSROOT(:t) \
             ${${(M)${(f)"$(<$root/CVSROOT/modules)"}:#[^#]*}%%[ 	]*}
   fi
@@ -644,160 +665,96 @@
 
 (( $+functions[_cvs_revisions] )) ||
 _cvs_revisions () {
-  local expl
-
-  _wanted values expl revision \
-      compadd - ${${${(M)${(f)"$(cvs -q status -vl .)"}:#	*}##[ 	]##(No Tags Exist)#}%%[ 	]*}
-}
-
-# define completion functions for files maintained by cvs.
-
-(( $+functions[_cvs_setup_prefix] )) ||
-_cvs_setup_prefix () {
-  if [[ -prefix */ ]]; then
-    qpref="${PREFIX%/*}/"
-    pref=$~qpref
-  else
-    qpref=
-    pref=./
-  fi
-}
-
-(( $+functions[_cvs_extract_directory_entries] )) ||
-_cvs_extract_directory_entries () {
-  entries=($entries ${${${(M)rawentries:#D/*}#D/}%%/*})
-}
-
-(( $+functions[_cvs_extract_file_entries] )) ||
-_cvs_extract_file_entries () {
-  entries=($entries ${${${(M)rawentries:#/*}#/}%%/*})
-}
-
-(( $+functions[_cvs_extract_modifiedfile_entries] )) ||
-_cvs_extract_modifiedfile_entries () {
-  _cvs_loadstat
-  if (( ! $+builtins[stat] )); then
-    _cvs_extract_file_entries
-    return
-  fi
-
-  local ents pats
-  ents=(${${${${(M)rawentries:#/*}#/}/\\/[^\\/]#\\///}%/[^/]#/[^/]#})
-  pats=(${${${(f)"$(LC_ALL=C builtin stat -gn +mtime -F '%a %b %e %T %Y' ${pref}*(D))"}##*/}/ //})
-  eval 'ents=(${ents:#('${(j:|:)${(@)pats:q}}')})'
-  entries=($entries ${ents%%/*})
-}
-
-(( $+functions[_cvs_setup_allentries] )) ||
-_cvs_setup_allentries () {
-  entries=()
-  if [[ -f ${pref}CVS/Entries ]]; then
-    local rawentries
-    rawentries=(${(f)"$(<${pref}CVS/Entries)"})
-    _cvs_extract_file_entries
-    _cvs_extract_directory_entries
-  fi
-}
+  local root="$CVSROOT" expl
+  [[ -f CVS/Root ]] && root=$(<CVS/Root)
+  [[ -n "$cvsroot" ]] && root="$cvsroot"
 
-(( $+functions[_cvs_setup_direntries] )) ||
-_cvs_setup_direntries () {
-  entries=()
-  if [[ -f ${pref}CVS/Entries ]]; then
-    local rawentries
-    rawentries=(${(f)"$(<${pref}CVS/Entries)"})
-    _cvs_extract_directory_entries
+  if [[ $_cvs_revisions_key != $root:$PWD ]]; then
+    _cvs_revisions_key="$root:$PWD"
+    if zstyle -T ":completion:${curcontext}:" remote-access; then
+      _cvs_revisions_cache=(
+	$(CVS_IGNORE_REMOTE_ROOT= cvs -d "$root" -q status -vl .|
+	  sed -n -e '/No Tags Exist/d' -e 's/^	\([A-Za-z][-_0-9A-Za-z]*\).*/\1/p'|
+	  sort|uniq)
+      )
+    else
+      _cvs_revisions_cache=()
+    fi
   fi
-}
 
-(( $+functions[_cvs_setup_modentries] )) ||
-_cvs_setup_modentries () {
-  entries=()
-  if [[ -f ${pref}CVS/Entries ]]; then
-    local rawentries
-    rawentries=(${(f)"$(<${pref}CVS/Entries)"})
-    _cvs_extract_modifiedfile_entries
-    _cvs_extract_directory_entries
-  fi
-}
-
-(( $+functions[_cvs_directories] )) ||
-_cvs_directories () {
-  if [[ -d ${pref}CVS ]]; then
-    _cvs_setup_direntries
-    (( $#entries )) && _path_files "$@" -g "${(j:|:)${(@)entries:q}}" ||
-      _path_files -g '*~(*/|)CVS(/)'
+  if (( $#_cvs_revisions_cache )); then
+    _wanted values expl revision compadd - $_cvs_revisions_cache
   else
-    _files "$@"
+    _message revision
   fi
 }
 
+# define completion functions for files maintained by cvs.
+
 (( $+functions[_cvs_files] )) ||
 _cvs_files () {
-  local qpref pref entries
-  _cvs_setup_prefix
-  if [[ -d ${pref}CVS ]]; then
-    _cvs_setup_allentries
-    (( $#entries )) && _files "$@" -g "${(j:|:)${(@)entries:q}}"
-  else
-    _files "$@"
-  fi
+  _alternative \
+    'directories:directory:_cvs_existing_directories' \
+    'existing-files:file:_cvs_existing_entries' \
+    'removed-files:removed file:_cvs_nonexisting_entries'
 }
 
 (( $+functions[_cvs_files_modified] )) ||
 _cvs_files_modified () {
-  local qpref pref entries
-  _cvs_setup_prefix
-  if [[ -d ${pref}CVS ]]; then
-    _cvs_setup_modentries
-    setopt localoptions unset
-    local omit
-    omit=($line)
-    eval 'entries=(${entries:#('${(j:|:)${(@)omit:q}}')})'
-    (( $#entries )) && _files "$@" -g "${(j:|:)${(@)entries:q}}"
-  else
-    _files "$@"
-  fi
+  _alternative \
+    'directories:directory:_cvs_existing_directories' \
+    'existing-files:file:_cvs_modified_entries' \
+    'removed-files:removed file:_cvs_nonexisting_entries'
 }
 
 (( $+functions[_cvs_files_removed] )) ||
 _cvs_files_removed () {
-  local qpref pref entries
-  _cvs_setup_prefix
-  if [[ -d ${pref}CVS ]]; then
-    _cvs_setup_allentries
-    setopt localoptions unset
-    local omit
-    omit=(${pref}*(D:t) $line)
-    eval 'entries=(${entries:#('${(j:|:)${(@)omit:q}}')})'
-    _tags directories && compadd "$@" -P "$qpref" - ${entries:q} ||
-        _cvs_directories "$@"
-  else
-    _files "$@"
-  fi
+  _alternative \
+    'directories:directory:_cvs_existing_directories' \
+    'removed-files:removed file:_cvs_nonexisting_entries'
 }
 
 (( $+functions[_cvs_files_unmaintained] )) ||
 _cvs_files_unmaintained () {
-  local qpref pref entries
-  _cvs_setup_prefix
-  if [[ -d ${pref}CVS ]]; then
-    _cvs_setup_allentries
-    setopt localoptions unset
-    local omit
-    omit=($_cvs_ignore_default ${entries:q} ${=cvsignore} $line)
-    [[ -r ~/.cvsignore ]] && omit=($omit $(<~/.cvsignore))
-    [[ -r ${pref}.cvsignore ]] && omit=($omit $(<${pref}.cvsignore))
-    entries=($entries CVS)
-    _path_files "$@" -g '*~(*/|)('${(j:|:)omit}')(D)' ||
-      _path_files "$@" -g '*~(*/|)('${(j:|:)${(@)entries:q}}')(D)' ||
-        _cvs_directories "$@"
+  _cvs_nonentried_files ||
+  _cvs_existing_directories ||
+  _cvs_strict_nonentried_files
+}
+
+(( $+functions[_cvs_existing_directories] )) ||
+_cvs_existing_directories () {
+  local expl
+  _wanted files expl file _path_files -g "*~(*/|)CVS(/)"
+}
+
+(( $+functions[_cvs_existing_entries] )) ||
+_cvs_existing_entries () {
+  local expl match linedir realdir pat
+  match=()
+  : ${PREFIX:#(#b)(*/)(*)}
+  linedir="$match[1]"
+  realdir=${(e)~linedir}
+  [[ -f "$realdir"CVS/Entries ]] &&
+  [[ -n ${pat::="${(@j:|:)${(@)${(@)${(@)${(@M)${(@f)"$(<"$realdir"CVS/Entries)"}:#/*}#/}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}}"} ]] &&
+  _wanted files expl file _path_files -g "$pat"
+}
+
+(( $+functions[_cvs_modified_entries] )) ||
+_cvs_modified_entries () {
+  if _cvs_loadstat; then
+    local expl match linedir realdir pat
+    match=()
+    : ${PREFIX:#(#b)(*/)(*)}
+    linedir="$match[1]"
+    realdir=${(e)~linedir}
+    [[ -f "$realdir"CVS/Entries ]] &&
+    [[ -n ${pat::="${(@j:|:)${(@)${(@)${(@)${(@)${(@)${(@M)${(@f)"$(<"$realdir"CVS/Entries)"}:#/*}#/}/\\/[^\\/]#\\///}%/[^/]#/[^/]#}:#${(j:|:)~${${${${(f)"$(LC_ALL=C builtin stat -gn +mtime -F '%a %b %e %T %Y' ${realdir}*(D))"}##*/}/ //}//(#m)[][*?()<|^~#\\]/\\$MATCH}}}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}"} ]] &&
+    _wanted files expl file _path_files -g "$pat"
   else
-    _files "$@"
+    _cvs_existing_entries
   fi
 }
 
-# define configuration variables.
-
 (( $+_cvs_ignore_default )) ||
 _cvs_ignore_default=(
   RCS SCCS CVS CVS.adm RCSLOG 'cvslog.*' tags TAGS .make.state .nse_depinfo
@@ -805,7 +762,59 @@
   '.del-*' '*.a' '*.olb' '*.o' '*.obj' '*.so' '*.exe' '*.Z' '*.elc' '*.ln'
   core
 )
+
+(( $+functions[_cvs_strict_nonentried_files] )) ||
+_cvs_strict_nonentried_files () {
+  local expl match linedir realdir omitpats
+
+  match=()
+  : ${PREFIX:#(#b)(*/)(*)}
+  linedir="$match[1]"
+  realdir=${(e)~linedir}
+  [[ -f "$realdir"CVS/Entries ]] && {
+    omitpats=(
+      ${${${${(M)${(f)"$(<"$realdir"CVS/Entries)"}:#/*}#/}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}
+    )
+    _path_files -g "*~(*/|)(${(j:|:)~omitpats})(D.)"
+  }
+}
+
+(( $+functions[_cvs_nonentried_files] )) ||
+_cvs_nonentried_files () {
+  local expl match linedir realdir omitpats
+
+  match=()
+  : ${PREFIX:#(#b)(*/)(*)}
+  linedir="$match[1]"
+  realdir=${(e)~linedir}
+  [[ -f "$realdir"CVS/Entries ]] && {
+    omitpats=(
+      ${${${${(M)${(f)"$(<"$realdir"CVS/Entries)"}:#(D|)/*}#(D|)/}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}
+      $_cvs_ignore_default
+      ${=cvsignore}
+    )
+    [[ -r ~/.cvsignore ]] && omitpats=($omitpats $(<~/.cvsignore))
+    [[ -r ${realdir}.cvsignore ]] && omitpats=($omitpats $(<${realdir}.cvsignore))
 
-# call real _cvs.
+    _path_files -g "*~(*/|)(${(j:|:)~omitpats})(D.)"
+  }
+}
+
+(( $+functions[_cvs_nonexisting_entries] )) ||
+_cvs_nonexisting_entries () {
+  local expl match linedir realdir files
+  match=()
+  : ${PREFIX:#(#b)(*/)(*)}
+  linedir="$match[1]"
+  realdir=${(e)~linedir}
+  files=(${realdir}*(D:t))
+  [[ -f "$realdir"CVS/Entries ]] && {
+    files=(
+      ${${${${(M)${(f)"$(<"$realdir"CVS/Entries)"}:#(D|)/*}#(D|)/}%%/*}:#${(j:|:)~${files//(#m)[][*?()<|^~#\\]/\\$MATCH}}}
+    )
+    compquote files
+    _wanted files expl file compadd -Qp "$linedir" $files
+  }
+}
 
 [[ -o kshautoload ]] || _cvs "$@"
-- 
Tanaka Akira


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: PATCH: _cvs
@ 1999-09-09  9:14 Sven Wischnowsky
  0 siblings, 0 replies; 8+ messages in thread
From: Sven Wischnowsky @ 1999-09-09  9:14 UTC (permalink / raw)
  To: zsh-workers


Tanaka Akira wrote:

> Z(2):akr@is27e1u11% Src/zsh -f
> is27e1u11% bindkey -e; fpath=($PWD/Completion/*(/)); autoload -U compinit; compinit -D; compdef _tst tst
> is27e1u11% _tst () { compadd -J option -X option -y '(mno pqr)' ghi jkl; compadd -J option -X option abc def } 
> is27e1u11% tst 
> mno   pqr   
> option
> abc   def   
> 
> This test case excahnges the order of two `compadd'. I think it's not
> intentional.

Yes, I just stumbled over this, too. The problem was just that the
group named by the `-[JV]' wasn't created before the one for the `-y', 
so the explanation string showed up in the wrong place.

> Also, I modified _apt_arguments not to use -y if it is un unnecessary.

Yep, I've just done something similar for `_display'.

Bye
 Sven

diff -u os/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- os/Zle/zle_tricky.c	Thu Sep  9 11:04:39 1999
+++ Src/Zle/zle_tricky.c	Thu Sep  9 11:07:58 1999
@@ -3951,16 +3951,21 @@
 		} else
 		    dat->prpre = dupstring(dat->prpre);
 		/* Select the group in which to store the matches. */
-		if (dat->group || dat->ylist) {
+		if (dat->group) {
 		    endcmgroup(NULL);
-		    begcmgroup((dat->ylist ? NULL : dat->group),
-			       (dat->aflags & CAF_NOSORT));
+		    begcmgroup(dat->group, (dat->aflags & CAF_NOSORT));
 		    if (dat->aflags & CAF_NOSORT)
 			mgroup->flags |= CGF_NOSORT;
 		} else {
 		    endcmgroup(NULL);
 		    begcmgroup("default", 0);
 		}
+		if (dat->ylist) {
+		    endcmgroup(NULL);
+		    begcmgroup(NULL, (dat->aflags & CAF_NOSORT));
+		    if (dat->aflags & CAF_NOSORT)
+			mgroup->flags |= CGF_NOSORT;
+		}
 		/* Select the set of matches. */
 		oisalt = (dat->aflags & CAF_ALT);
 
@@ -5944,9 +5949,13 @@
     curcc = cc;
 
     mflags = 0;
-    if (cc->ylist || cc->gname) {
+    if (cc->gname) {
+	endcmgroup(NULL);
+	begcmgroup(cc->gname, cc->mask2 & CC_NOSORT);
+    }
+    if (cc->ylist) {
 	endcmgroup(NULL);
-	begcmgroup((cc->ylist ? NULL : cc->gname), cc->mask2 & CC_NOSORT);
+	begcmgroup(NULL, cc->mask2 & CC_NOSORT);
     }
     if (cc->mask & CC_REMOVE)
 	mflags |= CMF_REMOVE;
--- oldcompletion/Core/_display	Wed Sep  8 16:19:38 1999
+++ Completion/Core/_display	Thu Sep  9 11:11:56 1999
@@ -39,7 +39,7 @@
   # descriptions.
 
   _simple=()
-  _len=1
+  _len=-1
   for _i in "$_arr[@]";  do
     _tmp="${#_i%%:*}"
     if [[ "$_i" = *:?* ]]; then
@@ -48,6 +48,11 @@
       _simple=( "$_simple[@]" "${_i%:}" )
     fi
   done
+
+  if [[ _len -lt 0 ]]; then
+    eval "${_param}=''"
+    return 1
+  fi
 
   # Now we build the list in `_tmp', adding one line per string.
 

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: PATCH: _cvs
  1999-09-09  8:23 Sven Wischnowsky
@ 1999-09-09  8:50 ` Tanaka Akira
  0 siblings, 0 replies; 8+ messages in thread
From: Tanaka Akira @ 1999-09-09  8:50 UTC (permalink / raw)
  To: zsh-workers

In article <199909090823.KAA02107@beta.informatik.hu-berlin.de>,
  Sven Wischnowsky <wischnow@informatik.hu-berlin.de> writes:

> The patch below is a bit of a hack: it tests if there is only one
> string in the display list and if so, it makes this string be
> displayed as if it had a newline -- so that the other groups are 
> separately put into columns.

Hm.

> Again, yes, it was. Since display lists are so special with respect to 
> listing, the `-y' enforces the opening of a new group, treated
> completely differently and *not* with the name given with `-[JV]' in
> the same call to `comp{ctl,add,gen}'.

I see.

> The patch below at least makes the explanation string be added to the
> group named by a `-[JV]' option, if any. But you still get different
> groups, i.e. the output now looks like:
> 
>   option
>   abc   def
>   mno   pqr

Z(2):akr@is27e1u11% Src/zsh -f
is27e1u11% bindkey -e; fpath=($PWD/Completion/*(/)); autoload -U compinit; compinit -D; compdef _tst tst
is27e1u11% _tst () { compadd -J option -X option -y '(mno pqr)' ghi jkl; compadd -J option -X option abc def } 
is27e1u11% tst 
mno   pqr   
option
abc   def   

This test case excahnges the order of two `compadd'. I think it's not
intentional.

Also, I modified _apt_arguments not to use -y if it is un unnecessary.

Index: Completion/Debian/_apt_arguments
===================================================================
RCS file: /projects/zsh/zsh/Completion/Debian/_apt_arguments,v
retrieving revision 1.1.1.2
diff -u -F^( -r1.1.1.2 _apt_arguments
--- _apt_arguments	1999/09/08 21:05:57	1.1.1.2
+++ _apt_arguments	1999/09/09 08:42:52
@@ -73,8 +73,12 @@
 'if [[ $PREFIX = -'"$short_seq"' ]]; then
   apt_consume_short ${PREFIX[2,-1]}
   tmp1=(${${(M)${(s:,:)${(kj:,:)options[(R)*~0]}}:#-?}#-})
-  tmp2=(-${^tmp1})
-  compadd "$expl_opt[@]" -y "($tmp2)" - ${PREFIX}${^tmp1}
+  if [[ $PREFIX = - ]]; then
+    compadd "$expl_opt[@]" - -${^tmp1}
+  else
+    tmp2=(-${^tmp1})
+    compadd "$expl_opt[@]" -y "($tmp2)" - ${PREFIX}${^tmp1}
+  fi
 elif [[ -z "$PREFIX" ]]; then
   compadd "$expl_opt[@]" - ${(M)${(s:,:)${(kj:,:)options[(R)*~0]}}:#-?}
 fi'
-- 
Tanaka Akira


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: PATCH: _cvs
@ 1999-09-09  8:23 Sven Wischnowsky
  1999-09-09  8:50 ` Tanaka Akira
  0 siblings, 1 reply; 8+ messages in thread
From: Sven Wischnowsky @ 1999-09-09  8:23 UTC (permalink / raw)
  To: zsh-workers


Tanaka Akira wrote:

> Also, I found a strange behaviour with `cvs history' in testing.
> 
> On 79 (or wider) column terminal:
> 
> is27e1u11% cvs history <TAB>
> file
> .cvsignore 
> ...
> option
> -?  -D  -T  -X  -a  -b  -c  -e  -f  -l  -m  -n  -o  -p  -r  -t  -u  -w  -x  -z
> 
> On 78 (or narrower) column terminal:
> 
> is27e1u11% cvs history <TAB>
> file
> .cvsignore      Doc/            README          aczsh.m4 
> .distfiles      Etc/            Src/            config.guess*
> ChangeLog       Functions/      StartupFiles/   config.sub*
> ChangeLog.3.0   INSTALL         Util/           configure.in 
> Completion/     Makefile.in     acconfig.h      install-sh*
> Config/         Misc/           aclocal.m4      mkinstalldirs*
> option
> -?  -T  -a  -c  -f  -m  -o  -r  -u  -x
> -D  -X  -b  -e  -l  -n  -p  -t  -w  -z
> 
> I suppose that the former is not intentional.

;-) It was. These display lists are a bit strange (although initially
not implemented by me -- I still tried to keep the behavior as it
was). The problem is that on a wide terminal all options fit on one
line, ,so there was no newlin in the display string. The listing code
tested that and -- with only strings without newlines -- wanted to
display them in columns. Now, the columns of all groups have the same
width (to make the display more uniform), but the one string in the
display list was rather longish and hence forced the one-column output 
for the other groups, too. If there had been at least one newline in
the display string the listing code would have treated this as a
special case and displayed it directly without taking the value for
it's widest column from it.

The patch below is a bit of a hack: it tests if there is only one
string in the display list and if so, it makes this string be
displayed as if it had a newline -- so that the other groups are 
separately put into columns.

Maybe someone can think of a better test for this sometime.


In another message:

> Z(2):akr@is27e1u11% Src/zsh -f
> is27e1u11% bindkey -e; fpath=($PWD/Completion/*(/)); autoload -U compinit; compinit -D; compdef _tst tst
> is27e1u11% _tst () { compadd -J option -X option abc def; compadd -J option -X option -y '(mno pqr)' ghi jkl } 
> is27e1u11% tst 
> option
> abc   def   
> option
> mno   pqr   
> 
> There are two groups. Is this intentional?

Again, yes, it was. Since display lists are so special with respect to 
listing, the `-y' enforces the opening of a new group, treated
completely differently and *not* with the name given with `-[JV]' in
the same call to `comp{ctl,add,gen}'.
The patch below at least makes the explanation string be added to the
group named by a `-[JV]' option, if any. But you still get different
groups, i.e. the output now looks like:

  option
  abc   def
  mno   pqr

This is a bit ugly, and I wished, the display list stuff had been
written in a way that allowed mixing the display strings with normal
matches, but because of the special treatment of newlines, this would
be very hard to implement. I wished we had two forms of this, one that 
gives only *one* display string (probably with newlines) that would be 
display unchanged, not in columns, and another form that gives a list
of strings that are like normal matches (probably even with a way to
say which of the display strings corresponds to which match -- that
would have saved us some of the work that is now done in functions
like `_display').

Bye
 Sven

diff -u os/Zle/complist.c Src/Zle/complist.c
--- os/Zle/complist.c	Wed Sep  8 16:20:32 1999
+++ Src/Zle/complist.c	Thu Sep  9 09:55:06 1999
@@ -344,7 +344,7 @@
 		nl = !!strchr(*pp++, '\n');
 
 	    pp = g->ylist;
-	    if (nl) {
+	    if (nl || !pp[1]) {
 		/* Yup, there are newlines, count lines. */
 		char *nlptr, *sptr;
 
diff -u os/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- os/Zle/zle_tricky.c	Wed Sep  8 16:20:33 1999
+++ Src/Zle/zle_tricky.c	Thu Sep  9 10:06:55 1999
@@ -4031,8 +4031,6 @@
 	    }
 	    compnmatches = mnum;
 	    compnnmatches = nmnum;
-	    if (dat->exp)
-		addexpl();
 	    if (dat->apar)
 		set_param(dat->apar, aparl);
 	    if (dat->opar)
@@ -4040,9 +4038,19 @@
 	    if (dat->dpar)
 		set_param(dat->dpar, dparl);
 	    if (dat->ylist) {
-		endcmgroup(get_user_var(dat->ylist));
-		begcmgroup("default", 0);
-	    }
+		if (dat->group) {
+		    endcmgroup(get_user_var(dat->ylist));
+		    begcmgroup(dat->group, (dat->aflags & CAF_NOSORT));
+		    if (dat->exp)
+			addexpl();
+		} else {
+		    if (dat->exp)
+			addexpl();
+		    endcmgroup(get_user_var(dat->ylist));
+		    begcmgroup("default", 0);
+		}
+	    } else if (dat->exp)
+		addexpl();
 	} LASTALLOC;
     } SWITCHBACKHEAPS;
 
@@ -6724,7 +6732,8 @@
 	    incompctlfunc = 0;
 	    uv = "reply";
 	}
-	
+	if (uv)
+	    yaptr = get_user_var(uv);
 	if ((tt = cc->explain)) {
 	    tt = dupstring(tt);
 	    if ((cc->mask & CC_EXPANDEXPL) && !parsestr(tt)) {
@@ -6732,13 +6741,16 @@
 		untokenize(tt);
 	    }
 	    expl->str = tt;
-	    addexpl();
+	    if (cc->gname) {
+		endcmgroup(yaptr);
+		begcmgroup(cc->gname, cc->mask2 & CC_NOSORT);
+		addexpl();
+	    } else {
+		addexpl();
+		endcmgroup(yaptr);
+		begcmgroup("default", 0);
+	    }
 	}
-	if (uv && (yaptr = get_user_var(uv)))
-	    endcmgroup(yaptr);
-	else
-	    endcmgroup(NULL);
-	begcmgroup("default", 0);
     } else if ((tt = cc->explain)) {
 	tt = dupstring(tt);
 	if ((cc->mask & CC_EXPANDEXPL) && !parsestr(tt)) {
@@ -8135,7 +8147,7 @@
 		nl = !!strchr(*pp++, '\n');
 
 	    pp = g->ylist;
-	    if (nl) {
+	    if (nl || !pp[1]) {
 		/* Yup, there are newlines, count lines. */
 		char *nlptr, *sptr;
 

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 8+ messages in thread

* PATCH: _cvs
@ 1999-09-08 14:56 Tanaka Akira
  0 siblings, 0 replies; 8+ messages in thread
From: Tanaka Akira @ 1999-09-08 14:56 UTC (permalink / raw)
  To: zsh-workers

I fixed typo in _cvs.

Also, I found a strange behaviour with `cvs history' in testing.

On 79 (or wider) column terminal:

is27e1u11% cvs history <TAB>
file
.cvsignore 
.distfiles 
ChangeLog 
ChangeLog.3.0 
Completion/
Config/
Doc/
Etc/
Functions/
INSTALL 
Makefile.in 
Misc/
README 
Src/
StartupFiles/
Util/
acconfig.h 
aclocal.m4 
aczsh.m4 
config.guess*
config.sub*
configure.in 
install-sh*
mkinstalldirs*
option
-?  -D  -T  -X  -a  -b  -c  -e  -f  -l  -m  -n  -o  -p  -r  -t  -u  -w  -x  -z

On 78 (or narrower) column terminal:

is27e1u11% cvs history <TAB>
file
.cvsignore      Doc/            README          aczsh.m4 
.distfiles      Etc/            Src/            config.guess*
ChangeLog       Functions/      StartupFiles/   config.sub*
ChangeLog.3.0   INSTALL         Util/           configure.in 
Completion/     Makefile.in     acconfig.h      install-sh*
Config/         Misc/           aclocal.m4      mkinstalldirs*
option
-?  -T  -a  -c  -f  -m  -o  -r  -u  -x
-D  -X  -b  -e  -l  -n  -p  -t  -w  -z

I suppose that the former is not intentional.

Index: Completion/User/_cvs
===================================================================
RCS file: /projects/zsh/zsh/Completion/User/_cvs,v
retrieving revision 1.1.1.8
diff -u -F^( -r1.1.1.8 _cvs
--- _cvs	1999/09/08 00:48:08	1.1.1.8
+++ _cvs	1999/09/08 14:50:59
@@ -66,11 +66,11 @@
     '-e+:access list to erase (not work with CVS):' \
     '-l-:revision to lock:' \
     '-u-:revision to unlock:' \
-    '-n+:symbolic-name[\:revision]:' \
-    '-N+:symbolic-name[\:revision]:' \
+    '-n+:symbolic-name(\:revision):' \
+    '-N+:symbolic-name(\:revision):' \
     '-m+:revision\:msg:' \
     '-o+:range to delete:' \
-    '-s+:state[\:revision]:' \
+    '-s+:state(\:revision):' \
     '-t-:descriptive text:_cvs_admin_t' \
     '-V+:version (obsolete):' \
     '-k+:keyword substitution:_cvs_k' \
@@ -179,7 +179,7 @@
   # "+lRa:"
   _arguments -s \
     -{l,R} \
-    '-a+:action:(edit unedit commit all none)'
+    '-a+:action:(edit unedit commit all none)' \
     '*:file:_cvs_files'
 }
 
-- 
Tanaka Akira


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2002-09-06 15:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-07-28 17:23 PATCH: _cvs Tanaka Akira
1999-07-28 17:50 ` Tanaka Akira
1999-09-08 14:56 Tanaka Akira
1999-09-09  8:23 Sven Wischnowsky
1999-09-09  8:50 ` Tanaka Akira
1999-09-09  9:14 Sven Wischnowsky
2000-05-16  0:06 Tanaka Akira
2002-09-06 15:23 Oliver Kiddle

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).