更改Emacs的背景颜色

时间:2011-04-17 22:40:37

标签: emacs customization emacs-faces

我有一个函数将Emacs的颜色主题设置为我自己定义的主题。在这个函数中我做:

(set-face-attribute 'default cur-frame :foreground fg-color :background bg-color)

然后我为default-frame-alistinitial-frame-alistspecial-display-frame-alist设置背景颜色,前景色和光标颜色。

所有这些在我的Mac上运行良好。但是当我在Linux上使用它时,对于已经打开的所有帧看起来都很好,但是对于新创建的帧,它看起来像这样:

background color issue

如果使用set-background-color / set-foreground-color函数而不是(set-face-attribute 'default ...),我对新帧没有此问题。但如果我这样做,我必须手动重置已经打开的每一帧的颜色。

我在Mac和Ubuntu上都使用Emacs 23.3版。

为了澄清,这是我使用的主题文件:

my-color.el

4 个答案:

答案 0 :(得分:4)

顾名思义,

set-face-attribute设置面部的属性(即与字体相关的属性),而不是框架的属性。使用

(add-to-list 'default-frame-alist '(background-color . "lightgray"))

,类似于更改与帧相关的属性。

答案 1 :(得分:3)

(if (eq system-type 'darwin)
    ;; mac os x settings
  (if (eq system-type 'gnu/linux)
    (setq default-frame-alist '((background-color . "black")
                                (foreground-color . "gray")))))

这样的事情可以帮助你维护每个操作系统的设置。

答案 2 :(得分:1)

似乎最好使用

(custom-set-faces
  '(default ... )
  '(region ... )
  ....
)

设置面孔的样式,这样就不会有这个问题了。

答案 3 :(得分:0)

Emacs在更新的Emacs版本中使用 1)(或不会绘制)Gtk3.0主题背景。使用例如更改背景set-background-colordefault-frame-alist只有在我调整窗口大小之后才会有效,之后Gtk主题背景会照亮"试。

我还没有弄清楚如何让emacs总是在Gtk主题背景上画画,但至少我找到了一种如何改变Gtk主题背景颜色的方法,仅适用于Emacs:{{3} }

因此,当您切换主题时,这并不能完全解决更改背景颜色的问题,但至少可以摆脱打开新帧时遇到的黑白对比。

1)至少在我的机器上:)