4

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

我正在使用“专用窗口”功能将 emacs 缓冲区固定到帧上。但是,我也希望该窗口能够被识别为专用窗口。

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

4

3 回答 3

4

为一个特定的窗口做这件事不是 Emacs 现在支持的功能。OTOH,您可以为特定框架执行此操作,因此,如果您的窗口位于具有单个窗口的框架内(专用窗口通常是这种情况),您绝对可以设置背景颜色框架参数(并且应该能够直接从display-buffer-alist或设置它special-display-regexps

于 2013-06-03T15:18:35.957 回答
0

您想要的是将缓冲区指定为“特殊显示”。这正是你想要的。

您可以自定义以下选项(变量)中的一个或两个:

  • 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)))

但我建议您使用自定义来设置所有此类选项的值。

于 2013-08-11T22:36:41.863 回答
0

在 Emacs 25.1.1 中对我有用的方法是使用face-remapping-alist变量。初始化缓冲区时,:background将人脸的属性修改为default你想要的颜色。例如,我通过在我的文件中添加类似这样的内容,使我的 Treemacs 缓冲区的背景颜色与其他所有内容不同.emacs

(defun treemacs-mode-handler()
  (set (make-local-variable 'face-remapping-alist)
       '((default :background "#303030"))))

(add-hook 'treemacs-mode-hook 'treemacs-mode-handler)
于 2018-03-02T22:40:15.320 回答