emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/engrave-faces e9a9b37 17/36: More face inheritance form


From: ELPA Syncer
Subject: [elpa] externals/engrave-faces e9a9b37 17/36: More face inheritance form edge cases
Date: Tue, 31 Aug 2021 01:57:26 -0400 (EDT)

branch: externals/engrave-faces
commit e9a9b374538285bcbc07bb0c147ca4476e2ef175
Author: TEC <tec@tecosaur.com>
Commit: TEC <tec@tecosaur.com>

    More face inheritance form edge cases
    
    I /think/ it should be all sorted now.
---
 engrave-faces.el | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/engrave-faces.el b/engrave-faces.el
index a6ba153..23b2562 100644
--- a/engrave-faces.el
+++ b/engrave-faces.el
@@ -36,8 +36,11 @@
 
 ;;; Code:
 
+(require 'map)
+
 ;;;###autoload
 (defvar engrave-faces--backends nil)
+
 ;;;###autoload
 (defmacro engrave-faces-define-backend (name extension face-transformer)
   `(progn (add-to-list 'engrave-faces--backends
@@ -131,14 +134,18 @@ output.")
 (defun engrave-faces-explicit-inheritance (faces)
   "Expand :inherit for each face in FACES.
 I.e. ([facea :inherit faceb] facec) results in (facea faceb facec)"
-  (apply #'append (mapcar
-                   (lambda (face)
-                     (cons face
-                           (let ((inherit (face-attribute face :inherit nil 
nil)))
-                             (when (and inherit (not (eq inherit 
'unspecified)))
-                               (engrave-faces-explicit-inheritance
-                                (if (listp inherit) inherit (list 
inherit)))))))
-                   faces)))
+  (delq nil
+        (mapcan
+         (lambda (face)
+           (if (listp face)
+               (let ((inherit (plist-get face :inherit)))
+                 (cons (map-delete face :inherit)
+                       (engrave-faces-explicit-inheritance inherit)))
+             (cons face
+                   (let ((inherit (face-attribute face :inherit nil nil)))
+                     (when (and inherit (not (eq inherit 'unspecified)))
+                       (engrave-faces-explicit-inheritance inherit))))))
+         (if (listp faces) faces (list faces)))))
 
 (defun engrave-faces-attribute-values (faces attribute)
   "Fetch all specified instances of ATTRIBUTE for FACES, ignoring inheritence.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]