2014-04-04 37 views
2

在Emacs 24.3.1如果我M-X load-theme并加载另一个主题,它往往会干扰我当前的主题,而不是取代它,给一个非常难看的结果颜色明智。加载一个不同的主题(主题冲突)后Emacs禁用主题

一个例子是在此处,solarized-lightwombat主题是矛盾的:

solarized-light and wombad conflict

我通过做旧主题的M-X disable-theme解决这个问题,有没有解决这个问题一个更清洁的方式?

+0

可能重复[Emacs:如何获得默认主题?](http://stackoverflow.com/questions/22127337/emacs-how-to-get-the-default-theme) –

+0

abo-abo that does似乎相关(谢谢!),但它不是重复的。这个问题也没有被接受的答案。看看你对这个问题的回答,虽然有相当的启发 - emacs色彩支持能力差是多么的令人惊讶,考虑到程序有多老,以及基本的颜色支持如何。 –

+0

简短的回答,你不能这样做。加载主题时,它会更改所有支持的面的属性,但不会重置面的属性。你可以做的是在加载任何主题之前记录所有标准面的属性,然后在切换到新主题之前使用它们恢复到默认主题。然而,许多软件包指定了自己的面孔,如果自定义主题支持该软件包,那些颜色将不会被恢复。颜色主题是一团糟。 –

回答

2

首先禁用活动主题肯定有帮助。

如果您添加到您的init.el:

(defun disable-all-themes() 
    "disable all active themes." 
    (dolist (i custom-enabled-themes) 
    (disable-theme i))) 

(defadvice load-theme (before disable-themes-first activate) 
    (disable-all-themes)) 

功能load-theme将首先禁用活动的主题,加载新的人之前。

+2

这个建议是一个坏主意。主题_supposed_可以在彼此之上应用。包可能依赖于此。定义一个完成相同事情的新命令会更好。 – Malabarba