From 4f19767dfa527955b94c9133e8ce03cf1c766750 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 15 Nov 2015 18:42:20 +0000 Subject: [PATCH] * 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 --- lisp/faces.el | 6 +++++- test/automated/faces-tests.el | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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 @@ -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) -- 2.39.5