如何重置颜色主题?


25

当我尝试不同的颜色主题时,如果在新主题中未定义特定元素,则似乎保留了旧主题值,这会导致某些冲突。这会在emacs 24和使用的早期版本中发生color-theme。有没有一种方法可以将介于两者之间的所有颜色重置为默认值,以使每个颜色主题看起来都符合预期?

Answers:


22

您确定使用的是颜色主题,而不是Emacs自定义主题吗? 颜色主题由library定义color-theme.el自定义主题可开始使用Emacs 24 -他们一样的颜色主题。

  1. 如果您使用的是颜色主题,那么答案很简单:只需启用名为的伪颜色主题[Reset]。这完全取消了主题:删除其强加的所有效果。

  2. 如果实际上您正在使用Emacs 自定义主题,那么答案就不是那么简单。您不能撤消自定义主题的应用。您可以做的是很有用的,是在启用每个自定义主题之后,再启用另一个自定义主题之前,使用禁用每个自定义主题。disable-theme

    这是“半自动”执行此操作的两种方法:

    • Advise load-theme,因此它首先禁用所有自定义主题,然后再加载(启用)另一个主题。这个建议在这个StackOverflow的答案Tungd在tungdao.com

      (defadvice load-theme (before theme-dont-propagate activate)
       (mapcar #'disable-theme custom-enabled-themes))
      
    • 在启用主题之前,定义并使用禁用当前主题的功能。这是Maris Orbidans提出的。

      (defun enab-theme (theme) 
       (if current-t43m3 (disable-theme current-t43m3))
       (setq current-t43m3 theme) 
       (load-theme theme t)) 
      

    有关更多信息,请参阅原始SO帖子,并在同一SO页面上查看问题和其他答案。(注意:该页面上可接受的答案不是撤消自定义主题的答案。)

  3. 请注意,即使#2中描述的解决方案也不是通用解决方案:它们不会撤消自定义主题的应用- 无法做到这一点。也就是说,禁用自定义主题不会恢复您在启用该主题之前可能已经进行的任何非主题 自定义(例如,脸部更改),并且该主题已将其覆盖。

换句话说,取消颜色主题是微不足道的。撤消自定义主题是不可能的。您可以为自定义主题做的最好的事情就是相对于其他自定义主题禁用它。

关于此问题以及在颜色和自定义主题之间进行切换(例如循环)的方式的最佳参考是Emacs Wiki页面“ 颜色和自定义主题”

请提前警告:在这方面,各地有关Emacs自定义主题的信息存在大量误导性信息。人们为Emacs在Emacs 24中添加自定义主题作为一项功能而感到非常兴奋,其中一些人立即跳入一个错误的结论,即自定义主题可以替代颜色主题。他们不是。每个都有一些优点。例如,无法撤消是自定义主题的主要缺点。

[ 此GNU Emacs错误报告是一项增强请求,用于纠正无法撤消自定义主题(从而恢复较早的自定义)的问题。


1
您还可以添加以下内容:如果使用类似的命令选择颜色主题color-theme-dark-laptop,则要恢复为先前的主题,则需要手动制作快照。例如,(fset 'color-theme-revert (color-theme-make-snapshot))您会color-theme-revert收到恢复命令。否则[Resert]按钮将不起作用。(要测试我是否正确,请color-theme-select在更改主题之前不要发出命令,因为这会使您丢失快照)
user4514 2015年

请注意,舵主题将在选择新主题时自动禁用其他主题。
ocodo

1
@EmacsFodder:如果您正在谈论自定义主题,那么仅禁用其他主题是不够的。启用任何自定义主题之前,您不一定必须返回到存在的初始状态。颜色主题不存在此问题-您可以拍摄初始状态的快照并返回至初始状态。请参阅引用的EmacsWiki页面和引用的错误报告。头盔或其他任何东西都没有神奇的银弹。这是因为自定义主题的设计方式存在缺陷。
2015年

@JSG:是的,为了能够返回到初始状态,在启用任何颜色主题之前,您应该创建它的快照(相当于伪颜色主题)。在引用的EmacsWiki页面和引用的Emacs错误报告中对此进行了解释。因此,是的,您可能需要提前考虑,但至少有可能回到该状态。自定义主题缺少此功能-禁用自定义主题不会使您回到初始状态。
德鲁

对于我来说,这是关于它们之间差异的宝贵信息,因为我以前从未接触过Emas,所以谢谢!仅仅为了提供更多和更新的信息,截止到2016年7月,Emacs 25.2.1似乎现在也可以将您自己的设置保存为主题-至少,Emacs在这里允许我这样做。另外,我必须明确指出(在customize-themesUI上)是否要同时启用多个主题。我猜这些可能是在我改变主意的情况下撤消应用主题的方法。而且我还猜测,使用Lisp,可以在启用任何功能之前保留自动备份。
查尔斯·罗伯托·卡纳托

-2

如果您从中选择了一个内置主题M-x customize-themes,只需注释掉启用您的自定义主题的行~/.emacs

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.