通常のJavaのマイナーな変種であるHabenero Javaで時間を過ごしていて、私の人生を楽にするためにEmacsモードを定義しようとしています。Emacsのフォント問題
今私がしようとしているのは、Javaを継承する新しいメジャーモードを定義して、finish
,async
、およびforall
の3つの新しいキーワードを追加することだけです。
(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
という名前で変数を宣言しているかのように書式化します。
anyoneはこれを解決する方法を知っていますか?これ以上の不満は私を殺している。
:
詳しい情報はで見つけることができますJavaモードと同様にcc-modeをベースにしているので、何が起きているのかを判断するために、ccモードのロジックを深く理解する必要がありました。私は、(a)ccモード解析ロジックにJavaの特別なケースがいくつかあることを知りました。 (b)Javaモード用に定義されたいくつかの異なるクラスのキーワードがあります。他のクラスに「finish」などを追加するとうまくいくかもしれません。 (c)ccモードを調整するのは難しいです。 – Cheeso