在加载之前检查主题是否可用

时间:2015-07-25 12:54:48

标签: emacs elisp emacs-prelude

我正在使用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 个答案:

答案 0 :(得分: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"