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

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

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

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

我怎样才能更改单个缓冲区的背景?

答案1

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


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

答案2

你不能。

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

您可以使用以下方式将脸部的背景颜色设置default为特定于框架的颜色set-face-background,像这样:

(set-face-background 'default "#CCCCCC" (window-frame (frame-selected-window))

框架定制通常通过以下方式控制框架参数。现在,如果你仔细看看background-color用于框架参数,你会看到默认的背景颜色是从default面中取出来的——这就是为什么上面的 elisp 有效果的原因。

除此之外,似乎最接近缓冲区背景颜色的方法是使用次要模式buffer-face-mode(在 23.1 中添加) - 但是这只会改变文本缓冲区,而不是整个背景。

答案3

我没有尝试过,但是http://www.emacswiki.org/emacs/BufferBackgroundColor听起来像是一个可能的解决方案。

相关内容