Emacs中的字体问题

时间:2011-01-27 00:12:33

标签: emacs elisp syntax-highlighting

我将花一些时间在Habenero Java中工作,这是常规Java的一个小变体,为了让我的生活更轻松,我正在尝试定义一个Emacs模式来使用它。

现在,我要做的就是定义一个继承自Java的新主要模式,并添加三个新关键字:finishasyncforall。这就是我到目前为止所做的:

(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 :(得分:0)

一种方法是将关键字元素更改为(matcher . subexp-highlighter) subexp0overridet的{​​{1}}格式:

(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