Emacs根据模式自定义背景颜色

6

我使用emacs来编辑多种文件类型,希望能够通过一种简单的视觉方式来区分.c、.vhd或者.py等文件。如何为相关语言的major mode添加自定义背景颜色?

3个回答

8
您可以通过hooks来实现这一目标。您可以hook许多元素,其中包括当一个新的主模式开始时。将类似以下内容放入您的.emacs文件中,每次进入Python模式时,Emacs都会将您的背景色设置为紫色。
  (add-hook 'python-mode-hook
            (lambda ()
              (set-background-color "purple")))

在切换回没有明确设置背景颜色的模式时,将背景颜色重置为默认值,这需要读者自己操作。

您也可以使用 M-x set-background-color 手动设置背景颜色。


请注意,您无法更改每个缓冲区或每个窗口的背景颜色,只能更改每个框架的背景颜色(请参见下面 Trey Jackson 的回答)。 - Thomas

5

为了记录,由于这个主题已经四年了,在Emacs 24.4+中可以在缓冲区本地级别上更改面孔。只需定义一个面孔并使用 (face-remap-add-relative) 将想要替换的任何面孔与它交换。

定义一个 defface

(defface my-special-face '((t :background "aqua")))

然后在您选择的模式中添加一个钩子:

(add-hook 'python-mode-hook
          (lambda ()
            (face-remap-add-relative 'default 'my-special-face)))

4

您不能针对每个缓冲区设置背景颜色。请参阅SU问题如何更改单个emacs缓冲区的背景颜色?

那里的第一个答案显示了如何为单个Emacs框架更改背景,如果您每个文件(或每个模式)有一个框架,则可能适用于您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接