From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27400 invoked from network); 7 Jan 1997 00:13:24 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 7 Jan 1997 00:13:24 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id TAA09915; Mon, 6 Jan 1997 19:14:24 -0500 (EST) Resent-Date: Mon, 6 Jan 1997 19:14:24 -0500 (EST) From: Zoltan Hidvegi Message-Id: <199701070010.BAA01777@hzoli.ppp.cs.elte.hu> Subject: Re: MH command completion problems To: zefram@dcs.warwick.ac.uk (Zefram) Date: Tue, 7 Jan 1997 01:10:39 +0100 (MET) Cc: pws@ifh.de, Harres@uwyo.edu, zsh-workers@math.gatech.edu In-Reply-To: <20178.199701061814@stone.dcs.warwick.ac.uk> from Zefram at "Jan 6, 97 06:14:22 pm" X-Mailer: ELM [version 2.4ME+ PL17 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"vwNC-.0.sQ2.WLPqo"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2736 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu > Peter Stephenson wrote: > >tstfn() { reply=("${1%/*}/foo" "${1%/*}/bar") } > >compctl -K tstfn -S / -q tstfn > >tstfn foo/ > > > >This certainly gives me the double / (you can't get any more because > >of the way tstfn is defined), but autolist does work for me. > > Yes, it's a shell bug. In the above scenario, tstfn is getting > arguments "foo" and "". The already-present suffix is being ignored at > that point, for completion purposes. The function returns completions > "foo/foo" and "foo/bar". If I recall the internals correctly, this is > being interpreted as requiring the addition of "/foo" or "/bar" to the > existing string "foo". However, the additions are being applied to the > string actually there, "foo/", which the function saw no indication > of. > > Theoretically, it's a simple matter of programming to make the -S > suffix be added in the right place. Actually it's a bit of a > nightmare. I think it is not a nightmare. Try this patch (for zsh-3.0.x go to the Src directory first). Zoltan *** Src/Zle/zle_tricky.c 1997/01/06 03:06:15 3.1.1.8 --- Src/Zle/zle_tricky.c 1997/01/07 00:01:35 *************** *** 2253,2259 **** /* If the suffix is already there, ignore it (and don't add * * it again). */ if (*sd && (suffixll = strlen(sd)) >= sl && ! !strcmp(sdup, sd + suffixll - sl)) { ccsuffix = NULL; haswhat |= HAS_SUFFIX; s[suffixll - sl] = '\0'; --- 2253,2259 ---- /* If the suffix is already there, ignore it (and don't add * * it again). */ if (*sd && (suffixll = strlen(sd)) >= sl && ! offs <= suffixll - sl && !strcmp(sdup, sd + suffixll - sl)) { ccsuffix = NULL; haswhat |= HAS_SUFFIX; s[suffixll - sl] = '\0';