From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18759 invoked by alias); 18 Nov 2011 12:50:35 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 16583 Received: (qmail 28073 invoked from network); 18 Nov 2011 12:50:33 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 Received-SPF: pass (ns1.primenet.com.au: SPF record at spf.mandic.com.br designates 200.225.81.143 as permitted sender) Message-ID: <4EC65484.5040603@mandic.com.br> Date: Fri, 18 Nov 2011 10:50:12 -0200 From: Daniel Serodio User-Agent: Postbox 3.0.1 (Macintosh/20111102) MIME-Version: 1.0 To: Bart Schaefer CC: zsh-users@zsh.org Subject: Re: Auto-correct and newly-added commands References: <4EC15E90.6020703@mandic.com.br> <111114201608.ZM11290@torch.brasslantern.com> In-Reply-To: <111114201608.ZM11290@torch.brasslantern.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Bart Schaefer wrote: > On Nov 14, 4:31pm, Daniel Serodio (lists) wrote: > } > } It it possible to have zsh automatically run "rehash" after I reply no > } to an auto-correct prompt, so it "learns" this new command? > > Hrm. The direct answer is "no" but: > > That would certainly seem logical. Also it seems strange to load up > the command tables and check them for proper spellings when the word > that is being checked is not in the command position to begin with. Hmm, maybe my explanation wasn't clear (or I don't understand your reply), but I only have problem with real commands (in the beginning of the line), not with their arguments. Or did you mention "words not in the command position" from reviewing the code and not my explanation? > What this patch does is reset the incremental path search in the event > the correction is rejected. That allows whatever hashing options the > user has specified to kick in at the time the path is searched during > command execution, rather than having to test them all here. This sounds like what I need, but when I tried to apply this patch, it failed (both on zsh 4.3.12 and on a fresh git clone). Where should I apply this patch? Thanks, Daniel Serodio > Index: Src/utils.c > --- ../zsh-forge/current/Src/utils.c 2011-09-25 15:52:55.000000000 -0700 > +++ Src/utils.c 2011-11-14 19:58:34.000000000 -0800 > @@ -2498,16 +2498,18 @@ > return; > if (!(*s)[0] || !(*s)[1]) > return; > - if (shfunctab->getnode(shfunctab, *s) || > - builtintab->getnode(builtintab, *s) || > - cmdnamtab->getnode(cmdnamtab, *s) || > - aliastab->getnode(aliastab, *s) || > - reswdtab->getnode(reswdtab, *s)) > - return; > - else if (isset(HASHLISTALL)) { > - cmdnamtab->filltable(cmdnamtab); > - if (cmdnamtab->getnode(cmdnamtab, *s)) > + if (cmd) { > + if (shfunctab->getnode(shfunctab, *s) || > + builtintab->getnode(builtintab, *s) || > + cmdnamtab->getnode(cmdnamtab, *s) || > + aliastab->getnode(aliastab, *s) || > + reswdtab->getnode(reswdtab, *s)) > return; > + else if (isset(HASHLISTALL)) { > + cmdnamtab->filltable(cmdnamtab); > + if (cmdnamtab->getnode(cmdnamtab, *s)) > + return; > + } > } > t = *s; > if (*t == Tilde || *t == Equals || *t == String) > @@ -2621,6 +2623,8 @@ > fflush(shout); > zbeep(); > x = getquery("nyae \t", 0); > + if (cmd&& x == 'n') > + pathchecked = path; > } else > x = 'n'; > } else >