Subject: Re: bug#71430: Persistent Highlighting Issue with query-replace using "act-and-show" Option

From: Eli Zaretskii <[email-masked]>
Date: Sat, 08 Jun 2024 11:33:55 +0300

> Date: Sat, 8 Jun 2024 09:29:41 +0200
> From: Gabriele Nicolardi <[email-masked]>
> 
> I’ve encountered a potential bug in Emacs when using the |query-replace| 
> (via |perform-replace|) functions. When performing text replacements 
> across a buffer and choosing to replace but not immediately move the 
> point (using the |,| |act-and-show| option), the function does replace 
> the text as expected but fails to update the highlighting to the region 
> containing the replacement.
> 
> *Steps to Reproduce:*
> 
>  1.
> 
>     Open a buffer with the following content:
> 
>     |String to be replaced. Another string. String to be replaced.
>     Another string. End |
> 
>  2.
> 
>     Run the following command:
> 
>     |(query-replace "String to be replaced." "Replacement." nil
>     (point-min) (point-max)) |
> 
>  3.
> 
>     When prompted to replace a match, use the |,| (|act-and-show|)
>     option to replace the text but pause moving to the next match.
> 
> *Expected Behavior:*
> After a replacement is made and before moving to the next match, the 
> highlighted region of the replaced text should be “updated” to fit the 
> replaced text.
> 
> *Actual Behavior:*
> The highlighting remains on the matched region. This issue can be 
> visually confirmed in the following animation:

You don't say in what version of Emacs you see the problematic
behavior.  I can reproduce the behavior you report in Emacs 29, but
not in Emacs 30 (on the master branch of the Emacs Git repository).
So I think this bug was already solved on the master branch, which
will become Emacs 30.