Eclipse
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 …
立て込んでてイマイチな進捗。とりあえず今回は簡単なフィルタ - しげるメモで作ったDSLに対して、字句レベルのエラーを表示してみようと思います。完成品がコレ。
前回の「Java/EclipseでDSLサポート (5) - パースエラーの表示 - しげるメモ」までで構文エラーを検出できてますが、今回は構文が持つ意味にまで言及してみようと思います。ListFilterに対して、次のようなHogeクラスのリストを食わせる前提で。 public clas…
サクサク進む。直前の「Java/EclipseでDSLサポート (4) - スキャナエラーの表示 - しげるメモ」から今度は構文レベルのエラーを表示してみます。完成品。
前回は見つけた文字列リテラルを片っ端からDSLとみなして警告をつけていましたが、今回からちゃんとDSLっぽくなる予定。まず、すごく簡単なDSLの仕組みを作ります。
次に、Eclipse JDTの拡張ポイントを利用してコンパイルプロセスに介入していきます。 調べながら同時に書いていくのでゆっくりと。
やっとこさ時間ができたので、JavaでDSLを(やむを得ず)使う場合にどうやってEclipseからサポートするか考えて見ます。こんな感じがいいんじゃないのかなというところ。 Hoge dsl = HogeParser.parse("<Hoge-DSL>", arg1, arg2,...); つまり、 メソッド呼び出し + 文字</hoge-dsl>…
半年くらい乗り遅れましたが、あまりに便利で感動。 Google グループコードを読んでも、そのまま使っても勉強になりました。
Service Guide for Software Development | Snupit
/** * 3.141592... {@link Math#PI (円周率}を返す。 */ Math.PIフィールドではなく、Math.PI(円周率)というメソッドとして解析しようとしてパースエラー。 ambiguousだけどしょうがないよね。
なんかバグっぽいの発見。 /** * test {@code { }} * @param p ... * @throws HogeException ... */ "{@code {"辺りでStringIndexOutObBoundsが発生してASTが作られない。Javadoc#tags() が空になる感じ。 でも、Hoverで出るJavadocはしっかり解析してる。処…
JavadocをJDTのASTで表現するのがめんどい。タグの引数をちゃんと認識してて、SimpleNameとかMethodRefとかを作らなきゃならんらしい。しかも、パーサの実装はinternalばっかり。馬鹿らしいけどパーサ書くかな…
めも。あまりにinternalすぎて卒倒しそうになる。
忘れてた。IrenkaのHackはExport Wizard使って配布可能な形式を作ります。再利用性考えて、ExporterのコアはEclipseに癒着しないように作らなきゃですが、とりあえずそれは後で考えればいいや。誰かがやってくれるかもしれないしね。
メモ。Listは文字列とラベルを同時に表示できないらしい。のでTableを使えとのこと。CheckBox欲しいので、TableをSWT.CHECKで作ればいいとか。
つまり、こういうことかな。とりあえず保存と復帰だけは確認。
設定を保存する。 - 設計と実装の狭間で。いつもありがとうございます。んで、IWorkbenchPropertyPageの↓を上書きすればOKとかページに共通するボタンをハンドルできげ。 public boolean performOk() public boolean performCancel() protected void perform…
UI作るの嫌いなので先にロジックが深い方を調査してました。好き嫌い言っちゃいけないですけどね。Hackとしてのクラスをプロジェクトから探すダイアログがどの程度でできるのか。とりあえずソースコード表現のものを探す部分から。クラスファイルは別の表記…
プロパティページを試しに作ってみる。ビューとかどうやって作るんだろ…
Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。 拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。今回の目標は、「…
広大な世界が見えてきたので、ぶれる前にやりたいことを確認。
とりあえずパースペクティブをPDEへ。 Window > Open Perspective > Other... Plug-in Development OK
まだ「What's New (ようこそ)」が表示された状態。いつになったらPDEパースペクティブに行けるやら。Window > Preferences...
Eclipseのプラグイン導入。
とりあえずダウンロード。 http://www.eclipse.org/downloads/ これまでダウンロードしたことのない "Eclipse for RCP/Plug-in Developers" を入れてみる。
プラグインの勉強。 全く作ったことないので、どうせなら一からメモるかね。明日の午前中に最低限のレベルまで達したいところ。
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…
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>