我试图将例如font-lock-comment-face设置为蓝色用于csharp模式,而c -mode设置为Red是否可能?
现在我使用:
(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上
最佳答案 哇!谢谢,我认为这是不可能的,但后来我发现了这个:
http://www.emacswiki.org/emacs/FacesPerBuffer
只要看看wiki的例子,看起来就像你需要的那样:
(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 … after(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设置.别忘了(删除钩子……试试这个.