Subject: Re: bug#60841: 30.0.50; kill-ring-save pauses despite region being highlighted

From: Eli Zaretskii <[email-masked]>
Date: Mon, 30 Jan 2023 14:41:52 +0200

> From: Kévin Le Gouguec <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sun, 29 Jan 2023 23:57:33 +0100
> 
> > So we need to treat :stipple specially, or maybe fix merge_face_ref to
> > allow the nil value.
> 
> You mean something like the following?

Yes.

> OT1H that's the kind of sleeping dragon that I wouldn't want to tickle,
> OTOH I see that other spots in the code seem to accept QCstipple mapping
> to a NILP value:

Exactly.  The nil value is also documented as a valid one.  So we must
make that change in xfaces.c.

> >From d767d5c658278bb102dea9a716da7a04dccb34aa Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <[email-masked]>
> Date: Sun, 29 Jan 2023 11:23:01 +0100
> Subject: [PATCH] Avoid spurious pause in kill-ring-save (Bug#60841)
> 
> 'indicate-copied-region' checks whether the region is "highlighted"
> and if not, briefly moves point to mark to give a visual cue of the
> extent of text that was saved to the kill ring.
> 
> The region is considered "highlighted" if (a) it is active and (b) its
> face specifies a :background.  That latter condition does not account
> for the multiple ways in which the face can make the region "visually
> distinct" from the default face, so switch to a more extensive
> predicate.
> 
> * lisp/faces.el (face-differs-from-default-p): Filter out :extend; add
> rationale for the attributes we ignore.
> * lisp/simple.el (copy-region-blink-predicate): Add option to let user
> explicitly opt into or out of blinking point and mark.
> (region-indistinguishable-p): New function to detect
> "if there is currently no active region highlighting", leveraging
> face-differs-from-default-p.
> (indicate-copied-region): Use it.
> * etc/NEWS: Announce user option.

Please add the xfaces.c change, and then this can go in (to the
emacs-29 branch).

Thanks.