themes – Hacer una función para alternar temas

Pregunta:

¿Cómo podría hacer una función interactiva para alternar entre dos temas de color?

Por lo que he podido encontrar, no hay ninguna variable establecida para el tema de color que se está usando actualmente, de hecho, ¿se pueden cargar varios simultáneamente?

Además, para alternar, primero debe disable-theme para el tema cargado actualmente, para que los temas no entren en conflicto.

¿Cómo hacer eso sin saber qué tema está cargado actualmente?

Respuesta:

Lo hice pero cambio 3 temas (mi propio kosmos, leuven y predeterminado)

Puede consultar https://github.com/habamax/.emacs.d/blob/master/lisp/haba-appearance.el

extracto de él:

(defvar *haba-theme-dark* 'kosmos)
(defvar *haba-theme-light* 'leuven)
(defvar *haba-current-theme* *haba-theme-dark*)

;; disable other themes before loading new one
(defadvice load-theme (before theme-dont-propagate activate)
  "Disable theme before loading new one."
  (mapcar #'disable-theme custom-enabled-themes))


(defun haba/next-theme (theme)
  (if (eq theme 'default)
      (disable-theme *haba-current-theme*)
    (progn
      (load-theme theme t)))
  (setq *haba-current-theme* theme))

(defun haba/toggle-theme ()
  (interactive)
  (cond ((eq *haba-current-theme* *haba-theme-dark*) (haba/next-theme *haba-theme-light*))
        ((eq *haba-current-theme* *haba-theme-light*) (haba/next-theme 'default))
        ((eq *haba-current-theme* 'default) (haba/next-theme *haba-theme-dark*))))

Luego vincule alguna clave a haba / toggle-theme.

Utilizo emacs en 2 máquinas y entornos diferentes (día, tarde en la noche), por lo que existe la posibilidad de guardar / restaurar el tema actual al salir / cargar emacs. Lo cual es útil 🙂

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım