Subject: bug#13297: closed (Re: bug#13297: hi-lock-unface-buffer fails on face lists)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 28 Jan 2013 20:04:02 +0000

Your bug report

#13297: hi-lock-unface-buffer fails on face lists

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
13297: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13297
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#13297: hi-lock-unface-buffer fails on face lists
From: Stefan Monnier <[email-masked]>
To: Jambunathan K <[email-masked]>
Cc: Jonas Bernoulli <[email-masked]>, [email-masked]
Date: Mon, 28 Jan 2013 15:03:13 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

> The problem is due to the mistaken assumption about the nature of face,
> as captured by the comment line below.

Oh, indeed, thank you.  I installed the patch below which should fix it,

        Stefan

=== modified file 'lisp/hi-lock.el'
--- lisp/hi-lock.el	2013-01-02 16:13:04 +0000
+++ lisp/hi-lock.el	2013-01-28 19:59:39 +0000
@@ -562,7 +562,8 @@
     (when keyword
       (let ((face (hi-lock-keyword->face keyword)))
         ;; Make `face' the next one to use by default.
-	(add-to-list 'hi-lock--unused-faces (face-name face)))
+        (when (symbolp face)          ;Don't add it if it's a list (bug#13297).
+          (add-to-list 'hi-lock--unused-faces (face-name face))))
       (font-lock-remove-keywords nil (list keyword))
       (setq hi-lock-interactive-patterns
             (delq keyword hi-lock-interactive-patterns))

Subject: hi-lock-unface-buffer fails on face lists
From: Jonas Bernoulli <[email-masked]>
To: Emacs Bugs <[email-masked]>
Date: Fri, 28 Dec 2012 21:21:20 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Before commit 111129 hi-lock-unface-buffer could handle face symbols as
well as face lists.  After this commit it fails on lists.

Third-party library highlight-symbol uses hi-lock-set-pattern passing it
a face list.  The above change breaks this usage which isn't disallowed
in hi-lock-set-pattern's doc-string.  As a result this library cannot
remove the highlights it added with the help of hi-lock.

  Jonas