]> git.eshelyaron.com Git - emacs.git/commit
Avoid spurious pause in kill-ring-save (Bug#60841)
authorKévin Le Gouguec <kevin.legouguec@gmail.com>
Sun, 29 Jan 2023 10:23:01 +0000 (11:23 +0100)
committerKévin Le Gouguec <kevin.legouguec@gmail.com>
Thu, 2 Feb 2023 18:39:39 +0000 (19:39 +0100)
commitc4988840598b7da84b25d21a1936ce1ab6f6d666
tree0899a6fd53ebd903540b5f2e57f02a2d0b565ac4
parent382ab516cefc974d65622479fb7e844fd982011d
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 the more extensive
predicate face-differs-from-default-p.

The patch also fixes a couple of issues with the predicate's
implementation, and introduces a new user option in case anyone
happened to enjoy unconditional blinking.

* 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
users 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.
* src/xfaces.c (merge_face_ref): Allow :stipple to be nil, since it is
a documented valid value for that attribute.
* etc/NEWS: Announce user option.
etc/NEWS
lisp/faces.el
lisp/simple.el
src/xfaces.c