Commit 619fc5c1 authored by Ivan Shmakov's avatar Ivan Shmakov
Browse files

Fix 'face property handling in facemenu-add-face.

* lisp/faces.el (face-list-p): Split from face-at-point.
(face-at-point): Use it.
* lisp/facemenu.el (facemenu-add-face): Likewise.

Fixes: debbugs:19912
parent 5917b790
2015-02-26 Ivan Shmakov <>
* faces.el (face-list-p): Split from face-at-point.
(face-at-point): Use it.
* facemenu.el (facemenu-add-face): Likewise. (Bug#19912)
2015-02-26 Oscar Fuentes <>
* vc/vc.el (vc-annotate-switches): New defcustom.
......@@ -732,7 +732,7 @@ effect. See `facemenu-remove-face-function'."
(cons face
(if (listp prev)
(if (face-list-p prev)
(list prev)))
;; Specify the selected frame
......@@ -273,6 +273,17 @@ If FRAME is omitted or nil, use the selected frame."
(not (internal-lisp-face-empty-p face frame)))
(defun face-list-p (face-or-list)
"True if FACE-OR-LIST is a list of faces.
Return nil if FACE-OR-LIST is a non-nil atom, or a cons cell whose car
is either 'foreground-color, 'background-color, or a keyword."
;; The logic of merge_face_ref (xfaces.c) is recreated here.
(and (listp face-or-list)
(not (memq (car face-or-list)
'(foreground-color background-color)))
(not (keywordp (car face-or-list)))))
;;; Setting face attributes from X resources.
......@@ -1922,11 +1933,7 @@ Return nil if there is no face."
(get-char-property (point) 'face))))
(cond ((facep faceprop)
(push faceprop faces))
((and (listp faceprop)
;; Don't treat an attribute spec as a list of faces.
(not (keywordp (car faceprop)))
(not (memq (car faceprop)
'(foreground-color background-color))))
((face-list-p faceprop)
(dolist (face faceprop)
(if (facep face)
(push face faces))))))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment