【问题标题】:emacs configuration load theme only partially loadsemacs 配置加载主题仅部分加载
【发布时间】:2014-06-14 17:14:01
【问题描述】:

作为我的 .emacs 文件的最后一行,我有:

(load-theme 'manoj-dark)

当我启动一个新的 emacs 窗口时,背景颜色(黑色)之类的更改会生效;但是,我的光标保持黑色(并且不可见)。为了解决这个问题,我最终还是输入了 M-xload-theme manoj-dark。为什么我的 emacs 配置中的行没有生效?

【问题讨论】:

  • 有两个可选参数,你尝试过第一个 - 即不确认吗? (load-theme 'manoj-dark t) 文档字符串说:在设置“自定义启用主题”时,通常通过自定义调用此函数。如果直接在您的 init 文件中使用,则应使用非零 NO-CONFIRM 参数调用它,或者在加载“custom-safe-themes”之后调用。
  • 感谢您的建议;不过没有骰子。
  • 您在某处是否有可能发生冲突的设置——例如,(set-cursor-color "white")?您可以对您的第三方库(set-cursor-color)和任何其他用户配置文件进行单词搜索。
  • 您可以寻找的另一件事是这样的,它可能会覆盖您的主题:(custom-set-faces '(cursor ((t (:background "white")))) . . .(set-face-attribute 'cursor . . .
  • 两种情况都没有结果。

标签: emacs themes elisp


【解决方案1】:

问题与使用 emacsclient(守护进程)有关。关键是使用'after-make-frame-functions 钩子。

(if (daemonp)
    (add-hook 'after-make-frame-functions
        (lambda (frame)
            (select-frame frame)
            (load-theme 'manoj-dark t)))
    (load-theme 'manoj-dark t))

另见https://stackoverflow.com/a/23668935/1542702

【讨论】:

    【解决方案2】:

    也许使用after-init-hook 会允许在初始化期间对插入符号颜色进行任何摆弄之后发生主题加载?

    我已经看到包初始化在这些事情上发生冲突的问题(在我的例子中是智能模式行和颜色主题),这对我有帮助。

    可能类似于以下内容(注意:未经测试):

    (add-hook 'after-init-hook
              (lambda ()
                (load-theme 'manoj-dark)))
    

    在最坏的情况下,您可以使用(run-with-timer ...)(run-with-idle-timer ...)(同样,未经测试)来安排主题加载在初始化结束后几秒钟发生,以模拟您的手动解决方法。不过,这会很笨拙。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2013-05-11
    • 2013-03-11
    • 1970-01-01
    • 2010-09-06
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多