* lisp/faces.el (faces--attribute-at-point): Fix an issue

Previous code would signal an error when the face at point was
a manually built list of attributes such as '(:foregroud "white").

* test/automated/faces-tests.el (faces--test-color-at-point): Add a test
This commit is contained in:
Artur Malabarba 2015-11-15 18:42:20 +00:00
parent 8121757b3a
commit 4f19767dfa
2 changed files with 10 additions and 1 deletions

View file

@ -1971,7 +1971,11 @@ unnamed faces (e.g, `foreground-color')."
(get-char-property (point) 'font-lock-face))
(get-char-property (point) 'face)))
(found nil))
(dolist (face (if (listp faces) faces (list faces)))
;; The attribute might be a face, a list of faces, or a list of
;; attributes that make a face. Normalize it to a list of faces.
(dolist (face (if (and (listp faces) (facep (car faces)))
faces
(list faces)))
(cond (found)
((and face (symbolp face))
(let ((value (face-attribute-specified-or

View file

@ -37,6 +37,11 @@
(goto-char (point-min))
(should (equal (background-color-at-point) "black"))
(should (equal (foreground-color-at-point) "black")))
(with-temp-buffer
(insert (propertize "STRING" 'face '(:foreground "black" :background "black")))
(goto-char (point-min))
(should (equal (background-color-at-point) "black"))
(should (equal (foreground-color-at-point) "black")))
(with-temp-buffer
(emacs-lisp-mode)
(setq-local font-lock-comment-face 'faces--test1)