diff --git a/src/color-theme.lisp b/src/color-theme.lisp index f7e498a0c..f79c97181 100644 --- a/src/color-theme.lisp +++ b/src/color-theme.lisp @@ -1,5 +1,9 @@ (in-package :lem-core) +(defvar *after-load-theme-hook* '() + "For functions that should run after a theme is loaded, +for example, to maintain an attribute like CURSOR.") + (defvar *current-theme* nil) (defun current-theme () @@ -96,7 +100,8 @@ (redraw-display :force t) (setf (current-theme) name) (when save-theme - (setf (config :color-theme) (current-theme))))) + (setf (config :color-theme) (current-theme)))) + (run-hooks *after-load-theme-hook*)) (defun get-color-theme-color (color-theme key) (second (assoc key (color-theme-specs color-theme)))) diff --git a/src/internal-packages.lisp b/src/internal-packages.lisp index 9a460655f..a15c6975b 100644 --- a/src/internal-packages.lisp +++ b/src/internal-packages.lisp @@ -622,6 +622,7 @@ (:export :color-theme-names :define-color-theme + :*after-load-theme-hook* :load-theme :current-theme :find-color-theme