bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#71819: Incorrect substitution when undo replacing regexps


From: Juri Linkov
Subject: bug#71819: Incorrect substitution when undo replacing regexps
Date: Sun, 30 Jun 2024 19:25:11 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu)

>> I encountered a bug when replacing regular expressions.
>> If you [u]ndo a previous change during the replacement process, subsequent 
>> changes to the \2 substitution
>> will use the old undone result.
>>
>> Text:
>> ---
>> Aaaaa. Bbbb.
>> Ccccc. Dddd.
>> Eeeee. Ffff.
>> Ggggg. Hhhh.
>> ---
>> Input regexp: \([.]\) \([A-Z]\)
>> Output regexp: \1  \2
>> Bug:
>> 1. Copy the text above to the buffer.
>> 2. Enter the regular expressions to the interactive regexp replacement 
>> [C-M-%].
>> 3. Click [y] twice until the Ffff is highlighted.
>> 4. Cancel the previous replacement via [u].
>> 5. Continue replacing [y] until the end.
>> 6. Notice that all sentences except the first and second now begin with an 
>> incorrect letter D, which is not
>> implied by the entered regexp, it should be F and H, as if it had been 
>> replaced, but without being undoed in
>> the middle of the process.
>> Output:
>> ---
>> Aaaaa.  Bbbb.
>> Ccccc.  Dddd.
>> Eeeee.  Dfff.
>> Ggggg.  Dhhh.
>> ---
>
> This is a regression between Emacs 26 and Emacs 27, perhaps as a side
> effect of fixing bug#36328.  Juri, could you please take a look?

This is caused by the commit 30c4f35a6fc8 that introduced these lines:

  (when regexp-flag
    (setq next-replacement (nth 4 elt)))

Maybe Tino knows how to fix this (Cc'ed).





reply via email to

[Prev in Thread] Current Thread [Next in Thread]