GNU bug report logs -
#71469
font-lock does not apply standard faces and their descendants
Previous Next
Reported by: Konstantin Kharlamov <Hi-Angel <at> yandex.ru>
Date: Mon, 10 Jun 2024 12:33:02 UTC
Severity: normal
Fixed in version 31.1
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 message dated Tue, 17 Dec 2024 18:51:00 -0800
with message-id <CADwFkm=yqGZTUGNwBAKNTs6Kxt_gbOEgRebNyAKO_kruzb90hg <at> mail.gmail.com>
and subject line Re: bug#71469: font-lock does not apply standard faces and their descendants
has caused the debbugs.gnu.org bug report #71469,
regarding font-lock does not apply standard faces and their descendants
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
71469: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71469
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
While trying to add a face to a major mode I found that both standard
faces¹ and inherited ones are ignored completely.
In steps below I create a simple major mode and it uses an inherited
face, but face does not get applied. NOTE: if you replace the inherited
face with, for example, `font-lock-constant-face`, it will get
highlighted. I.e. the problem somehow bound to faces.
# Steps to reproduce
1. Create `test.el` file as follows:
(defface test-face
'((t (:inherit bold)))
"Test face.")
(define-derived-mode my-mode fundamental-mode "My Mode"
"A minimal mode that highlights 'hello world' text."
(font-lock-add-keywords nil '(("hello world" 0 test-face)))
(font-lock-flush))
(add-to-list 'auto-mode-alist (cons "test.txt" 'my-mode))
(provide 'my-mode)
And `test.txt` as follows:
==> hello world <==
2. Launch Emacs as `emacs -Q -l test.el test.txt`
3. Put a caret over the word `hello` and evaluate M-x describe-char
## Expected
The description buffer mentions that `face` is `test-face`.
## Actual
There is no `face` property at all.
# Additional information
Versions tested: Emacs built from February master and a stable 29.3
The problem actually doesn't seem to be related to `defface`, because
passing `bold` to the `font-lock-add-keywords` had similarly no effect
for some reason. More likely it's related to the "standard faces".
1: https://www.gnu.org/software/emacs/manual/html_node/emacs/Standard-Faces.html
[Message part 3 (message/rfc822, inline)]
Version: 31.1
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> We have occasionally declared things obsolete with the understanding
>> that they'll be deleted much later than the normal "10 years, give or
>> take". See the comment in `interactive-p', for example.
>>
>> The patch below gives me 64 warnings in our tree. I'm not sure if it's
>> worth installing or not.
>
> FWIW, it's a +1 from me (assuming we then silence the resulting
> warnings, of course).
Thanks.
There have been no objections to the suggested patch, so I have now
installed a version of it on master as commit 3d3c1094604. The
installed change silences all warnings, and updates the manual and NEWS.
The discussion in this thread focused on the wording of the warning, and
there were several good suggestions. In the end, I settled on the
following, which I hope strikes a compromise between being brief, exact,
and telling the user in clear terms how to fix the warning:
use the quoted symbol instead: 'font-lock-foo-face
Getting rid of these variables should help avoid the confusion that the
OP had regarding faces and variables.
With that, I'm closing this bug report.
This bug report was last modified 152 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.