diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-06-30 20:07:09 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-06-30 20:12:58 +0200 |
commit | 22b792e5cf49508ba99708152163663db1b23315 (patch) | |
tree | 0cb3bf7372fcd4f0c841e731d2748c5a4d1fbb1f | |
parent | 77017db7210da1d3572589038faaa77042655537 (diff) |
theme, vterm: ensure that new terminals use current theme
-rw-r--r-- | lisp/init-theme.el | 31 | ||||
-rw-r--r-- | lisp/init-vterm.el | 24 |
2 files changed, 39 insertions, 16 deletions
diff --git a/lisp/init-theme.el b/lisp/init-theme.el index 90cecb7..f733500 100644 --- a/lisp/init-theme.el +++ b/lisp/init-theme.el @@ -17,27 +17,28 @@ (load-theme theme) (call-interactively 'load-theme)))) +(defun mpolden/current-theme () + "Return current theme, which is either \"light\" or \"dark\"." + (cond + ((memq mpolden/theme-light custom-enabled-themes) "light") + ((memq mpolden/theme-dark custom-enabled-themes) "dark") + (t (error "Failed to detect light theme. Enabled themes: %s" + custom-enabled-themes)))) + (defun mpolden/toggle-theme () "Toggle between dark and light themes. The variables `mpolden/theme-light' and `mpolden/theme-dark' decides the themes to toggle between." (interactive) - (let ((is-light (memq mpolden/theme-light custom-enabled-themes)) - (is-dark (memq mpolden/theme-dark custom-enabled-themes))) + (let ((theme (mpolden/current-theme))) (progn - (cond - (is-light (mpolden/switch-theme mpolden/theme-dark)) - (is-dark (mpolden/switch-theme mpolden/theme-light)) - (t (error "Don't know how to toggle theme: %s" (car custom-enabled-themes)))) - (mpolden/vterm-send-theme (if is-light "dark" "light"))))) - -(defun mpolden/vterm-send-theme (theme) - "Set the theme in all Vterm buffers to THEME." - (mapcar (lambda (buf) - (with-current-buffer buf - (vterm-send-string (concat "export VTERM_THEME=" theme "\n")))) - (seq-filter (lambda (buf) (string-prefix-p "vterm: " (buffer-name buf))) - (buffer-list)))) + (mpolden/switch-theme (if (equal theme "light") + mpolden/theme-dark + mpolden/theme-light)) + (when (fboundp 'mpolden/vterm-change-theme) + (mpolden/vterm-change-theme theme)) + (when (fboundp 'mpolden/vterm-set-theme) + (mpolden/vterm-set-theme theme))))) (use-package doom-themes :ensure t diff --git a/lisp/init-vterm.el b/lisp/init-vterm.el index 84e6f26..8a7d63f 100644 --- a/lisp/init-vterm.el +++ b/lisp/init-vterm.el @@ -2,11 +2,33 @@ ;;; Commentary: ;;; Code: +(defun mpolden/vterm-change-theme (theme) + "Change the theme in all Vterm buffers to THEME." + (mapcar (lambda (buf) + (with-current-buffer buf + (vterm-send-string (concat "export VTERM_THEME=" theme "\n")))) + (seq-filter (lambda (buf) (string-prefix-p "vterm: " (buffer-name buf))) + (buffer-list)))) + +(defun mpolden/vterm-set-theme (theme) + "Set the default Vterm theme to THEME." + (let ((theme-var (concat "VTERM_THEME=" theme))) + (progn + (setq vterm-environment + (seq-filter (lambda (var) + (unless (string-prefix-p "VTERM_THEME=" var))) + vterm-environment)) + (add-to-list 'vterm-environment theme-var t)))) + (use-package vterm :ensure t :init ;; include current directory in buffer name - (setq vterm-buffer-name-string "vterm: %s")) + (setq vterm-buffer-name-string "vterm: %s") + :config + ;; set theme + (when (fboundp 'mpolden/current-theme) + (mpolden/vterm-set-theme (mpolden/current-theme)))) (provide 'init-vterm) |