在GNU Emacs中,我看到我可以在不同的模式中为前景类型设置不同的面,例如:
(custom-set-faces
'(message-header-to ((t (:foreground "LightGoldenrod1" :weight bold)))))
如何按模式设置帧的背景颜色?这样,例如,组织模式背景将采用颜色主题定义的任何颜色,但消息模式背景将是黑色的?
像这样的东西,除了以下不起作用:
(custom-set-faces
'(message-mode-frame ((t (:background "black")))))
答案 0 :(得分:2)
这是一个快速示例,按框架进行 - 即它将影响帧中的每个缓冲区:
(add-hook 'post-command-hook 'change-my-background-color)
(add-hook 'change-major-mode-hook 'change-my-background-color)
(add-hook 'window-configuration-change-hook 'change-my-background-color)
(defun change-my-background-color ()
(cond
((eq major-mode 'org-mode)
(set-background-color "honeydew"))
((eq major-mode 'text-mode)
(set-background-color "blue"))
(t
(set-background-color "red"))))
并且,这是更改缓冲区颜色示例:
(defun buffer-background-red ()
(interactive)
(setq buffer-face-mode-face `(:background "red"))
(buffer-face-mode 1))
目前无法以窗口为基础进行此操作;但是,这里有一个链接,用于更改活动窗口的模式行颜色。
答案 1 :(得分:0)
"整个框架,即消息模式的整个背景"
这句话让我觉得作者在Emacs中混淆了 frame and window 。每个框架可以包含几个窗口。虽然* -mode可以引用each buffer,即窗口。 因此,如果您想为每个缓冲区设置背景颜色按模式(但不适用于帧),那么最好使用模式挂钩like here