GNU bug report logs -
#65632
30.0.50; Proposal to improve `faces--attribute-at-point'.
Previous Next
Reported by: David Ponce <da_vid <at> orange.fr>
Date: Wed, 30 Aug 2023 18:06:02 UTC
Severity: wishlist
Tags: moreinfo, patch
Found in version 30.0.50
Done: Stefan Kangas <stefankangas <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#65632: 30.0.50; Proposal to improve `faces--attribute-at-point'.
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 65632 <at> debbugs.gnu.org.
--
65632: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65632
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
David Ponce <da_vid <at> orange.fr> writes:
> Sincerely, I thought this bug was closed a long time ago.
[...]
OK, thanks. I'm therefore closing this bug report now.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
Hello,
I noticed that the functions `foreground-color-at-point' and
`background-color-at-point' don't return expected values when the face
at point includes anonymous face or is a nested list of face, for
example.
Here is a simple recipe that demonstrates the issue (emacs -Q):
In scratch buffer eval:
-----------------------
;; Display "TEST" in red, bold, italic on yellow background.
(insert
(propertize
"TEST" 'font-lock-face
'(bold ((:background "yellow") "italic"
((foreground-color . "red") underline)))))
TESTnil
;; Then click to move point somewhere on TEST and run
M-: (foreground-color-at-point) RET
>>> result is "black" instead of "red"
M-: (background-color-at-point) RET
>>> result is "white" instead of "yellow"
I propose the attached patch to faces.el to improve things.
The patch introduce a new function `face-attribute-lookup' to lookup
face attribute, that works when face specification is complex like in
above example. The function `faces--attribute-at-point' is simplified
to use it.
Here is a possible changelog:
* faces.el: Improve attribute lookup of face at point.
(face--unnamed-attributes): New constant.
(face--attribute-unspecified-p)
(face-attribute-lookup): New functions.
(faces--attribute-at-point): Use it. Remove useless argument.
(foreground-color-at-point)
(background-color-at-point): Update accordingly.
Thanks
[faces-attribute-lookup-V0.patch (text/x-patch, attachment)]
This bug report was last modified 85 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.