Emacs:为特定窗口设置背景颜色

是否可以设置特定emacs窗口的背景颜色?

我正在使用“专用窗口”功能将emacs缓冲区固定到一个帧。 不过,我也希望这个窗口可以被识别为专用窗口。

目前,我正在使用buffer-face-mode来设置具有稍暗背景色的缓冲区特定默认字体。 但是,这种格式也适用于查看相同缓冲区的窗口,这些窗口并不专用于缓冲区。 能够以每个窗口为基础设置字体将消除该问题。


做一个特定的窗口不是Emacs现在支持的功能。 OTOH你可以做一个特定的框架,所以如果你的窗口是在一个窗口内的窗口(通常是专用窗口的情况下),你可以肯定地设置背景颜色框架参数(并且应该能够请直接从display-buffer-alistspecial-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)))
    

    但我建议您使用自定义设置所有这些选项的值。


    在Emacs 25.1.1中为我工作的方法是使用face-remapping-alist变量。 初始化缓冲区时,将default面部的:background属性修改为所需的颜色。 例如,我将我的Treemacs缓冲区的背景颜色设置为与其他所有内容不同,通过在我的.emacs文件中添加如下内容:

    (defun treemacs-mode-handler()
      (set (make-local-variable 'face-remapping-alist)
           '((default :background "#303030"))))
    
    (add-hook 'treemacs-mode-hook 'treemacs-mode-handler)
    
    链接地址: http://www.djcxy.com/p/63865.html

    上一篇: Emacs: Set background color for specific window

    下一篇: How to get Emacs, nrepl.el and Leiningen to play along?