在加载之前检查主题是否可用
check if the theme is available before loading it
我正在使用 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))
但在这种情况下,我得到的是默认主题,而不是“我的主题”。
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"
.
我正在使用 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))
但在这种情况下,我得到的是默认主题,而不是“我的主题”。
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"
.