Проблема со шрифтами в Emacs - PullRequest
1 голос
/ 27 января 2011

Я собираюсь потратить некоторое время на работу с Habenero Java, второстепенным вариантом обычной Java, и чтобы облегчить свою жизнь, я пытаюсь определить режим Emacs для работы с ним.

Сейчас все, что я пытаюсь сделать, это определить новый основной режим, который наследуется от Java и добавляет три новых ключевых слова: finish, async и forall. Это то, что я до сих пор:

(define-derived-mode hj-mode java-mode "Habanero Java"
  "Major mode for Habanero Java."
  (font-lock-add-keywords nil `((,(regexp-opt '("finish" "async" "forall")) .
     font-lock-keyword-face))))

Проблема, с которой я столкнулся, заключается в том, что Emacs, очевидно, не может различить эти новые ключевые слова и объявление переменной. Если я напишу async { x(); }, тогда Emacs выделит это правильно. Но если я напишу эквивалент async x();, тогда Emacs отформатирует его так, как если бы я объявлял переменную с именем async.

Кто-нибудь знает, как решить эту проблему? Разочарование по этому поводу убивает меня.

1 Ответ

0 голосов
/ 03 июля 2013

Один из способов - изменить элемент ключевого слова на формат (matcher . subexp-highlighter), где subexp равно 0, а override равно t:

(font-lock-add-keywords nil `((,(regexp-opt '("finish" "async" "forall"))
   0 font-lock-keyword-face t)

Более подробную информацию можно найти по адресу: http://www.gnu.org/software/emacs/manual/html_node/elisp/Search_002dbased-Fontification.html#Search_002dbased-Fontification

...