Проверьте, доступна ли тема перед загрузкой
Я использую emacs
с prelude
конфигурации. Я изменил тему, и она отлично работает, и я добавил ее в preload directory
вот так:
;; preload color theme
(setq prelude-theme 'my-theme)
Я установил тему через prelude-require-packages
, но не в preload
папка (не уверен, что она будет доступна в ближайшее время). Есть ли способ программно проверить, доступна ли тема, чтобы заменить предыдущую строку чем-то более безопасным, например:
;; just to get the idea
(when (is-available 'my-theme)
(setq prelude-theme 'my-theme))
Изменить я пробовал:
;; preload color theme
(when (featurep 'my-theme)
(setq prelude-theme 'my-theme))
Но в этом случае я получаю тему по умолчанию, а не 'my-theme.
1 ответ
Решение
load-theme
функция использует locate-file
найти файлы темы. Этот подход основан на том коде:
(if (locate-file (concat (symbol-name 'my-theme) "-theme.el")
custom-theme-load-path '("" "c"))
(setq prelude-theme 'my-theme))
Вы можете заменить весь (concat ...)
построить со строкой имени файла темы, которая для этого примера будет "my-theme-theme.el"
,