如何在c-mode中为#define和#include预处理器着色

时间:2013-08-02 22:20:13

标签: emacs elisp

我正在尝试更改预处理程序指令#define#include的默认字体,而不使用font-lock-preprocessor-face。 相反,我想使用font-lock-add-keywords方法和正则表达式。 我也希望这只适用于汇编和C模式。

2 个答案:

答案 0 :(得分:1)

如果你想要的话,你不应该采取这些措施 为font-lock-preprocessor-face重新定义c-mode。 原因是font-lock已经使用正则表达式了 已经慢了现在你要解析完全相同的来源 第二次使用完全相同的正则表达式。

我曾经使用一些自定义正则表达式来为C ++做出贡献,但是将其关闭了 一年之后,因为它让我放慢了速度。

您可以通过打开50k来源来检查它的速度有多慢 并且多次使用 C-v 。 现在再试一次find-file-literally - 这很好。

请改为:

(make-face 'c-preprocessor-face)
(set-face-background 'c-preprocessor-face "blue")
(set-face-foreground 'c-preprocessor-face "yellow")
(add-hook 'asm-mode-hook
          (lambda ()
            (set (make-local-variable 
                  'font-lock-comment-face)
                 'c-preprocessor-face)))
(add-hook 'c-mode-hook
      (lambda()
            (set (make-local-variable 
                  'c-preprocessor-face-name)
                 'c-preprocessor-face)))

答案 1 :(得分:0)

您是否看过我之前的问题commentanswer,这与当前主题基本相同?

face font in c-mode when adding new keyword