diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el index de258935e1..9173b66b7f 100644 --- a/lisp/hi-lock.el +++ b/lisp/hi-lock.el @@ -625,7 +645,12 @@ hi-lock-unface-buffer ;; calls font-lock-set-defaults). This is yet-another bug in ;; font-lock-add/remove-keywords, which we circumvent here by ;; testing `font-lock-fontified' (bug#19796). - (if font-lock-fontified (font-lock-remove-keywords nil (list keyword))) + (when font-lock-fontified + (font-lock-remove-keywords nil (list keyword)) + (dolist (k font-lock-keywords) + (when (and (consp k) (consp (car k)) (eq (caar k) 'closure) + (equal (car keyword) (cdr (assq 'regexp (cadr (car k)))))) + (font-lock-remove-keywords nil (list k))))) (setq hi-lock-interactive-patterns (delq keyword hi-lock-interactive-patterns)) (remove-overlays @@ -728,7 +753,13 @@ hi-lock-set-pattern (push pattern hi-lock-interactive-patterns) (if (and font-lock-mode (font-lock-specified-p major-mode)) (progn - (font-lock-add-keywords nil (list pattern) t) + (font-lock-add-keywords + nil (list (cons + (lambda (limit) + (let ((case-fold-search case-fold)) + (re-search-forward (car pattern) limit t))) + (cdr pattern))) + t) (font-lock-flush)) (let* ((range-min (- (point) (/ hi-lock-highlight-range 2))) (range-max (+ (point) (/ hi-lock-highlight-range 2)))