From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11804 invoked from network); 21 Jun 2000 00:52:30 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 21 Jun 2000 00:52:30 -0000 Received: (qmail 8280 invoked by alias); 21 Jun 2000 00:52:20 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 12009 Received: (qmail 8261 invoked from network); 21 Jun 2000 00:52:20 -0000 Date: Tue, 20 Jun 2000 17:52:12 -0700 (PDT) From: Bart Schaefer Sender: schaefer@aztec.zanshin.com Reply-To: Bart Schaefer To: Peter Stephenson cc: Zsh hackers list Subject: Re: history completion oddity In-Reply-To: <0FWG003OMOKZCF@la-la.cambridgesiliconradio.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 20 Jun 2000, Peter Stephenson wrote: > I expect Sven will tell me this is the way it should work (or has to work), > but it's worth a try... I think this is in fact a bug ... > history completion (ESC-/) on > % echo ${PWD > does nothing. Using the _history completer and ^X?, I find that this line gets executed: +_all_labels:39> compadd -1V -default- -Q -a h_words This ought to produce a match, but apparently it does not, because the return value is nonzero so _all_labels eventually returns 1. With > % echo ${PWD/ the same compadd is executed, but this time it DOES match. > I would guess that something visceral is grabbing potential parameter > completions before the history code can do anything Nope. Incidentally, I just had an exchange with A. Spiegl in which he noted that history completion is unacceptably slow because he has HISTSIZE=15000. He also has several match specs. I played around with the _history completer a little and found that it gets called once for every match spec, which thus assigns h_words=("${(@)historywords[2,-1]}") each time ... I estimate that at ~5 words per command and ~4 bytes per word, zsh is copying about 300Kb of memory every time it does that assignment, so zsh rips through as much as 3Mb every time he hits TAB. Admittedly, keeping 15000 lines of history is a little unusual, but there must be something we can do about this. (Imagine what was going on before Sven added "compadd -a arrayname" ...)