zsh-workers
 help / color / mirror / code / Atom feed
From: "Matt Wozniski" <godlygeek@gmail.com>
To: zsh-workers@sunsite.dk
Subject: Re: Unexpected side effect of 'setopt correct'
Date: Mon, 13 Aug 2007 16:42:23 -0400	[thread overview]
Message-ID: <17393e3e0708131342v4f1054cdo42a7076a91b8f0b4@mail.gmail.com> (raw)
In-Reply-To: <20070813210734.dbe4b58f.p.w.stephenson@ntlworld.com>

On 8/13/07, Peter Stephenson <p.w.stephenson@ntlworld.com> wrote:
> On Sun, 5 Aug 2007 22:36:38 -0400
> "Matt Wozniski" <godlygeek@gmail.com> wrote:
> > I just noticed this effect of 'setopt correct'.. Is this intentional behavior?
>
> Ish.
>
> > mastermind% function pid() {
>                           ^^ (actually you don't want the () in this case)

I've seen you mention before that the () shouldn't be used after
'function', but the grammar says it's allowed:
function word ... [ () ] [ term ] { list }
Either you've made a tiny mistake in the grammar or on the lists.  :)

> > function>
> > mastermind%
> >
> > Is it intentional that it attempts to correct on a function
> > definition?  Is it intentional that it only attempts to correct one of
> > the two types of function definition?  Something about this behavior
> > caught me off guard.  :)
>
> Correction happens as the line is parsed.  In the first case, the shell
> has read as far as "pid", and assumes to begin with it's a command word,
> hence it applies correction.  It needs to do this early on because it
> has to correct the word before it starts parsing the arguments to it.
> To change this would require a lot more lookahead, or we'd have to live
> with side effects like not being able to correct to special shell
> constructs.
>
> In the second case, since we've found the keyword "function", we know
> the next word isn't expected to be an existing command and we can
> disable spelling correction immediately,

I understand what you're saying, but have a tiny suggestion to make: I
understand the necessity of correcting the command before parsing its
arguments, but in the case of "pid() {\n", the first word is not "pid"
but "pid()" - so, I haven't sourcedived on this, but I assume while
parsing out the command, it's iterating over the line, peeking at the
next character, and checking if it's a whitespace or '('...  Wouldn't
it be easy to special-case "word()" to turn off correction in the same
way as "function word" turns it off?  Of course, that wouldn't work as
easily for "word ()" with some whitespace stuck in there, but I'd
consider it a slight improvement if it's as easy a tweak as I think it
would be.  :)

~Matt


  reply	other threads:[~2007-08-13 20:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-06  2:36 Matt Wozniski
2007-08-13 20:07 ` Peter Stephenson
2007-08-13 20:42   ` Matt Wozniski [this message]
2007-08-13 21:24     ` Peter Stephenson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17393e3e0708131342v4f1054cdo42a7076a91b8f0b4@mail.gmail.com \
    --to=godlygeek@gmail.com \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).