ホーム > タグ > スニペット

スニペット

Eclipseのスニペットとテンプレート

前回Eclipseのスニペット(Snippet)を紹介したのですが、もろもろ紛らわしい機能でして、誤解を与えそうってことでもう少し解説します。

貴方の思う”萌え”と、わたしの思う”萌え”は別なのよ、ということですね。わかりにくい!

えっと、まずは Eclipse3.3 のJDT(Java Development Tools)を前提として、機能を説明します。

■ コード・テンプレート
EclipseでJava開発をしていると、以下のようなコードが自動生成されることがありますよね。

  1.  } catch (Exception e) {
  2.      // TODO 自動生成された catch ブロック
  3.      e.printStackTrace();
  4.  }

他にも新規にクラスファイルを作成したときなどに自動生成されるコードがあります。

ここで自動生成される雛形はユーザが設定できるようになっています。
[設定]→[Java]→[コード・スタイル]→[コード・テンプレート]

これがコード・テンプレート機能です。

■ テンプレート
Javadocの中で文字列を選択し、Ctrl+Spaceを押すとその文字列をタグで囲むことができます。
“if”と入力してCtrl+Spaceと入力したときに”else if”ブロックなどの補完ができるのもテンプレートです。

20081202a

これは[設定]→[Java]→[エディター]→[テンプレート]から変更・追加が可能です。
これがテンプレート機能です。

■ スニペット
前回こしあんが紹介したのが、これ。
コードの断片を”ビュー”から挿入することができます。

スニペットはビューです。スニペット・ビュー。大事なことなので2回い(ry

と、いうわけで以上3つの機能を紹介しました。
どれもコードの断片を貼り付ける機能で同じではないかと思われるかもしれません。まったくその通りで、ユーザにとって機能名などどうでも良いことです。それなのに、わざわざこんな紹介をしたのは、Eclipseプラグイン開発の観点からの便宜上です。

プラグイン開発の話に進む前にEclipse3.4について触れておきます。

Eclipse3.4ではスニペット・ビューが標準で付属していません。これはおそらくですが、JDTに”テンプレート・ビュー”が実装されたためと思われます。
テンプレート・ビューとスニペット・ビューはほぼ役割が同じであるため、スニペット・ビューは付属しなくなったのでしょう。

さて、やっとメイン。Eclipse3.4でスニペット・ビューと同じ機能を持つプラグインを作りたい。
方法は2つ考えられます。

  1. WST を同梱し、SnippetContributionsを拡張する
  2. AbstractTemplatesPage を実装したクラスを作成する

3.4からは2つ目の方法をとりたいところ。

■ 参考
TemplatesView – Eclipse SDK

ITemplatesPage – Eclipse SDK

Eclipseでスニペットを使ったり拡張したり

スニペット(Snippet)は”断片”のことであり、一般的には、コピペで使えるコードサンプルなどのことを言いますが、Eclipseではエディタ上で定型文を挿入する機能のことを言います(というかそう呼ぶことにします、面倒だから)。

かなり便利な機能なのですが、そんなに活用している人を見かけないので紹介(゜-゜=)

スニペットビューを表示するには[ウィンドウ]→[ビューの表示]→[その他]でダイアログを表示し、「一般」フォルダの中の「スニペット」をクリックします。

ビュー上で右クリック→[カスタマイズ]でユーザが独自に”断片”を登録することができ、インポートやエクスポートも行えるのですが、このとき、ユーザが独自に登録したスニペットは以下のディレクトリにxmlファイルとして保存されます。

{$workspace}\.metadata\.plugins\org.eclipse.wst.common.snippets

※ $workspace は各自のworkspace

このディレクトリ名を見るとわかる通り、スニペットビューはWST(Web Standard Tools)によって提供されています。”Web”と言いつつ、ほぼすべてのEclipseパッケージに付属している(気がする)プラグインなので、 Eclipseプラットフォーム標準の機能であるかのように使えるわけですね。

そしてさらに、このスニペットビューにはextension point「SnippetContributions」が定義してあるため、プラグイン開発者はスニペットビューを拡張することもできます。
この辺は以下のドキュメントを参照してください。単純に挿入したいテキストの設定ならplugin.xmlに書くだけでよいです。

Help – Eclipse SDK

contenttypesとextensionsが思ったように動いてくれないよぅ…(´・ω・`)

■ 参考
WST Common Snippets subcomponent Overview

Home > Tags > スニペット

Search
Feeds
Link
あわせて読みたいブログパーツ
Meta

Return to page top