From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4245 invoked from network); 2 Nov 1998 17:30:56 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 2 Nov 1998 17:30:56 -0000 Received: (from list@localhost) by math.gatech.edu (8.9.1/8.9.1) id MAA21624; Mon, 2 Nov 1998 12:23:35 -0500 (EST) Resent-Date: Mon, 2 Nov 1998 12:23:35 -0500 (EST) From: "Bart Schaefer" Message-Id: <981102092045.ZM11574@candle.brasslantern.com> Date: Mon, 2 Nov 1998 09:20:45 -0800 In-Reply-To: <199811021143.MAA22063@beta.informatik.hu-berlin.de> Comments: In reply to Sven Wischnowsky "Re: BUG: Extended completion with alternative completion" (Nov 2, 12:43pm) References: <199811021143.MAA22063@beta.informatik.hu-berlin.de> X-Mailer: Z-Mail (4.0b.820 20aug96) To: Sven Wischnowsky , zsh-workers@math.gatech.edu Subject: Re: BUG: Extended completion with alternative completion MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"QTngE1.0.lH5.NgUFs"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/4504 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu On Nov 2, 12:43pm, Sven Wischnowsky wrote: } Subject: Re: BUG: Extended completion with alternative completion } } Bart Schaefer wrote: } > There are two problems: (1) in get_ccompctl(), when we chose to return } > the n[] completion, we lose track of the alternative (which hangs off } > the xor pointer in the head of the linked list of -x patterns); (2) we're } > prematurely returning an error in makecomplist(), so even if we still had } > the handle to the xor, we'd never follow it. } } Well, (1) is taken care of in the modifications of the completion code } that are soon to appear. That's good. } And I have to admit that I don't really understand your other } problem. If you want cdmatch to be called even if the cursor is before } the '/', you should use `C[0,*/*]', the manual says that with `n[i,s]' } anything up to the i'th occurrence of s is not part of the completion I don't actually want cdmatch to be called; I just used that as an example because I can't get -anything- to be called. What I want is for something else to be called when cdmatch doesn't give any completions, e.g., cdmatch was called for n[-1,/] but result=(). The definition of alternative completion is that the next alternative is tried when the previous one doesn't produce any matches; that's all I'm trying to get to have happen, and even the 3.0.5 manual claims that it should work with the extended completion form that I used (`+' after the `--'). } Also I don't have any trouble with your second compctl-version } (trouble in the sense of SEGV or something like that). No, I don't either; just a feep() I that shouldn't be feeped. } So, could you please tell me what you wanted to have completed after } the `cd S/M'? (I guess you want `cd Src/Modules' but that would also } require a change in cdmatch.) Maybe I will then understand which fix } you are suggesting for (2). I can show you directly what fix I'm suggesting for (2) (note, I do NOT at this point recommend that anyone apply this patch, it has minimal usefulness without also fixing what we're calling (1) here): Index: zle_tricky.c =================================================================== RCS file: /extra/cvsroot/zsh/zsh-3.1/Src/Zle/zle_tricky.c,v retrieving revision 1.15 diff -u -r1.15 zle_tricky.c --- zle_tricky.c 1998/10/30 17:52:48 1.15 +++ zle_tricky.c 1998/11/02 08:31:00 @@ -2290,7 +2290,7 @@ s += *compadd; if ((offs -= *compadd) < 0) /* It's bigger than our word prefix, so we can't help here... */ - return 1; + goto xornext; /* Insert the prefix (compctl -P), if any. */ if (cc->prefix) { @@ -3037,6 +3037,8 @@ validlist = 1; if (nmatches && !errflag) return 0; + + xornext: if ((isf || cc->xor) && !parampre) { /* We found no matches, but there is a xor'ed completion: * (In the `if ((isf ...' block is another goto that jumps back to the top of makecomplist() to try again with cc->xor.) -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com