Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: tag-order problem?



Tanaka Akira wrote:

> In article <200105280826.KAA00483@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
>   Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx> writes:
> 
> > I know this isn't nice, but I didn't see a good solution and still don't
> > see one.  This is `caused' by the default value for tag-order which
> > makes arguments and value be preferred over options (as mentioned in the
> > docs for the tag-order style).
> 
> Hm.  zsh-4.0.1-pre-3 works as I expected.
> 
> Z(2):akr@flux% zsh-4.0.1-pre-3 -f
> flux% bindkey -e; autoload -U compinit; compinit -D
> flux% zstyle '*' group-name ''
> flux% zstyle '*:messages' format '%d'
> flux% zstyle '*:descriptions' format '%d'
> flux% zstyle ':completion:*' 'tag-order' '*:-non-cvs' '*'
> flux% zstyle ':completion:*-non-cvs' 'ignored-patterns' '(*/|)CVS'
> flux% compdef _tst tst
> flux% _tst () { _arguments -s '-a-:x:' '-b' }
> flux% tst -a<TAB>
> x
> 
> 
> zsh-4.0.1-pre-4 works as zsh-4.0.1-pre-5.  So I suspect the problem is
> introduced by some patch between pre-3 and pre-4.  Maybe `-W' related
> thing?

Hm, yes.  Still the behaviour seems sensible, somehow.

Anyway. Anyone interested could try the patch below, which gives what
you expect in this case. The question is whether this breaks any of the
examples we had for inventing the -w and -W options. I don't think I'll
have the time to test those today.

Bye
  Sven

Index: Completion/Base/Utility/_arguments
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Utility/_arguments,v
retrieving revision 1.5
diff -u -r1.5 _arguments
--- Completion/Base/Utility/_arguments	2001/04/26 14:40:11	1.5
+++ Completion/Base/Utility/_arguments	2001/05/28 10:29:51
@@ -233,7 +233,7 @@
 	descr="$descrs[anum]"
 	subc="$subcs[anum++]"
 
-        if [[ -n "$matched" ]] || _requested "$subc"; then
+        if [[ -z "$tried" ]] && { [[ -n "$matched" ]] || _requested "$subc" }; then
 
           curcontext="${oldcontext%:*}:$subc"
 
@@ -328,7 +328,8 @@
         fi
       done
       if [[ -z "$hasopts" &&
-            ( -z "$matched" || -n "$alwopt" ) &&
+            -z "$matched" &&
+            ( -z "$tried" || -n "$alwopt" ) &&
             ( -z "$aret" || "$PREFIX" = "$origpre" ) ]] &&
           _requested options &&
           { ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
@@ -389,7 +390,8 @@
       [[ -n "$tried" && "${${alwopt:+$origpre}:-$PREFIX}" != [-+]* ]] && break
     done
     if [[ -n "$opts" && -z "$aret" &&
-          ( -z "$matched$mesg" || -n "$alwopt" ) &&
+          -z "$matched" &&
+          ( -z "$tried" || -n "$alwopt" ) &&
           nm -eq compstate[nmatches] ]]; then
 
       PREFIX="$origpre"

-- 
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author