【问题标题】:Emacs custom background color by modeEmacs 按模式自定义背景颜色
【发布时间】:2011-03-06 21:31:02
【问题描述】:

例如,我使用 emacs 编辑多种文件类型,并希望有一个简单的可视队列来区分 .c 文件和 .vhd 或 .py 文件。如何为该语言的主要模式添加自定义背景颜色?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    你可以通过钩子来做到这一点。您可以挂钩的其他事情是新的主要模式何时开始。将这样的内容放入您的 .emacs 文件中,每次您进入 Python 模式时,emacs 都会将您的背景颜色设置为紫色。

      (add-hook 'python-mode-hook
                (lambda ()
                  (set-background-color "purple")))
    

    在您切换回没有明确设置背景挂钩的模式的情况下,将背景颜色重置为默认值留给读者作为练习。

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

    【讨论】:

    • 谢谢,这正是我想要的。
    • 请注意,您不能更改每个缓冲区每个窗口的背景颜色,只能更改每个帧(请参阅下面 Trey Jackson 的回答)。跨度>
    【解决方案2】:

    对于后代,由于这个线程已有 4 年历史,现在可以在 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)))
    

    【讨论】:

      【解决方案3】:

      您不能逐个缓冲区设置背景颜色。请参阅 SU 问题How can I change the background colour of a single emacs buffer?

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

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 2021-09-18
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多