首页 > 解决方案 > 如何设置flycheck-posframe的颜色

问题描述

我是 emacs 的新手,但现在遇到了一些问题,我无法设置 flycheck-posframe 的颜色,设置它的正确方法是什么。我试过写这个,但它不能工作。谢谢

    (setq  flycheck-posframe-warning-prefix ""
           flycheck-posframe-error-prefix ""
           flycheck-posframe-border-width 5
           flycheck-posframe-error-face '((t :inherit nil :foreground "red"))
           flycheck-posframe-warning-face `(:foreground-color ."orange")
           flycheck-posframe-info-face '((t (:foreground "blue")))
           flycheck-posframe-border-face  '(:foreground "#dc752f")))

标签: colorsemacs

解决方案


Emacs 中的面实际上与普通变量的存储方式不同,这意味着您不能使用setq.

修改人脸属性最简单的方法是通过Emacs 自定义界面。您可以通过运行命令M-x customize-face然后输入要更改的面部名称来执行此操作。您可以在此自定义缓冲区中轻松编辑面部属性。完成更改后,您必须选择Apply(如果您希望更改应用于当前 Emacs 会话)或Apply and Save(如果您希望更改也保留到未来的 Emacs 会话)以使更改发生。

这是使用自定义缓冲区进行修改的示例flycheck-posframe-error-faceemacs 自定义截屏示例

但是,如果由于某种原因需要使用 Emacs Lisp 修改人脸属性,则可以使用该set-face-attribute函数来完成。此函数采用人脸名称(作为符号)、帧(的值nil表示更改影响所有帧)以及交替的属性名称和值。请注意,这些属性更改只会影响当前的 Emacs 会话。您需要在每次启动 Emacs 会话时执行这些函数,以便将这些更改应用于该会话(例如,通过将以下命令添加到您的 init 文件中)。

以下内容应进行您尝试进行的修改:

(set-face-attribute 'flycheck-posframe-error-face
                    nil
                    :inherit nil
                    :foreground "red")

(set-face-attribute 'flycheck-posframe-warning-face
                    nil
                    :foreground "orange")

(set-face-attribute 'flycheck-posframe-info-face
                    nil
                    :foreground "blue")

(set-face-attribute 'flycheck-posframe-border-face
                    nil
                    :foreground "#dc752f")

推荐阅读