2019-07-23 14:31:00 +02:00
|
|
|
;;; ../work/conf/doom-emacs/core/autoload/themes.el -*- lexical-binding: t; -*-
|
|
|
|
|
2019-07-25 12:21:26 +02:00
|
|
|
(defun doom--custom-theme-set-face (spec)
|
|
|
|
(cond ((listp (car spec))
|
|
|
|
(cl-loop for face in (car spec)
|
2019-07-28 14:09:31 +02:00
|
|
|
collect
|
|
|
|
(doom--custom-theme-set-face `(,face ,(cdr spec)))))
|
|
|
|
((keywordp (cadr spec))
|
2019-07-25 12:21:26 +02:00
|
|
|
`((,(car spec) ((t ,(cdr spec))))))
|
|
|
|
(`((,(car spec) ,(cdr spec))))))
|
|
|
|
|
2019-07-23 14:31:00 +02:00
|
|
|
;;;###autoload
|
2019-07-25 12:21:26 +02:00
|
|
|
(defun custom-theme-set-faces! (theme &rest specs)
|
|
|
|
"Apply a list of face SPECS as user customizations for THEME.
|
2019-07-23 14:31:00 +02:00
|
|
|
|
|
|
|
THEME can be a single symbol or list thereof. If nil, apply these settings to
|
2019-07-28 14:10:25 +02:00
|
|
|
all themes. It will apply to all themes once they are loaded."
|
2019-07-28 14:09:31 +02:00
|
|
|
(let* ((themes (doom-enlist (or theme 'user)))
|
|
|
|
(fn (gensym (format "doom--customize-%s-h-" (mapconcat #'symbol-name themes "-")))))
|
|
|
|
(fset fn
|
|
|
|
(lambda ()
|
|
|
|
(dolist (theme themes)
|
|
|
|
(when (or (eq theme 'user)
|
|
|
|
(custom-theme-enabled-p theme))
|
|
|
|
(apply #'custom-theme-set-faces 'user
|
|
|
|
(mapcan #'doom--custom-theme-set-face
|
|
|
|
specs))))))
|
|
|
|
(funcall fn)
|
|
|
|
(add-hook 'doom-load-theme-hook fn)))
|
2019-07-23 14:31:00 +02:00
|
|
|
|
|
|
|
;;;###autoload
|
2019-07-25 12:21:26 +02:00
|
|
|
(defun custom-set-faces! (&rest specs)
|
|
|
|
"Apply a list of face SPECS as user customizations.
|
2019-07-23 14:31:00 +02:00
|
|
|
|
|
|
|
This is a drop-in replacement for `custom-set-face' that allows for a simplified
|
2019-07-28 14:10:25 +02:00
|
|
|
face format."
|
2019-07-25 12:21:26 +02:00
|
|
|
(apply #'custom-theme-set-faces! 'user specs))
|
2019-07-23 14:31:00 +02:00
|
|
|
|
2019-07-28 14:16:33 +02:00
|
|
|
(defvar doom--prefer-theme-elc)
|
2019-07-23 14:31:00 +02:00
|
|
|
;;;###autoload
|
|
|
|
(defun doom/reload-theme ()
|
|
|
|
"Reload the current color theme."
|
|
|
|
(interactive)
|
|
|
|
(let ((theme (or (car-safe custom-enabled-themes) doom-theme)))
|
|
|
|
(when theme
|
|
|
|
(mapc #'disable-theme custom-enabled-themes))
|
|
|
|
(when (and doom-theme (not (memq doom-theme custom-enabled-themes)))
|
|
|
|
(let (doom--prefer-theme-elc)
|
|
|
|
(load-theme doom-theme t)))
|
|
|
|
(doom-init-fonts-h)))
|