                (when (or (eq theme 'user)
                          (custom-theme-enabled-p theme))
                  (apply #'custom-theme-set-faces 'user
-                        (cl-loop for (face . spec) in (list ,@specs)
-                                 if (keywordp (car spec))
-                                 collect `(,face ((t ,spec)))
-                                 else collect `(,face ,spec)))))))
+                        (mapcan #'doom--custom-theme-set-face
+                                specs))))))
      (funcall fn)
      (add-hook 'doom-load-theme-hook fn)))
 
 ;;;###autoload
-(defmacro custom-set-faces! (&rest specs)
-  "Apply a list of face specs as user customizations.
+(defun custom-set-faces! (&rest specs)
+  "Apply a list of face SPECS as user customizations.
 
 SPECS is a list of face specs.
 

   '(org-tag :background \"#4499FF\")
   '(org-ellipsis :inherit org-tag)
   '(which-key-docstring-face :inherit font-lock-comment-face))"
  `(custom-theme-set-faces! 'user ,@specs))

;;;###autoload
(defun doom/reload-theme ()

   '(org-tag :background \"#4499FF\")
   '(org-ellipsis :inherit org-tag)
   '(which-key-docstring-face :inherit font-lock-comment-face))"
  `(let* ((themes (doom-enlist (or theme 'user)))
          (fn (gensym (format "doom--customize-%s-h-" (mapconcat #'symbol-name themes "-")))))
     (fset fn
           (lambda ()
