Синтаксис для добавления/удаления ключевых слов font-lock в Emacs

Большая часть того, что я делаю в Emacs, написана на Perl, и для этого cperl-mode в основном подходит отлично; одна из основных неприятностей заключается в том, что простому my $whatever введению присваивается свойство font-lock-keyword-face, которое сводит на нет преимущество использования ключевых слов pop. Я новичок в elisp, и поэтому пытался поиграть с добавлением или удалением ключевых слов из font-lock. В то время как EmacsWiki и GNU дать синтаксис, регулярное выражение сводит меня с ума. У меня есть следующее, чтобы не ныть в моей инициализации:

(font-lock-remove-keywords 'cperl-mode '(("\\<\\(my\\)")))

И это ничего не делает. Бит \\<\\(my\\) работает на пустом месте с re-builder, поэтому я думаю, что у меня здесь проблема с синтаксисом. Как добавлять и удалять ключевые слова?


person Amory    schedule 09.08.2013    source источник
comment
К счастью, комментарии не могут получить недостатки, поэтому вот: вы можете определить оскорбительное ключевое слово как ваш обычный базовый шрифт — например, черный передний план с белым фоном. Я не изменяю исходный код самого Emacs, потому что часто создаю новые версии из магистрали Emacs. То, что предлагает Lindydancer, сделано с тех пор, но я не исследовал это раньше, поэтому у меня нет решения, основанного на этом.   -  person lawlist    schedule 26.08.2013
comment
Вы также можете взглянуть на источник .../lisp/progmodes/cperl-mode.el, чтобы узнать, как определяется оскорбительное ключевое слово. my упоминается множество раз, начиная со строки 5129 Emacs Trunk.   -  person lawlist    schedule 26.08.2013


Ответы (1)


Функция font-lock-remove-keywords предназначена для удаления существующего правила блокировки шрифта, которое на жаргоне шрифта блокировки представляет собой ключевое слово блокировки шрифта.

Если вы примените его к чему-то, что не является точным соответствием существующему правилу блокировки шрифта, то он ничего не сделает.

Он не предназначен для удаления ключевых слов языка.

Лучший способ сделать это — просмотреть переменную font-lock-keywords и удалить правило, которое вам не нравится, используя font-lock-remove-keywords, а затем добавить измененную версию правила, используя font-lock-add-keywords.

person Lindydancer    schedule 09.08.2013
comment
Вы имеете в виду font-lock-remove-keywords вместо remove-font-lock-keywords? - person xuhdev; 25.10.2016
comment
@xuhdev: Да, конечно, знаю - я обновил ответ. (Ну и дела, когда-то я даже написал функцию ****, и я даже не могу вспомнить ее имя. Думаю, пришло время отправить меня в дом престарелых...) - person Lindydancer; 25.10.2016