changeset 63024:ed96547a88b1

(font-lock-mode-major-mode): Compiler defvar. (font-lock-mode): Update `font-lock-mode-major-mode'. (font-lock-set-defaults): Compiler defvar. (font-lock-default-function): Take `font-lock-mode-major-mode' into account.
author Luc Teirlinck <teirllm@auburn.edu>
date Sat, 04 Jun 2005 22:18:53 +0000
parents cc9dd228e2e6
children 36a997bd89f7
files lisp/font-core.el
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/font-core.el	Sat Jun 04 22:13:57 2005 +0000
+++ b/lisp/font-core.el	Sat Jun 04 22:18:53 2005 +0000
@@ -88,6 +88,8 @@
 It will be passed one argument, which is the current value of
 `font-lock-mode'.")
 
+;; The mode for which font-lock was initialized, or nil if none.
+(defvar font-lock-mode-major-mode)
 (define-minor-mode font-lock-mode
   "Toggle Font Lock mode.
 With arg, turn Font Lock mode off if and only if arg is a non-positive
@@ -156,7 +158,9 @@
   ;; Arrange to unfontify this buffer if we change major mode later.
   (if font-lock-mode
       (add-hook 'change-major-mode-hook 'font-lock-change-mode nil t)
-    (remove-hook 'change-major-mode-hook 'font-lock-change-mode t)))
+    (remove-hook 'change-major-mode-hook 'font-lock-change-mode t))
+  (when font-lock-mode
+    (setq font-lock-mode-major-mode major-mode)))
 
 ;; Get rid of fontification for the old major mode.
 ;; We do this when changing major modes.
@@ -175,6 +179,7 @@
 				      '(font-lock-face)))
     (restore-buffer-modified-p modp)))
 
+(defvar font-lock-set-defaults)
 (defun font-lock-default-function (mode)
   ;; Turn on Font Lock mode.
   (when mode
@@ -201,9 +206,14 @@
   ;; Only do hard work if the mode has specified stuff in
   ;; `font-lock-defaults'.
   (when (or font-lock-defaults
-	    (and (boundp 'font-lock-keywords) font-lock-keywords)
+	    (if (boundp 'font-lock-keywords) font-lock-keywords)
 	    (with-no-warnings
-	     (cdr (assq major-mode font-lock-defaults-alist))))
+	      (cdr (assq major-mode font-lock-defaults-alist)))
+	    (and mode
+		 (boundp 'font-lock-set-defaults)
+		 font-lock-set-defaults
+		 font-lock-mode-major-mode
+		 (not (eq font-lock-mode-major-mode major-mode))))
     (font-lock-mode-internal mode)))
 
 (defun turn-on-font-lock ()