Я пытался заставить emacs раскрасить некоторые дополнительные ключевые слова в C. В частности, я добавил RESTRICT.Я сделал:
(add-hook 'c-mode-common-hook
(lambda ()
(font-lock-add-keywords nil
'(("\\<\\(RESTRICT\\)\\>" . font-lock-keyword-face))) ))
Однако, это (неудивительно) просто заставляет emacs окрашивать экземпляры "RESTRICT" с ключевым словом-лицом.
"restrict" (нижний регистр) уже является частьюЗнание Emacs C ключевых слов.Поэтому, если я объявляю:
int * restrict foo;
«int» окрашивается с помощью type-face, «restrict» окрашивается с ключевым словом face, а «foo» - с переменным name-face.Но с моим новым словом RESTRICT, если я объявлю:
int * RESTRICT bar;
"int" будет окрашен, как и раньше, а RESTRICT будет окрашен с ключевым словом face.Но «бар» не влияет на это.Без моего правила «RESTRICT» будет окрашено в переменную name-face, а «bar» будет неизменным, что является правильным.
В любом случае, вопрос заключается в следующем: как сделать цвет Emacs «полосой» во втором кодовом блоке с переменной name-face?Я хочу, чтобы emacs фактически рассматривал «RESTRICT» как ключевое слово в языке (чтобы имена переменных окрашивались), а не только как цветные экземпляры «RESTRICT» определенным образом.