zsh-workers
 help / color / mirror / code / Atom feed
From: Vincent Lefevre <vincent@vinc17.net>
To: zsh-workers@zsh.org
Subject: Re: [BUG] With CORRECT_ALL, an interrupted correct puts a truncated entry in history
Date: Tue, 5 Dec 2023 13:57:32 +0100	[thread overview]
Message-ID: <20231205125732.GA1126552@cventin.lip.ens-lyon.fr> (raw)
In-Reply-To: <CAH+w=7bZmryKWV6=kZhMU7=R9WPa+sFEFi1iJcybcJsnjw15_g@mail.gmail.com>

On 2023-12-04 20:10:10 -0800, Bart Schaefer wrote:
> What's happening here is that the corrections occur in-place as the
> parser reads words from the input line, much the same way that aliases
> are expanded.
> 
> When you hit ctrl-c you cause an interrupt signal which stops the
> parser from reading any further input, but because it's interactive
> the shell itself doesn't exit, it just forces the parser to return.
> The history mechanism then records what the parser read so far.
> 
> Conversely when you hit e.g. 'a' the parser is not interrupted,
> continues to the end of the line, and then returns.  Again the history
> mechanism records what the parser read so far.

I thought that this would have been put in a temporary buffer,
until the (possibly corrected) command is validated.

> Changing this would potentially require changing the way the
> lexer+parser handle interrupt signals in general ... or changing both
> ^C and 'a' to skip the history, I suspect.

I think that ^C and 'a' should just skip the history. Just like when
one types ^C in zle, the command line is discarded and not put in the
history (here, the parser has not been involved).

> > BTW, the behavior in case of several spelling corrections should
> > be documented.
> 
> Something like this?

I was also thinking about the SPROMPT documentation. The following
is inexact:

    n (`no') (default)
        Discard the correction and run the command.
    y (`yes')
        Make the correction and run the command.

One may think that the command will be run immediately after 'n' or 'y'
(i.e. not checking for other corrections). This should be like

    Discard/Make the correction and prompt for the next correction
    or run the command.

In particular, the current 'n' one is very ambiguous, because one may
want to run the command without any additional prompt for corrections.
So perhaps there should be a real

    r (`run`)
        Discard the correction and run the command (without prompting
        for other corrections).

-- 
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)


  reply	other threads:[~2023-12-05 12:57 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05  2:12 Vincent Lefevre
2023-12-05  4:10 ` Bart Schaefer
2023-12-05 12:57   ` Vincent Lefevre [this message]
2023-12-05 21:22     ` Bart Schaefer
2023-12-06 15:03       ` Vincent Lefevre
2023-12-09 21:44         ` Bart Schaefer
2023-12-17 13:54           ` Vincent Lefevre
2023-12-17 19:37             ` Bart Schaefer
2023-12-18  3:37               ` Vincent Lefevre
2023-12-18  6:36                 ` Bart Schaefer
2024-01-21  5:06     ` Bart Schaefer

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=20231205125732.GA1126552@cventin.lip.ens-lyon.fr \
    --to=vincent@vinc17.net \
    --cc=zsh-workers@zsh.org \
    /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).