From: Eli Zaretskii Date: Thu, 5 Dec 2019 17:58:02 +0000 (+0200) Subject: Another fix for :extend when :inherit is used X-Git-Tag: emacs-27.0.90~429 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5ee43ba0dfd96e5d39da556260346bd3c8ff99c1;p=emacs.git Another fix for :extend when :inherit is used * src/xfaces.c (face_inherited_attr): Support also values of :inherit which are lists. (Bug#37774) --- diff --git a/src/xfaces.c b/src/xfaces.c index 440cf4f1917..6db4dcd226f 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -2163,11 +2163,31 @@ face_inherited_attr (struct window *w, struct frame *f, && !UNSPECIFIEDP (inherited_attrs[LFACE_INHERIT_INDEX])) { Lisp_Object parent_face = inherited_attrs[LFACE_INHERIT_INDEX]; - bool ok = get_lface_attributes (w, f, parent_face, inherited_attrs, - false, named_merge_points); - if (!ok) - break; - attr_val = inherited_attrs[attr_idx]; + bool ok; + + if (CONSP (parent_face)) + { + Lisp_Object tail; + for (tail = parent_face; !NILP (tail); tail = XCDR (tail)) + { + ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs, + false, named_merge_points); + if (!ok) + break; + attr_val = face_inherited_attr (w, f, inherited_attrs, attr_idx, + named_merge_points); + if (!UNSPECIFIEDP (attr_val)) + break; + } + } + else + { + ok = get_lface_attributes (w, f, parent_face, inherited_attrs, + false, named_merge_points); + if (!ok) + break; + attr_val = inherited_attrs[attr_idx]; + } } return attr_val; }