将字体锁定设置为不同主要模式的不同值



例如,我正在尝试将font-lock-comment-face设置为Blue,以便csharp-modec++-mode Red这可能吗?

现在我正在使用:

(set-face-attribute 'font-lock-comment-face nil :foreground "#57a64a")
(set-face-attribute 'font-lock-keyword-face nil :foreground "#569cd6")

但这会全局设置值,而不仅仅是模式的值。

忘记添加版本im使用:GNU Emacs 24.4.1(i686-pc-mingw32)的2014-10-24在LEG570上在视窗 8 上

哇!谢谢,我以为这是不可能的,但后来我发现这个:http://www.emacswiki.org/emacs/FacesPerBuffer

看看维基上的例子,似乎正是你需要的:

 (make-face 'php-comment-face)
 (set-face-foreground 'php-comment-face "LightGrey")
 (add-hook 'php-mode-hook 
       (lambda ()
        ;; ...
        (set (make-local-variable 'font-lock-comment-face)
             'php-comment-face)
        ;; ...

感谢相关问题:为每个缓冲区/模式设置 Emacs defaut 字体

UPD

要赢得 CC 模式绑定,您应该将 (add-hook csharp-mode-hook ... 放在 (add-hook c-mode-hook ... 之后,如下所示:

(make-face 'c-comment-face)
(set-face-foreground 'c-comment-face "Red")
(add-hook 'c-mode-hook
       (lambda ()
        ;; ...
        (set (make-local-variable 'font-lock-comment-face)
             'c-comment-face)))

(make-face 'cs-comment-face)
(set-face-foreground 'cs-comment-face "Blue")
(add-hook 'csharp-mode-hook
       (lambda ()
        ;; ...
        (set (make-local-variable 'font-lock-comment-face)
             'cs-comment-face)))

如果您在单独的文件中有钩子代码,则应在 c 模式之后加载 csharp 模式设置。不要忘记(remove-hook ...尝试一下。

最新更新