Eclipse プラグイン覚書

EclipseXMLをエディタ作り,Eclipseプラグイン作りがどれだけ大変かを学習する.

教科書 − amazon:4839922195 Eclipseプラグイン開発徹底攻略

の7章(テキストエディター)

ハイライトを増やす p156-159

教科書どおりに,CDATA がハイライトされるようにしてみる

  • XMLPartitionScannar にCDATAを検出するためのルールを 追加します
  • XMLDocumentProvider も修正する必要があります.
  • 次にXMLConfiguration を修正し...

ハイライト増やすだけで3箇所も...

ハイパーリンクする p160-p163

はまりどころ.

まず,p161 の TypeHyperlinkDetector.java の getWordRegion メソッド部分がばっさり(中略)されているので自作

        private IRegion getWordRegion(String source, int offset) {
		for (int i=offset; i>0; i--) {
			if (!isClassName(source.charAt(i))) {
				offset=i+1;
				break;
			}
		}
		for (int i=offset; i='a' && c<='z') ||
		(c>='A' && c<='Z') ||(c>='0' && c<='9');
	}

あと,インポートしなければならないプラグインがこれだけある:


最初これを,plugin.xml の Dependencies から追加できるのを知らず,プロジェクトのプロパティのJava Build Path から追加した.するとコンパイルエラーはなくなるが,起動したときにNoClassDefFoundException になる


アウトライン p164-167

p165が今度はもっと大胆に省略されているのでさわっていない.

p166で出てくるFuzzyXML というライブラリは,この本の作者謹製XMLパーサで

パース後のノードがテキスト上の位置情報を保持しているという特徴があります

という素敵なライブラリ.というかEclipse自身がそういう機能をサポートしていないのはどうなんだろう.

コード補完 p170-172

XMLの閉じタグを補完する.後ろ方向に文字を読んで,開きタグを正規表現で見つけて...という処理を地道にやっている.

ハイパーリンクのところでプラグインは追加済みなのであらためて追加するものはなかった.ちょっと戸惑うのは CompletionProposal が2つ出てきた点(org.eclipse.jdt.core を選ばず, jface.text.contentassist を選ぶ)

結論

とても,自分のオリジナル言語で同じこと(ハイライトとかリンクとか補完)ができるように思えない.