更改Emacs';背景色

更改Emacs';背景色,emacs,customization,emacs-faces,Emacs,Customization,Emacs Faces,我有一个函数,可以将Emacs的颜色主题设置为我自己定义的主题。在该功能中,我执行以下操作: (set-face-attribute 'default cur-frame :foreground fg-color :background bg-color) 然后,我为默认帧列表、初始帧列表和特殊显示帧列表设置背景色、前景色和光标颜色 所有这些都可以在我的Mac上正常工作。但是,当我在Linux上使用它时,对于所有已经打开的帧来说,它看起来都很好,但是在新创建的帧上,它看起来是这样的: 如果使

我有一个函数,可以将Emacs的颜色主题设置为我自己定义的主题。在该功能中,我执行以下操作:

(set-face-attribute 'default cur-frame :foreground fg-color :background bg-color)
然后,我为
默认帧列表
初始帧列表
特殊显示帧列表
设置背景色、前景色和光标颜色

所有这些都可以在我的Mac上正常工作。但是,当我在Linux上使用它时,对于所有已经打开的帧来说,它看起来都很好,但是在新创建的帧上,它看起来是这样的:

如果使用
设置背景色
/
设置前景色
功能而不是(
设置面属性“默认…”
),则新帧不会出现此问题。但是如果我这样做,我必须手动重置每个已经打开的帧的颜色

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

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


类似的内容应该可以帮助您维护每个操作系统的设置。

设置面部属性
顾名思义,设置面部属性(即字体相关属性),而不是框架属性。使用

(添加到列表“默认帧列表”(背景色为“浅灰色”)


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

似乎最好使用

(custom-set-faces
  '(default ... )
  '(region ... )
  ....
)
设置面样式,这样就不会有问题。

Emacs在更新的Emacs版本中使用1(或不绘制)Gtk3.0主题背景。使用例如
set background color
default frame alist
更改背景仅在我调整窗口大小之前有效,之后Gtk主题背景再次“闪耀”

我还没有弄清楚如何让emacs始终在Gtk主题背景上绘制,但至少我找到了一种方法,可以更改Gtk主题背景颜色,仅适用于emacs:

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


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

a
C-l
正确地绘制颜色吗?@vpit3833没有。它向下滚动窗口,但没有任何变化。你为什么不使用颜色主题模式呢?@BozhidarBatsov我尝试了所有的主题,我讨厌它们。我所需要的只是几个简单明了的主题,我可以在不同的场合来回切换。所以我决定自己动手。直到最近我才在Linux平台上意识到这个问题,因为我大部分时间都在Mac上工作。还有一些与颜色主题兼容的外部主题,比如-(还有许多其他主题)。emacs 24将有一个内置的主题功能实际上,我已经有了,如果你有兴趣尝试一下,这是我的emacs配置报告,它在名为my-color.el的文件中。问题是,如果我为“默认”使用“设置面属性”,即使我设置了默认帧列表,新帧也会被弄乱。如果没有它,它们会很好,但我必须手动设置每隔一个打开的帧一个接一个。虽然通常不会有那么多的帧,但我仍然希望用一个命令进行更改。这似乎可以正常工作,直到我重新调整窗口大小,之后颜色再次被破坏(emacs 24.4.1)。
(custom-set-faces
  '(default ... )
  '(region ... )
  ....
)