summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/faces.el6
-rw-r--r--test/automated/faces-tests.el5
2 files changed, 10 insertions, 1 deletions
diff --git a/lisp/faces.el b/lisp/faces.el
index f96df057cbd..d612461239e 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -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
diff --git a/test/automated/faces-tests.el b/test/automated/faces-tests.el
index 007bc805120..ff9dfc53fbe 100644
--- a/test/automated/faces-tests.el
+++ b/test/automated/faces-tests.el
@@ -38,6 +38,11 @@
(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)
(setq-local font-lock-constant-face 'faces--test2)