[Top][All Lists]
[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
Re: [PATCH 1/2] Add new function derived-mode-parents, Stefan Monnier, 2011/02/08