Eclipse

Ganymedeのテンプレートを使う

Eclipse Ganymedeでテンプレートがかなり便利になりました。 具体的には コンテキストが細かく指定できるようになった Java/JavadocだけじゃなくてJava statements, Java type membersとか 変数の属性が指定できるようになった 引数とか型とか 別のところに…

ソースバンドルフィーチャーを自動生成

Eclipse Plug-inのソースバンドルフィーチャーを作るのが異常なほど面倒だったので、なんかないかなーと調べたところ発見。PDEBuild/Individual Source Bundles - Eclipsepedia にやり方が書いてありますが、なんか不明瞭+いくつか情報が落ちてたので改めて…

改行重要

eclipse.ini -vm C:\Software\Java\jdk1.6.0_06\bin\javaw.exe -startup plugins\org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar --launcher.library plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800 -showsplash …

Java/EclipseでDSLサポート (4) - スキャナエラーの表示

立て込んでてイマイチな進捗。とりあえず今回は簡単なフィルタ - しげるメモで作ったDSLに対して、字句レベルのエラーを表示してみようと思います。完成品がコレ。

Java/EclipseでDSLサポート (6) - 意味エラーの表示

前回の「Java/EclipseでDSLサポート (5) - パースエラーの表示 - しげるメモ」までで構文エラーを検出できてますが、今回は構文が持つ意味にまで言及してみようと思います。ListFilterに対して、次のようなHogeクラスのリストを食わせる前提で。 public clas…

Java/EclipseでDSLサポート (5) - パースエラーの表示

サクサク進む。直前の「Java/EclipseでDSLサポート (4) - スキャナエラーの表示 - しげるメモ」から今度は構文レベルのエラーを表示してみます。完成品。

Java/EclipseでDSLサポート (3) - DSLとして使われる文字列リテラルの判定

前回は見つけた文字列リテラルを片っ端からDSLとみなして警告をつけていましたが、今回からちゃんとDSLっぽくなる予定。まず、すごく簡単なDSLの仕組みを作ります。

Java/EclipseでDSLサポート (2) - コンパイルプロセスへの介入

次に、Eclipse JDTの拡張ポイントを利用してコンパイルプロセスに介入していきます。 調べながら同時に書いていくのでゆっくりと。

Java/EclipseでDSLサポート (1) - DSLの形式

やっとこさ時間ができたので、JavaでDSLを(やむを得ず)使う場合にどうやってEclipseからサポートするか考えて見ます。こんな感じがいいんじゃないのかなというところ。 Hoge dsl = HogeParser.parse("<Hoge-DSL>", arg1, arg2,...); つまり、 メソッド呼び出し + 文字</hoge-dsl>…

Plug-in Spy

半年くらい乗り遅れましたが、あまりに便利で感動。 Google グループコードを読んでも、そのまま使っても勉強になりました。

あとでよむ

Service Guide for Software Development | Snupit

これはしょうがない

/** * 3.141592... {@link Math#PI (円周率}を返す。 */ Math.PIフィールドではなく、Math.PI(円周率)というメソッドとして解析しようとしてパースエラー。 ambiguousだけどしょうがないよね。

bug?

なんかバグっぽいの発見。 /** * test {@code { }} * @param p ... * @throws HogeException ... */ "{@code {"辺りでStringIndexOutObBoundsが発生してASTが作られない。Javadoc#tags() が空になる感じ。 でも、Hoverで出るJavadocはしっかり解析してる。処…

Javadoc Parser

JavadocをJDTのASTで表現するのがめんどい。タグの引数をちゃんと認識してて、SimpleNameとかMethodRefとかを作らなきゃならんらしい。しかも、パーサの実装はinternalばっかり。馬鹿らしいけどパーサ書くかな…

プラグイン(13) jar packaging

めも。あまりにinternalすぎて卒倒しそうになる。

プラグイン(12) Export Wizard

忘れてた。IrenkaのHackはExport Wizard使って配布可能な形式を作ります。再利用性考えて、ExporterのコアはEclipseに癒着しないように作らなきゃですが、とりあえずそれは後で考えればいいや。誰かがやってくれるかもしれないしね。

プラグイン(11) TableとList

メモ。Listは文字列とラベルを同時に表示できないらしい。のでTableを使えとのこと。CheckBox欲しいので、TableをSWT.CHECKで作ればいいとか。

プラグイン(10) 保存してみる

つまり、こういうことかな。とりあえず保存と復帰だけは確認。

プラグイン(9) リソースプロパティの保存

設定を保存する。 - 設計と実装の狭間で。いつもありがとうございます。んで、IWorkbenchPropertyPageの↓を上書きすればOKとかページに共通するボタンをハンドルできげ。 public boolean performOk() public boolean performCancel() protected void perform…

プラグイン(8) Hack検索ウィンドウのfeasibility

UI作るの嫌いなので先にロジックが深い方を調査してました。好き嫌い言っちゃいけないですけどね。Hackとしてのクラスをプロジェクトから探すダイアログがどの程度でできるのか。とりあえずソースコード表現のものを探す部分から。クラスファイルは別の表記…

プラグイン(7) プロパティページの骨格

プロパティページを試しに作ってみる。ビューとかどうやって作るんだろ…

プラグイン(6) 拡張ポイントを探す

Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。 拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。今回の目標は、「…

プラグイン(5) やりたいことの確認

広大な世界が見えてきたので、ぶれる前にやりたいことを確認。

プラグイン(4) Hello, world!

とりあえずパースペクティブをPDEへ。 Window > Open Perspective > Other... Plug-in Development OK

プラグイン(3) 初期設定

まだ「What's New (ようこそ)」が表示された状態。いつになったらPDEパースペクティブに行けるやら。Window > Preferences...

プラグイン(2) プラグインの導入

Eclipseのプラグイン導入。

プラグイン(1) インストール

とりあえずダウンロード。 http://www.eclipse.org/downloads/ これまでダウンロードしたことのない "Eclipse for RCP/Plug-in Developers" を入れてみる。

プラグイン(0)

プラグインの勉強。 全く作ったことないので、どうせなら一からメモるかね。明日の午前中に最低限のレベルまで達したいところ。

Generate Empty Source Code

ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(new char[0]); CompilationUnit unit = (CompilationUnit) parser.createAST(null); // 変更点を保存する設定 unit.recordModification…

CompilationUnit

Eclipse JDTを使う第1段階 <eclipse-userlibraries version="2"> <library name="Eclipse JDT" systemlibrary="false"> <archive path="D:/Software/Eclipse3.2/plugins/org.eclipse.jdt.core_3.2.0.v_671.jar"/> </archive></library></eclipse-userlibraries>