Mercurial > emacs
diff lisp/hi-lock.el @ 103056:b6361d016a5a
* hi-lock.el (hi-lock--inhibit-font-lock-hook): New var.
(hi-lock-set-pattern, hi-lock-font-lock-hook): Use it (Bug#3068).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 23 Apr 2009 01:34:54 +0000 |
parents | a9dc0e7c3f2b |
children | b78ceb253d15 |
line wrap: on
line diff
--- a/lisp/hi-lock.el Thu Apr 23 01:34:15 2009 +0000 +++ b/lisp/hi-lock.el Thu Apr 23 01:34:54 2009 +0000 @@ -564,9 +564,18 @@ 'face-name-history (cdr hi-lock-face-defaults)))) +(defvar hi-lock--inhibit-font-lock-hook nil + "Inhibit the action of `hi-lock-font-lock-hook'. +This is used by `hi-lock-set-pattern'.") + (defun hi-lock-set-pattern (regexp face) "Highlight REGEXP with face FACE." - (let ((pattern (list regexp (list 0 (list 'quote face) t)))) + (let ((pattern (list regexp (list 0 (list 'quote face) t))) + ;; The call to `font-lock-add-keywords' below might disable + ;; and re-enable font-lock mode. If so, we don't want + ;; `hi-lock-font-lock-hook' to run. This can be removed once + ;; Bug#635 is fixed. -- cyd + (hi-lock--inhibit-font-lock-hook t)) (unless (member pattern hi-lock-interactive-patterns) (font-lock-add-keywords nil (list pattern) t) (push pattern hi-lock-interactive-patterns) @@ -632,11 +641,12 @@ (defun hi-lock-font-lock-hook () "Add hi-lock patterns to font-lock's." - (if font-lock-mode - (progn - (font-lock-add-keywords nil hi-lock-file-patterns t) - (font-lock-add-keywords nil hi-lock-interactive-patterns t)) - (hi-lock-mode -1))) + (unless hi-lock--inhibit-font-lock-hook + (if font-lock-mode + (progn + (font-lock-add-keywords nil hi-lock-file-patterns t) + (font-lock-add-keywords nil hi-lock-interactive-patterns t)) + (hi-lock-mode -1)))) (defvar hi-lock-string-serialize-hash (make-hash-table :test 'equal)