Emacs:设置特定窗口的背景颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Emacs:设置特定窗口的背景颜色相关的知识,希望对你有一定的参考价值。
是否可以设置特定emacs窗口的背景颜色?
我正在使用“专用窗口”功能将emacs缓冲区固定到帧。但是,我也希望该窗口可以被识别为专用窗口。
目前我正在使用buffer-face-mode
设置缓冲区特定的默认字体,背景颜色稍深。但是,此格式也适用于查看相同缓冲区的窗口,这些窗口不专用于缓冲区。能够在每个窗口的基础上设置字体将消除该问题。
为一个特定窗口执行此操作不是Emacs现在支持的功能。 OTOH你可以为特定的框架做到这一点,所以如果你的窗口在一个带有单个窗口的框架内(通常是专用窗口的情况),你绝对可以设置背景颜色框架参数(并且应该能够直接从display-buffer-alist
或special-display-regexps
设置它。
你想要的是将缓冲区指定为“特殊显示”。这就是你想要的。
您可以自定义其中一个或两个选项(变量):
special-display-regexps
special-display-buffer-names
这是简单的方法。 Emacs喜欢在24.3版本之后将这些选项视为过时,并建议您使用非常复杂的选项display-buffer-alist
。
这就是我所做的,让所有缓冲区的名称以*
开头和结尾显示在它们自己的专用框架中:
(setq special-display-regexps '("[ ]?[*][^*]+[*]"))
要使特殊显示帧具有不同的属性(即帧参数),例如不同的颜色背景,请自定义选项special-display-frame-alist
。
这基本上是我使用的定义:
(setq special-display-alist
'((font . "-*-Lucida Console-normal-r-*-*-14-*-*-*-c-*-iso8859-1")
(width . 80)
(height . 14)
(mouse-color . "Yellow")
(cursor-color . "Yellow")
(menu-bar-lines . 1)
(foreground-color . "Black")
(background-color . "LightSteelBlue")
(top . 0)
(left . 0)
(unsplittable . t)
(user-position . t)
(vertical-scroll-bars . right)))
但我建议您使用Customize设置所有此类选项的值。
在Emacs 25.1.1中为我工作的方法是使用face-remapping-alist
变量。初始化缓冲区时,将:background
面的default
属性修改为所需的颜色。例如,我通过在我的.emacs
文件中添加类似这样的东西,使我的Treemacs缓冲区的背景颜色与其他所有颜色不同:
(defun treemacs-mode-handler()
(set (make-local-variable 'face-remapping-alist)
'((default :background "#303030"))))
(add-hook 'treemacs-mode-hook 'treemacs-mode-handler)
以上是关于Emacs:设置特定窗口的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章