【コラム】
Eclipseは非常に高機能なIDEだが、他のIDEやさまざまなプログラマ向けのテキストエディタと比べたときに欠けている機能がある。その1つがマクロ機能だ。マクロはコーディングの際に発生する退屈な繰り返し作業を肩代わりしてくれる非常に便利な機能であるにも関わらず、Eclipseは標準でそのような機能を備えていない。そこで登場するのが今回紹介するEclipse Monkeyだ。
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のスクリプトは簡単な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を日常作業の効率化に役立ててみてはいかがだろうか。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
TVアニメ『エウレカセブンAO』、新キャラおよびメカの設定画を紹介 [22:21 2/10] ホビー |
|
TVアニメ『ソードアート・オンライン』、7月放送開始! キービジュアル公開 [21:58 2/10] ホビー |
|
CP+2012 各社ブースレポート集 [21:48 2/10] 家電 |
|
ソニエリ、「Xperia NX」の展示イベント開催 - 東京・名古屋・大阪で実施 [21:40 2/10] 携帯 |
|
【レポート】CP+2012 - 「EOS-1D X」展示や吉高由里子のトークショーに人だかりが - キヤノン [21:35 2/10] 家電 |