我将花一些时间使用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声明了一个变量一样。
有人知道怎么解决这个问题吗?对此的挫败感要了我的命。
发布于 2013-07-04 02:13:52
一种方法是将关键字元素更改为(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。
https://stackoverflow.com/questions/4811682
复制相似问题