emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/2] Make font-lock honor parents mode of current major-mode


From: Julien Danjou
Subject: [PATCH 2/2] Make font-lock honor parents mode of current major-mode
Date: Tue, 8 Feb 2011 19:43:13 +0100

This allows to add font-lock keyword to prog-mode directly, so every other
children mode will use them.

Signed-off-by: Julien Danjou <address@hidden>
---
 lisp/ChangeLog    |    5 +++++
 lisp/font-lock.el |   15 ++++++++++++---
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3ea0487..d405f47 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,10 @@
 2011-02-08  Julien Danjou  <address@hidden>
 
+       * font-lock.el (font-lock-assq-mode): New function: execute assq
+       for a mode and its parents.
+       (font-lock-value-in-major-mode): Use font-lock-assq-mode.
+       (font-lock-set-defaults): Use font-lock-assq-mode.
+
        * emacs-lisp/derived.el (derived-mode-parents): New function.
 
 2011-02-07  Jay Belanger  <address@hidden>
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index b7b617f..9996424 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1732,11 +1732,18 @@ If SYNTACTIC-KEYWORDS is non-nil, it means these 
keywords are used for
                                 (funcall keywords)
                               (eval keywords)))))
 
+(defun font-lock-assq-mode (mode alist)
+  "Call `assq' with MODE and its parents on ALIST."
+  (loop for m in (derived-mode-parents mode)
+        for v = (assq m alist)
+        if v return v))
+
 (defun font-lock-value-in-major-mode (alist)
   "Return value in ALIST for `major-mode', or ALIST if it is not an alist.
 Structure is ((MAJOR-MODE . VALUE) ...) where MAJOR-MODE may be t."
   (if (consp alist)
-      (cdr (or (assq major-mode alist) (assq t alist)))
+      (cdr (or (font-lock-assq-mode major-mode alist)
+               (assq t alist)))
     alist))
 
 (defun font-lock-choose-keywords (keywords level)
@@ -1789,9 +1796,11 @@ Sets various variables using `font-lock-defaults' and
           (keywords
            (font-lock-choose-keywords (nth 0 defaults)
                                       (font-lock-value-in-major-mode 
font-lock-maximum-decoration)))
-          (local (cdr (assq major-mode font-lock-keywords-alist)))
+          (local (cdr (font-lock-assq-mode
+                        major-mode font-lock-keywords-alist)))
           (removed-keywords
-           (cdr-safe (assq major-mode font-lock-removed-keywords-alist))))
+           (cdr-safe (font-lock-assq-mode
+                       major-mode font-lock-removed-keywords-alist))))
       (set (make-local-variable 'font-lock-defaults) defaults)
       ;; Syntactic fontification?
       (if (nth 1 defaults)
-- 
1.7.2.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]