是否可以设置特定emacs窗口的背景颜色?
我正在使用“专用窗口”功能将emacs缓冲区固定到框架上。但是,我还希望该窗口能够被识别为专用窗口。
目前,我正在使用buffer-face-mode
来设置具有稍微较暗背景颜色的缓冲区特定默认字体。但是,这种格式也适用于查看同一缓冲区但不专用于该缓冲区的窗口。能够按窗口设置字体将消除这个问题。
目前Emacs不支持仅为一个特定窗口设置背景颜色的功能。但是,您可以为特定框架执行此操作,因此如果您的窗口位于具有单个窗口的框架中(通常适用于专用窗口),则绝对可以设置background-color帧参数(并且应该能够直接从display-buffer-alist或special-display-regexps进行设置)。
face-remapping-alist
变量。当缓冲区被初始化时,修改default
面的:background
属性为您想要的颜色。例如,我通过将以下内容添加到我的.emacs
文件中,使我的Treemacs缓冲区的背景颜色与其他所有内容不同:(defun treemacs-mode-handler()
(set (make-local-variable 'face-remapping-alist)
'((default :background "#303030"))))
(add-hook 'treemacs-mode-hook 'treemacs-mode-handler)
face-remap-add-relative
来管理变量 face-remapping-alist
。[然而,我也喜欢直接管理 face-remapping-alist
而不使用 face-remap-add-relative
。但是,由于其他人将阅读这些帖子,因此通常习惯于除了任何所选的变体之外,始终尝试提及Emacs的操作方式。] - lawlist你想要的是将缓冲区指定为“special-display”。这正是你想要的。
你可以自定义以下一个或两个选项(变量):
special-display-regexps
special-display-buffer-names
这是简单的方法。自从24.3版本发布以来,Emacs 喜欢将这些选项视为过时,并建议你使用极其复杂的选项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)))
但我建议您使用自定义来设置所有这些选项的值。
C-x 2
或其他命令,那么可以将其设置为无法分割。 - Drew