如何更改单个 emacs 缓冲区的背景颜色?

Chr*_*s R 8 emacs themes colors

我想让连接到生产数据库的 SQL 交互式缓冲区非常非常明显,所以我的想法是将缓冲区的背景更改为深红色。

set-background-color但是不起作用;它将所有帧的颜色设置为指定的颜色。

如何仅更改单个缓冲区的背景?

小智 9

我为此创建了一个 emacs lisp 包:https : //github.com/vic/color-theme-buffer-local它使用 Emacs 的面部重新映射在本地安装主题面孔。


(require 'color-theme-buffer-local)
(add-hook 'java-mode-hook (lambda nil (color-theme-buffer-local 'color-theme-robin-hood (current-buffer)) ))


Tre*_*son 6

你不能。

背景颜色通常是特定于框架的。

您可以default使用将面部的背景颜色设置为特定于框架set-face-background,如下所示:

(set-face-background 'default "#CCCCCC" (window-frame (frame-selected-window))
Run Code Online (Sandbox Code Playgroud)

框架定制通常通过框架参数进行控制。现在,如果您仔细查看background-colorfor frame parameters,您将看到默认背景颜色取自default面部 - 这就是上述 elisp 具有效果的原因。

过去,似乎可以通过使用次要模式buffer-face-mode(在 23.1 中添加)来关闭缓冲区背景颜色- 但是,这只会更改缓冲区文本的背景,而不是整个背景。