[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24176: Confusing interaction between define-derived-mode and font-lo
From: |
npostavs |
Subject: |
bug#24176: Confusing interaction between define-derived-mode and font-lock-add-keywords |
Date: |
Wed, 24 Aug 2016 20:53:15 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
severity 24176 minor
tags 24176 confirmed
found 24176 25.1
quit
Clément Pit--Claudel <clement.pitclaudel@live.com> writes:
> Sorry, the original report had a confusing example; here is a fixed copy.
>
> (define-derived-mode ~/a fundamental-mode "~/a"
> (font-lock-add-keywords nil `(("a" 0 'font-lock-keyword-face))))
> (define-derived-mode ~/b ~/a "~/b"
> (font-lock-add-keywords nil `(("b" 0 'font-lock-builtin-face))))
> (define-derived-mode ~/c ~/b "~/c"
> (font-lock-add-keywords nil `(("c" 0 'font-lock-constant-face))))
>
> Explicitly calling (setq font-lock-major-mode major-mode) before calling
> font-lock-add-keywords yields the expected behaviour.
Yeah, it seems `font-lock-set-defaults' (called from
`font-lock-add-keywords') deletes the parent mode's added keywords since
they were not from the "correct" mode.
(defun font-lock-set-defaults ()
"Set fontification defaults appropriately for this mode.
Sets various variables using `font-lock-defaults' and
`font-lock-maximum-decoration'."
;; Set fontification defaults if not previously set for correct major
mode.
(unless (and font-lock-set-defaults
(eq font-lock-major-mode major-mode))
(setq font-lock-major-mode major-mode)
(setq font-lock-set-defaults t)
...