From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9837 invoked from network); 2 May 2000 08:54:31 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 2 May 2000 08:54:31 -0000 Received: (qmail 7725 invoked by alias); 2 May 2000 08:54:21 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11052 Received: (qmail 7713 invoked from network); 2 May 2000 08:54:20 -0000 Date: Tue, 2 May 2000 10:53:47 +0200 (MET DST) Message-Id: <200005020853.KAA30718@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: "Bart Schaefer"'s message of Sat, 29 Apr 2000 17:39:06 +0000 Subject: PATCH: Re: _find or _users broken? Bart Schaefer wrote: > On Apr 29, 1:58pm, Adam Spiers wrote: > } Subject: _find or _users broken? > } > } $ find -user > } ---- user > } ---- directory > } > } $ find ! -user > } ---- directory > } > } > } Why is it completing directories at all? And when it completes users > } and directories, why are the users listed under the directory group? > > That part must have something to do with your settings. The final clause > of the _arguments call in _find is to complete directories when nothing > else matches. Right. Maybe a not-fully up-to-date version? We had some changes to _arguments lately. And they were also causing this: > There is something going wrong, though: > > zagzig[103] find -user > Completing user > (list of users only) > zagzig[103] find /tmp -user > (feep, no completions) > > This (and your case with `!') appears to happen because comparguments > believes the list of options to have been finished when /tmp was put > on the line, i.e., it doesn't deal well with commands whose options > follow a list of non-option arguments. That was just a bug in the function that collects the actions to report. It incorrectly tested the argument numbers even for arguments of options. And it should always complete options and their arguments after all normal arguments, right? It always did (or should have done) that. And of course, for `find' there is no `last' argument because we complete any number of directories. Bye Sven Index: Src/Zle/computil.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Zle/computil.c,v retrieving revision 1.10 diff -u -r1.10 computil.c --- Src/Zle/computil.c 2000/04/28 11:16:52 1.10 +++ Src/Zle/computil.c 2000/05/02 08:52:11 @@ -1396,9 +1396,9 @@ addopt = (opt ? 0 : ca_laststate.oopt); - for (; arg && (arg->num < 0 || - (arg->min <= ca_laststate.nth + addopt && - arg->num >= ca_laststate.nth));) { + for (; arg && (opt || (arg->num < 0 || + (arg->min <= ca_laststate.nth + addopt && + arg->num >= ca_laststate.nth)));) { lopt = (arg->type == CAA_OPT); if (!opt && !lopt && oopt > 0) oopt = 0; -- Sven Wischnowsky wischnow@informatik.hu-berlin.de