从 .emacs 文件设置 Emacs 24 的颜色主题

32
我在我的.emacs文件中有以下代码:
(if (null window-system)
  (progn
    (require 'color-theme)
    (color-theme-initialize)
    (color-theme-simple-1)))

当我在控制台上打开Emacs时,我可以通过(message "Got here.")来验证progn块是否运行,并且我看到了一些闪烁的提示表明颜色主题已加载,但如果它被加载了,它会被其他东西覆盖。 如果加载后,我打开我的.emacs文件并使用C-x C-e提交上述块,则它可以正常工作。 我尝试过:

(add-hook 'after-init-hook
          (lambda ()
            (progn
              (require 'color-theme)
              (color-theme-initialize)
              (color-theme-simple-1))))
但是它的功能相同。 可能与我使用的 Emacs 24 有关,而此代码不在我的 .emacs 中,而是在 ~/Dropbox/.emacs 中,它从我的 .emacs 中加载。 另外注意:我已尝试过 M-x customize-themes,但其中没有一个在控制台上可以令人满意地工作。它们要么产生几乎无法阅读的浅色主题,要么大部分文本都是不可见的。

你检查过.emacs.d中的颜色设置了吗?也许是主题造成了不可读的颜色组合。 - Selman Ulug
3
这段代码看起来像是Emacs 23的color-theme.el中遗留下来的东西。 - pmr
2个回答

49

Emacs 24内置了主题功能,不需要使用(require 'color-theme)等语句。正如评论中Drew所指出的区别,颜色主题和自定义主题之间存在差异,新方向是朝着后者发展的。可以尝试使用M-x customize-themes查看。从 .emacs 文件中,您可以执行像(load-theme 'wombat t)这样的操作。

但是...

你可能还会遇到问题。导致这种情况的一个原因是更改了面部属性——也许在您的 .emacs 文件的 custom-set-faces 部分。Emacs 的交互式定制自动包含您设置时正在使用的任何主题的颜色信息(背景和前景),因此这肯定会对颜色主题造成麻烦。如果这就是问题的原因,您可以使用类似于以下内容来设置您关心的特定属性:

(set-face-attribute 'default nil :height 120)

这将改变字体大小而不改变颜色。


请查看我对 @selman 的评论。customize-themes 主题在控制台上运行效果不佳。 - JasonFruit
我尝试了一下从我的.emacs文件中删除custom-set-faces块会发生什么,结果是正常的——这使得color-themes和customize-themes按预期工作。我需要让custom-set-faces只在我使用X运行Emacs时才运行。谢谢! - JasonFruit
很好。顺便说一下,如果你正在寻找非标准的选项,我是solarized颜色主题的粉丝。(当然,目前看起来无法通过包管理器安装它...) - Mike
就我个人而言,我不认同“你可能不需要像(require 'color-theme)这样的东西”的说法。彩色主题在某些方面比自定义主题具有明显的优势(反之亦然)。[](http://www.emacswiki.org/emacs/ColorTheme)EmacsWiki页面讨论了它们之间的区别,包括利弊。 - Drew

6

Emacs 24拥有自己的主题系统。

M-x customize-themes

或者

(custom-set-variables
  ....
   '(custom-enabled-themes (quote (selected-theme)))
)

2
是的,但它没有一个好的和简单的适合控制台的主题。(如果我错了,请指教我。) - JasonFruit
事实上,据我记得,它们在控制台上显示出来的方式只有两种:浅灰色背景上的文本或浅灰色背景上没有文本。虽然当然我更喜欢前者而不是后者,但两者都不是我想要的。 - JasonFruit
2
我认为tsdh-dark适用于控制台和编辑模式。 - Selman Ulug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接