(defun mapping2css (mapping) (let* ((key (symbol-name (car mapping))) (value (cadr mapping)) (color (pcase value ((pred stringp) value) ('unspecified "none") ((pred symbolp) (concat "var(--" (symbol-name value) ")"))))) (concat "--" key ": " color ";"))) (with-current-buffer (get-buffer-create "*modus2css*") (insert (string-join `(":root {" ,@(mapcar (lambda (line) (concat " " line)) (mapcar 'mapping2css (modus-themes-get-theme-palette 'modus-operandi t t))) "}" "" "@media (prefers-color-scheme: dark) {" " :root {" ,@(mapcar (lambda (line) (concat " " line)) (mapcar 'mapping2css (modus-themes-get-theme-palette 'modus-vivendi t t))) " }" "}") "\n")))