我有一个函数将Emacs的颜色主题设置为我自己定义的主题。在这个函数中我做:
(set-face-attribute 'default cur-frame :foreground fg-color :background bg-color)
然后我为default-frame-alist
,initial-frame-alist
和special-display-frame-alist
设置背景颜色,前景色和光标颜色。
所有这些在我的Mac上运行良好。但是当我在Linux上使用它时,对于已经打开的所有帧看起来都很好,但是对于新创建的帧,它看起来像这样:
如果使用set-background-color
/ set-foreground-color
函数而不是(set-face-attribute 'default ...
),我对新帧没有此问题。但如果我这样做,我必须手动重置已经打开的每一帧的颜色。
我在Mac和Ubuntu上都使用Emacs 23.3版。
为了澄清,这是我使用的主题文件:
答案 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-color
或default-frame-alist
只有在我调整窗口大小之后才会有效,之后Gtk主题背景会照亮"试。
我还没有弄清楚如何让emacs总是在Gtk主题背景上画画,但至少我找到了一种如何改变Gtk主题背景颜色的方法,仅适用于Emacs:{{3} }
因此,当您切换主题时,这并不能完全解决更改背景颜色的问题,但至少可以摆脱打开新帧时遇到的黑白对比。
1)至少在我的机器上:)