GNU bug report logs - #24176
Confusing interaction between define-derived-mode and font-lock-add-keywords

Previous Next

Package: emacs;

Reported by: Clément Pit--Claudel <clement.pitclaudel <at> live.com>

Date: Sun, 7 Aug 2016 06:42:01 UTC

Severity: minor

Tags: confirmed

Found in version 25.1

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #11 received at 24176 <at> debbugs.gnu.org (full text, mbox):

From: npostavs <at> users.sourceforge.net
To: Clément Pit--Claudel <clement.pitclaudel <at> live.com>
Cc: 24176 <at> debbugs.gnu.org
Subject: Re: bug#24176: Confusing interaction between define-derived-mode and
 font-lock-add-keywords
Date: Wed, 24 Aug 2016 20:53:15 -0400
severity 24176 minor
tags 24176 confirmed
found 24176 25.1
quit

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)
        ...




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.