From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10641 invoked from network); 30 Sep 2004 11:35:18 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 30 Sep 2004 11:35:18 -0000 Received: (qmail 76102 invoked from network); 30 Sep 2004 11:35:12 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 30 Sep 2004 11:35:12 -0000 Received: (qmail 14977 invoked by alias); 30 Sep 2004 11:34:58 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 20427 Received: (qmail 14962 invoked from network); 30 Sep 2004 11:34:57 -0000 Received: from unknown (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 30 Sep 2004 11:34:57 -0000 Received: (qmail 75431 invoked from network); 30 Sep 2004 11:33:58 -0000 Received: from lhuumrelay3.lnd.ops.eu.uu.net (62.189.58.19) by a.mx.sunsite.dk with SMTP; 30 Sep 2004 11:33:57 -0000 Received: from MAILSWEEPER01.csr.com (mailhost1.csr.com [62.189.183.235]) by lhuumrelay3.lnd.ops.eu.uu.net (8.11.0/8.11.0) with ESMTP id i8UBXuv24655 for ; Thu, 30 Sep 2004 11:33:56 GMT Received: from EXCHANGE02.csr.com (unverified [192.168.137.45]) by MAILSWEEPER01.csr.com (Content Technologies SMTPRS 4.3.12) with ESMTP id for ; Thu, 30 Sep 2004 12:32:57 +0100 Received: from news01.csr.com ([192.168.143.38]) by EXCHANGE02.csr.com with Microsoft SMTPSVC(5.0.2195.6713); Thu, 30 Sep 2004 12:35:51 +0100 Received: from news01.csr.com (localhost.localdomain [127.0.0.1]) by news01.csr.com (8.12.11/8.12.11) with ESMTP id i8UBXpB6017292 for ; Thu, 30 Sep 2004 12:33:51 +0100 Received: from csr.com (pws@localhost) by news01.csr.com (8.12.11/8.12.11/Submit) with ESMTP id i8UBXpGA017289 for ; Thu, 30 Sep 2004 12:33:51 +0100 Message-Id: <200409301133.i8UBXpGA017289@news01.csr.com> X-Authentication-Warning: news01.csr.com: pws owned process doing -bs To: zsh-workers@sunsite.dk (Zsh hackers list) Subject: PATCH: (perhaps) for use of _oldlist Date: Thu, 30 Sep 2004 12:33:50 +0100 From: Peter Stephenson X-OriginalArrivalTime: 30 Sep 2004 11:35:51.0198 (UTC) FILETIME=[A35EFBE0:01C4A6E1] X-Spam-Checker-Version: SpamAssassin 2.63 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, hits=0.0 required=6.0 tests=none autolearn=no version=2.63 X-Spam-Hits: 0.0 I was using Oliver's version of most-recent-file, which works as follows (see zsh-users/6957, for example): zstyle ':completion:most-recent-file:*' match-original both zstyle ':completion:most-recent-file::::' completer _menu _files _match zstyle ':completion:most-recent-file:*' file-sort modification zstyle ':completion:most-recent-file:*' file-patterns '*(.):normal\ files' zstyle ':completion:most-recent-file:*' hidden all bindkey '^X.' most-recent-file zle -C most-recent-file menu-complete _generic It allows you to cycle through the most recent matches in order. I found that this doesn't work with the _oldlist completer. _oldlist works the first time, preserving the list of matches, but on the second TAB decides to generate a new list. This appears to be because _main_completer squirrels away compstate[nmatches] regardless of _oldlist; the value is 0 after the first use of _oldlist because we didn't generate any matches this time. (I say "appears" because although it certainly does do what I said it's possible there's something deeper going on.) If I've identified the real symptom and not a side effect, the following patch will fix it. I can well believe it's more involved, however. It's offset a couple of lines because of my two-line change to give progress reports on completion, which I'm happily using but no one else liked. Index: Completion/Base/Core/_main_complete =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Base/Core/_main_complete,v retrieving revision 1.9 diff -u -r1.9 _main_complete --- Completion/Base/Core/_main_complete 2 Mar 2004 12:52:06 -0000 1.9 +++ Completion/Base/Core/_main_complete 30 Sep 2004 11:26:51 -0000 @@ -167,7 +170,14 @@ done curcontext="${curcontext/:[^:]#:/::}" -nm=$compstate[nmatches] +if [[ $compstate[old_list] = keep ]]; then + # We are keeping the old list of matches, so keep the + # number of matches we found last time rather than the + # number just generated. + nm=$_lastcomp[nmatches] +else + nm=$compstate[nmatches] +fi if [[ $compstate[old_list] = keep || nm -gt 1 ]]; then [[ _last_nmatches -ge 0 && _last_nmatches -ne nm ]] && -- Peter Stephenson Software Engineer CSR Ltd., Science Park, Milton Road, Cambridge, CB4 0WH, UK Tel: +44 (0)1223 692070 ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses. www.mimesweeper.com **********************************************************************