GNU bug report logs -
#24176
Confusing interaction between define-derived-mode and font-lock-add-keywords
Previous Next
Full log
Message #20 received at 24176 <at> debbugs.gnu.org (full text, mbox):
npostavs <at> users.sourceforge.net writes:
> Clément Pit--Claudel <clement.pitclaudel <at> 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)
> ...
Stefan, is this working as designed? If so, the behaviour should
perhaps be mentioned in the doc for font-lock-add-keywords and/or
define-derived-mode?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 3 years and 120 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.