将font-lock-face设置为不同主模式的不同值

时间:2015-01-05 17:07:46

标签: emacs config mode font-lock

我正在尝试为font-lock-comment-face设置Bluecsharp-mode,而c++-modeRed是否可以这样做?

现在我正在使用:

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

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

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

1 个答案:

答案 0 :(得分:2)

哇!谢谢,我认为这是不可能的,但后来我发现了这个: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)
        ;; ...

感谢相关的这个问题:Set Emacs defaut font face per-buffer/mode

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-mode之后加载csharp-mode设置。别忘了(remove-hook ...来试试这个。