6

我有一个函数可以将 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 版。

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

我的颜色.el

4

4 回答 4

6

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

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

并且类似于更改与框架相关的属性。

于 2011-04-18T13:15:39.647 回答
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")))))

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

于 2011-04-18T00:10:10.047 回答
1

好像用起来比较好

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

style 来设置面,这样就不会有这个问题了。

于 2011-04-19T05:17:03.547 回答
0

Emacs 在最近的 Emacs 版本中使用1)(或不覆盖)Gtk3.0 主题背景。使用 eg 更改背景set-background-colordefault-frame-alist仅在我调整窗口大小之前有效,之后 Gtk 主题背景再次“闪耀”。

我还没有弄清楚如何让emacs始终在Gtk主题背景上绘画,但至少我找到了一种方法如何更改Gtk主题背景颜色,仅适用于Emacs:https ://superuser.com /questions/699501/emacs-showing-grey-background-where-there-are-no-characters/937749#937749

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

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

于 2015-07-08T09:44:26.857 回答