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

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

[elpa] externals/ef-themes 2c490830ea 249/281: Implement ef-themes-with-


From: ELPA Syncer
Subject: [elpa] externals/ef-themes 2c490830ea 249/281: Implement ef-themes-with-colors macro
Date: Tue, 16 Aug 2022 16:58:38 -0400 (EDT)

branch: externals/ef-themes
commit 2c490830ea9b8900cb8e330cba173c3780affa85
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Implement ef-themes-with-colors macro
---
 ef-themes.el | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/ef-themes.el b/ef-themes.el
index 3b1dd81ca2..869a493ec3 100644
--- a/ef-themes.el
+++ b/ef-themes.el
@@ -944,5 +944,27 @@ Those are stored in `ef-themes-faces' and
     (unless (equal dir (expand-file-name "themes/" data-directory))
       (add-to-list 'custom-theme-load-path dir))))
 
+;;; Use theme colors
+
+(defmacro ef-themes-with-colors (&rest body)
+  "Evaluate BODY with colors from current palette bound."
+  (declare (indent 0))
+  (let* ((sym (gensym))
+         (palette (intern
+                   (format "%s-palette"
+                           (car (ef-themes--list-enabled-themes)))))
+         (colors (mapcar #'car (symbol-value palette))))
+    `(let* ((c '((class color) (min-colors 256)))
+            (,sym ,palette)
+            ,@(mapcar (lambda (color)
+                        (list color
+                              `(let* ((value (car (alist-get ',color ,sym))))
+                                 (if (stringp value)
+                                     value
+                                   (car (alist-get value ,sym))))))
+                      colors))
+       (ignore c ,@colors)            ; Silence unused variable warnings
+       ,@body)))
+
 (provide 'ef-themes)
 ;;; ef-themes.el ends here



reply via email to

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