Emacs:为特定窗口设置背景色
是否可以设置特定emacs窗口的背景色 我正在使用“专用窗口”功能将emacs缓冲区固定到帧上。但是,我也希望该窗口能够被识别为专用窗口Emacs:为特定窗口设置背景色,emacs,elisp,highlight,emacs24,pinning,Emacs,Elisp,Highlight,Emacs24,Pinning,是否可以设置特定emacs窗口的背景色 我正在使用“专用窗口”功能将emacs缓冲区固定到帧上。但是,我也希望该窗口能够被识别为专用窗口 目前,我正在使用缓冲区面部模式设置缓冲区特定的默认字体,背景颜色略深。但是,此格式也适用于查看同一缓冲区的窗口,该缓冲区不是专用于该缓冲区的。能够在每个窗口的基础上设置字体将消除该问题 为一个特定窗口执行此操作不是Emacs目前支持的功能。o您可以为特定的帧执行此操作,因此,如果您的窗口位于具有单个窗口的帧内(对于专用窗口通常如此),则您可以明确地设置背景色帧
目前,我正在使用
缓冲区面部模式
设置缓冲区特定的默认字体,背景颜色略深。但是,此格式也适用于查看同一缓冲区的窗口,该缓冲区不是专用于该缓冲区的。能够在每个窗口的基础上设置字体将消除该问题 为一个特定窗口执行此操作不是Emacs目前支持的功能。o您可以为特定的帧执行此操作,因此,如果您的窗口位于具有单个窗口的帧内(对于专用窗口通常如此),则您可以明确地设置背景色帧参数(并且应该能够直接从显示缓冲区列表
或特殊显示正则表达式
设置它。您需要的是将缓冲区指定为“特殊显示”。这正是您想要的
您可以自定义其中一个或两个选项(变量):
特殊显示正则表达式
特殊显示缓冲区名称
*
开头和结尾的缓冲区都显示在它们自己的专用帧中:
(setq special-display-regexps '("[ ]?[*][^*]+[*]"))
要获得具有不同属性(即帧参数)的特殊显示帧,如不同颜色背景,请自定义选项特殊显示帧列表
这基本上就是我使用的定义:
(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
变量。当缓冲区初始化时,将default
face的: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)
谢谢,这很有帮助。但是我可以阻止该框架显示任何其他窗口吗?您还可以使其不可拆分(在手册中搜索
splittable
)。我的猜测是,您并不真正关心阻止它显示任何其他窗口,例如,使其不可丢弃。我的猜测是,您只是不希望它显示任何其他缓冲区,这也意味着新窗口不会在帧中弹出(例如,拆分)。声明它已经解决了这一问题“特别展示"---注意,这不是问题。如果你真的想阻止自己使用C-x 2
或任何东西,那么,是的,让它不可丢弃。如果你在同一帧或不同帧的多个窗口中显示此缓冲区,你会看到受影响的是缓冲区,而不一定是窗口。此外,Emacs manual建议使用内置函数face remap add relative
来管理变量face remap
。[然而,我也更喜欢直接管理面重映射列表
,而不使用面重映射添加相对的。但是,由于其他人将阅读这些线程,因此除了任何选择的变体之外,习惯上总是尝试提及Emacs的做事方式。]