CLOVER🍀

That was when it all began.

auto-java-completeがアノテーションを対象にしていないのですが

EmacsでJavaを書く時に、auto-java-completeを使おうとしているのですが、どうもアノテーションが補完対象外になっているようです。

試しに、Java EE 7のWeb Profileの範囲でJAX-RSのアノテーションを補完しようとすると、候補が妙なことになります。
※ApplicationPathが出てきて欲しい

まあ、そもそもアノテーションは補完対象外のような?「@」を打っても何も反応しないし…。

Java EE 7 Web Profileを指定して作成したはずのタグファイルにも、入っていません。

$ grep ApplicationPath .java_base.tag

で、auto-java-completeのTags.javaを見てみました。

    private ClassItem tagClass(Class c) throws ApplicationException{
        if(c.isAnnotation()) throw new ApplicationException("sorry ,you are an Annotation:"+c.getName());

「sorry」じゃないよ!!

というわけで、意図的に外されているようです。

しかし、これは困りました。今のJava開発で、アノテーションが外れているのはねぇ…。

で、ものは試しと、上記の1行だけコメントアウトして実験。

    private ClassItem tagClass(Class c) throws ApplicationException{
        // if(c.isAnnotation()) throw new ApplicationException("sorry ,you are an Annotation:"+c.getName());

タグファイルを作成して、「M-x ajc-reload」で再読み込み。

すると、今度は補完対象に挙がりました。

とはいえ、「@」から補完しようと思ってもこれだとうまくいきません…Javadocの要素とかがサジェストされたりします…。
「@」の前に、いきなりアノテーションの名前を書こうとすると、ちょっと補完してくれますけど(笑)。

まあ、importで補完してくれるだけでも少しはマシなのですが。

auto-complete-java自体、更新も最近はされていないようですし、elispが読めたらもうちょっとなんとかしたいんですけどねぇ。

あ、やるなら自己責任で。