Subject: Re: bug#14192: 24.3.50; recursive edit while running ispell not working usefully

From: Stefan Kangas <[email-masked]>
Date: Wed, 10 Jan 2024 03:19:11 -0800

Michael Heerdegen <[email-masked]> writes:

> Michael Heerdegen <[email-masked]> writes:
>
>> Hi,
>>
>> I think the most common use of entering a recursive edit in an ispell
>> session (C-r) would be to modify the checked buffer - especially, to
>> substitute the currently checked word with some other text.  But
>> whenever I exit the recursive edit (C-M-c), the deleted text reappears
>> and is highlighted again as unknown by ispell.  I see this in emacs -Q,
>> e.g. after M-x ispell-buffer in *scratch*.
>
> Some comments after debugging a bit:
>
> `ispell-process-line' sets the variable `replace' to the result of
> `ispell-command-loop'.  `ispell-command-loop', however, returns the
> _old_ word.  Why?
>
> In `ispell-command-loop', search for the cond-clause of (= char ?\C-r).
> The clause returns (list word nil), where `word' is the (old, unchanged)
> current word.  There is this comment at that position:
>
> ; recheck starting at this word.
>
> If I change the clause so that it just returns nil, the bug is fixed,
> but the replaced text is not being checked again (I could live with
> that).
>
> As a fix, we could try to return something reflecting the change that
> was maybe made in the buffer.

That was 10 years ago, so I'm reaching out to see if this is still
an issue on a modern version of Emacs.

If I don't hear back from you within a couple of months, Ill just assume
that this has been fixed and close this bug.

Thanks in advance.