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

From: Michael Heerdegen <[email-masked]>
Date: Fri, 12 Apr 2013 18:51:14 +0200

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.

Regards,

Michael.