[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#71469: font-lock does not apply standard faces and their descendants
From: |
Konstantin Kharlamov |
Subject: |
bug#71469: font-lock does not apply standard faces and their descendants |
Date: |
Mon, 10 Jun 2024 14:59:37 +0300 |
User-agent: |
Evolution 3.52.2 |
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
- bug#71469: font-lock does not apply standard faces and their descendants,
Konstantin Kharlamov <=