Как раскрасить @ (в символ) в Emacs? - PullRequest
3 голосов
/ 22 февраля 2011

Я могу раскрасить ключевые слова в emacs, используя следующий код lisp в .emacs:

(add-hook 'c-mode-common-hook
          (lambda () (font-lock-add-keywords nil
           '(("\\<\\(bla[a-zA-Z1-9_]*\\)" 1 font-lock-warning-face t)))))

Этот код окрашивает все ключевые слова, которые начинаются с "бла". Пример: blaTest123_test

Однако, когда я пытаюсь добавить @ (символ 'at') вместо "bla", это, похоже, не работает. Я не думаю, что @ - это специальный символ для регулярных выражений.

Знаете ли вы, как заставить emacs выделять ключевые слова, начинающиеся с символа @?

1 Ответ

3 голосов
/ 22 февраля 2011

Ваша проблема - \< в вашем регулярном выражении, которое

соответствует пустой строке, но только в начале слова. «\ <» соответствует началу буфера (или строки) только в том случае, если следует за символом, составляющим слово. </p>

и @ не является составной частью слова.

См .: M -: (info "(elisp) Regexp Backslash") RET

Этот неограниченный рисунок закрасит любой @:

(font-lock-add-keywords nil
  '(("@" 0 font-lock-warning-face t)))

И это будет делать что-то вроде того, что вы хотите, требуя либо BOL, либо какое-то пустое пространство сразу же.

(font-lock-add-keywords nil
  '(("\\(?:^\\|\\s-\\)\\(@[a-zA-Z1-9_]*\\)" 1 font-lock-warning-face t)))
...