4

たとえばfont-lock-comment-faceBlueforcsharp-modeと forc++-modeを設定しようとしてRedいますが、これは可能ですか?

現在、次を使用しています:

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

ただし、これはモードだけでなくグローバルに値を設定します。

Windows 8 の LEG570 で 2014-10-24 の GNU Emacs 24.4.1 (i686-pc-mingw32) を使用してバージョンを追加するのを忘れました

4

1 に答える 1

1

わお!ありがとう、それは不可能だと思っていましたが、これを見つけました: 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 default 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 設定をロードする必要があります。(remove-hook ...これを試すことを忘れないでください。

于 2015-01-05T18:00:42.037 に答える