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
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
This bug report was last modified 151 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.