Добавление подсветки синтаксиса для раздела комментариев в Emacs

417
Sean Allred

У меня есть следующее

(defun add-c-syntax-highlighting () (font-lock-add-keywords nil '( ("\\<\\(\\-+\\)" 1 font-lock-warning-face prepend) ("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)))) 

с

(add-hook 'c-mode-common-hook 'add-c-syntax-highlighting) 

Тестирование на этом простом буфере дает, казалось бы, противоречивые результаты:

//FIXME: //------------- 

только с FIXMEодобрения. Что я делаю неправильно?

1

1 ответ на вопрос

2
Stefan

Мой хрустальный шар говорит мне, что ты делаешь неправильно, копируй и вставляй код, который ты не понимаешь. Похоже, сегодня это саркастично, извините, обещаю, что скоро получу новый.

Что касается вашей проблемы, это \\<в вашем регулярном выражении, который является специальным конструктором, который соответствует началу слова, так что он никогда не может совпадать перед словом, так -как слова могут начинаться только с правильных букв или цифр.

Я подумал наверняка, что это было начало комментария в таблице синтаксиса. Я попробую это как можно скорее, спасибо Sean Allred 10 лет назад 0
Еще раз спасибо. Я попытался найти ссылку на синтаксис регулярного выражения здесь; поскольку `\\ <` не является стандартным, на нем * должна * быть некоторая документация. Однако я не смог найти его нигде в руководстве - вы знаете, где я должен искать? Sean Allred 10 лет назад 0
@SeanAllred: Да, см. [Руководство по Elisp, узел `Regexp Backslash`] (https://www.gnu.org/software/emacs/manual/html_mono/elisp.html#Regexp-Backslash) и найдите` \ < `. И посмотрите узел [`Синтаксис для строк`] (https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-for-Strings.html#Syntax-for-Strings) для получения информации об удвоении обратная косая черта. Drew 10 лет назад 0
В руководстве. Это специальный оператор `\ <` (где `\` нужно удваивать в строках, потому что это специальный экранирующий символ в строках). Stefan 10 лет назад 0
В связи с этим, прежде чем я задам другой вопрос (в случае, если это еще одна глупая ошибка, как эта ...) - есть ли причина, по которой он должен работать для этого лица? https://gist.github.com/vermiculus/6b2e6aad3c2ec14dc20d @Drew А, я полагаю, нет простого способа пометить синтаксис только для комментариев. Sean Allred 10 лет назад 0
@SeanAllred: Я не уверен, что вы спрашиваете, и я не эксперт по блокировке синтаксических шрифтов (* Stefan *), но вижу [(elisp) `Syntaxic Font Lock`] (https: // www. gnu.org/software/emacs/manual/html_node/elisp/Syntactic-Font-Lock.html#Syntactic-Font-Lock) для получения информации об этом. Альтернативой является использование специальной подсветки «поверх» подсветки комментариев шрифтом. Вы можете использовать библиотеку [`highlight.el`] (http://www.emacswiki.org/HighlightLibrary), например, для этого. Drew 10 лет назад 0

Похожие вопросы