【问题标题】:check if the theme is available before loading it在加载之前检查主题是否可用
【发布时间】:2015-07-25 12:54:47
【问题描述】:

我正在使用 emacsprelude 配置。 我更改了主题,它工作正常,我将其添加到 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))

但在这种情况下,我得到的是默认主题,而不是“我的主题”。

【问题讨论】:

    标签: emacs elisp emacs-prelude


    【解决方案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"

    【讨论】:

    • 它不工作。是不是因为我的主题在elpa目录下?
    • 是的。只需按照this answer 中的说明将该目录添加到custom-theme-load-path
    • 虽然我可以使用M-x load-theme 加载它但它不在我的加载路径中,但我有点惊讶?不过谢谢,我会试试的。
    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2012-05-18
    • 2015-08-14
    • 2020-04-26
    • 2015-07-11
    相关资源
    最近更新 更多