Eclipseに欠けているもの

Eclipseは非常に高機能なIDEだが、他のIDEやさまざまなプログラマ向けのテキストエディタと比べたときに欠けている機能がある。その1つがマクロ機能だ。マクロはコーディングの際に発生する退屈な繰り返し作業を肩代わりしてくれる非常に便利な機能であるにも関わらず、Eclipseは標準でそのような機能を備えていない。そこで登場するのが今回紹介するEclipse Monkeyだ。

Eclipse Monekyを使ってみよう

Eclipse Monkeyを利用することで、JavaScriptコードでEclipseの操作を自動化することができる。Eclipse MonkeyはEuropa Descovery Siteからインストールすることが可能だ。

Eclipse MonkeyをインストールするとEclipseのメニューバーに「Scripts」メニューが追加される。ここから「Examples」を選択することでワークスペースに「Eclipse Monkey Examples」プロジェクトが作成される(図1)。このプロジェクト内にはJavaScriptのサンプルが用意されており、「Scripts」メニューから呼び出すことが可能だ(図2)。

図1 Eclipse Monkey Examplesプロジェクト

図2 Scriptsメニュー

実際にサンプルを動かしてみよう。任意のプロジェクトにテキストファイルを作成し、範囲選択した上で「Scripts」メニューから「Editors」→「Comment Lines」を選択すると、範囲選択したテキストの行の先頭に「//」が追加されるはずだ。

このほかにもさまざまなサンプルが用意されているので実際に動作を確認してみるといいだろう。

Eclipse Monkeyスクリプトを作成してみよう

サンプルを見ればわかる通り、Eclipse Monkeyのスクリプトは簡単なJavaScriptで記述することができる。例としてエディタの選択範囲のテキストの行末の空白を削除するスクリプトを書いてみよう。任意のプロジェクトのルート直下にscriptsフォルダを作成し、任意の.jsファイルを以下の内容で作成する。

/*
 * Menu: Editors > Trim EOL
 * Kudos: Naoki Takezoe
 * License: EPL 1.0
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */
function main() {
  // アクティブなエディタを取得
  var editor = editors.activeEditor;
  // 選択範囲を取得
  var range = editor.selectionRange;
  // エディタから選択範囲のソースを取得   
  var source = editor.source.substr(
    range.startingOffset, range.endingOffset);
  // 選択範囲のソースを行ごとに分割
  var lines = source.split(editor.lineDelimiter);
  // 行末の空白を削除
  var result = "";
  for(var i=0;i

ソースコードの先頭にあるコメント部分にはメニューに表示する名称やメニュー階層、ライセンス情報、スクリプトで使用するDOMなどのメタデータを記述し、実際の処理はmain関数内に記述する。置換処理そのものについては特に難しい部分はないだろう。

スクリプトの先頭で使用しているeditorsオブジェクトはEclipse Monkeyが提供しているDOMオブジェクトだ。DOMといってもXMLなどを操作するためのDOM APIではなく、Domain Object Modelの略で、特定の目的に特化したインタフェースを提供するものだ。Eclipse Monkeyではeditorsオブジェクトのほかにも、JavaScriptからEclipseへのアクセスを容易に行うためのいくつかのDOMオブジェクトを提供している。なお、Eclipseプラグインを作成することで任意のDOMオブジェクトを追加することも可能だ。

まとめ

Eclipseはプラグインを開発することでさまざまな機能を拡張することができるが、Eclipse Monkeyを使用することでプラグインを作成しなくても多くの機能をEclipseに追加することができる。Eclipse Monkeyを日常作業の効率化に役立ててみてはいかがだろうか。