在Emacs中切换颜色主题(< v.24)

时间:2011-02-06 14:55:23

标签: emacs elisp

更新

请注意,此主题不适用于最新版本的Emacs(24+)。 Emacs现在附带了它自己强大的颜色主题系统(例如,查看评论here),不需要加载外部包color-theme


我的.emacs文件中有以下代码片段,其中我定义了一些别名,允许我使用简短的扩展命令在几个颜色主题之间方便地切换:

(require 'color-theme)            
(eval-after-load "color-theme"   
  '(progn                        
     (color-theme-initialize)    
     (color-theme-aalto-light))) 

;; Aliases to color-themes, e.g. 'M-x a' switches to color-theme-hober

(defalias 'a 'color-theme-hober)
(defalias 'b 'color-theme-aalto-light)

现在,当Emacs加载时,它会正确显示color-theme-aalto-light主题,当我M-x a更改为color-theme-hober时,它也可以正常运行。

问题是当我尝试将颜色主题再次更改回color-theme-aalto-light时。某些颜色面部保留在旧的颜色主题中,而其他颜色面部则更改为新的颜色主题。我试过不同的颜色主题组合没有运气(颜色面是总是完全更新,无论我切换的颜色主题)。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

这是'color-theme'包中的已知错误。如果该功能对您很重要,请考虑升级到trunk(将来的emacs-24.1),它原生支持更改主题(M-x customize-themes)。

答案 1 :(得分:2)

颜色主题基本上只是功能,它为某些面部分配新颜色。它们没有什么特别之处,特别是在切换颜色主题之前不会重置面部。如果一个颜色主题A为某个面设置颜色而另一个B没有设置颜色,则B将简单地接管A为该面定义的颜色。

这或多或少是设计上的,没有什么,你可以做,保存修改颜色主题以覆盖所有定义的面(这是相当繁琐,也是非常不可能的,因为任何elisp库都可以定义自己的面)。