以前の記事「EGitを使ってEclipseでGitリポジトリを操作する」で書いたように、EGit 0.4.0 ではキーバインディングを設定することができません。EGit のコマンドはポップアップメニューの Team から実行することができますが、コミットやブランチの切り替えといった使用頻度の高いコマンドをいちいちポップアップメニューから実行するのは面倒です。

そこで今回は、ポップアップメニューから実行する EGit のコマンドに対してキーバインディングを設定できるようにする方法を解説します。

MATSUFUJI Hideharu

ゴール

使用頻度の高い以下のコマンドに対して、ユーザが自由にキーバインディングを設定できるようにします。

コマンド機能
Commitコミットする
Show in Resource History選択されているファイルやフォルダの履歴を表示する
Branchブランチの作成や切り替えを行うダイアログを表示する

ちなみにキーバインディングは Preferences[General]->[Keys] で設定することができます。

どのようにして実現するか

キーバインディングを設定できるようにするために、当初は新たなプラグインの作成を検討していました。EGit から独立したプラグインであれば、本体に影響を及ぼすこともありませんし、配布も容易だからです。

しかし EGit のプラグインがキーバインディングに必要なパッケージをエクスポートしていないため、この方法では実現できませんでした。

そこで EGit のプラグイン自体に変更を加えることにしました。変更を加えるといっても拡張ポイントの設定を変更するだけでプログラムコードは一切変更しません。従って、リビルドする必要はありませんし、変更の適用も容易に行うことができます。

ソースコードの入手

EGit の拡張ポイントを変更するために EGit のリポジトリからソースコードを入手します。EGit のインストールに関しては「EGitを使ってEclipseでGitリポジトリを操作する」をご覧ください。

[File]メニュー->[Import...]Import ダイアログが表示されるので、[Git]->Git Repository を選択し、[Next >] をクリックします。すると Import Git Repository ダイアログが表示されるので、以下のとおり入力します。Host や Repository path といった情報は URI を入力すると自動的に入力されます。

URIgit://repo.or.cz/egit.git

続けてウィザードの指示に従って処理を進めると EGit のプラグインプロジェクトがインポートされます。

Eclipse の拡張ポイントの設定

Eclipse のプラグインを開発する上で重要なのが拡張ポイントです。拡張ポイントは機能ごとに用意されており、適切に拡張することで Eclipse に新たな機能を追加することができます。例えば、新たなエディタを追加したい場合には org.eclipse.ui.editors 拡張ポイントにエディタを登録することで Eclipse に新たなエディタを追加することができます。

Eclipse の拡張ポイントを設定するには PDE (Plug-in Development Environment) が便利です。PDE は ソフトウェア更新機能を使ってインストールすることができます。([Ganymede Update Site]->[Java Development]->Eclipse Plug-in Development Environment)

それでは今回の目的を達成するために拡張ポイントを設定していきましょう。編集対象となるのは org.spearce.egit.ui プラグインの構成ファイル plugin.xml です。このプラグインは EGit のユーザインターフェイスを処理しており、キーバインディングを設定できるようにするポップアップメニューの処理もこのプラグインが行っています。

まず、ユーザが自由にキーバインディングを設定できるようにするために、Preferences[General]->[Keys] にコマンドを表示する必要があります。この画面には org.eclipse.ui.commands 拡張ポイントの command の定義が一覧で表示されています。今回は Commit, Show in Resource History, Branch のための command を追加します。

org.eclipse.ui.commands.png

次に、追加したそれぞれの command とポップアップメニューのアクションを関連付ける必要があります。org.eclipse.ui.popupMenus 拡張ポイントに定義された対象アクションのプロパティ definitionId にそれぞれの command の id を設定することでこの関連付けを行います。

org.eclipse.ui.popMenus.png

これらの作業によって plugin.xml は以下のように変更されました。ポップアップメニューのアクションと org.eclipse.ui.commands 拡張ポイントの command がそれぞれ対応しているのがおわかりいただけると思います。

変更の適用

今回の変更は plugin.xml のみなので、該当の JAR ファイルから plugin.xml を取り出し、パッチを適用して、再び JAR ファイルに戻すことで変更を適用することができます。

jar xf org.spearce.egit.ui_0.4.0.200904282320.jar plugin.xml
patch -p1 plugin.xml < org.spearce.egit.ui-plugin.xml.patch 
jar uf org.spearce.egit.ui_0.4.0.200904282320.jar plugin.xml

以上で必要な作業は完了です。Eclipse を起動すると Preferences[General]->[Keys] でキーバインディングを設定できるようになります。

キーバインディングの一覧に追加した command が表示されない場合には、eclipse コマンドに -clean オプションを指定して起動してみてください。(-clean オプションは Eclipse のキャッシュを削除するためのオプションです。)

ちなみに筆者は以下のように Alt + G をプリフィックスとしてキーバインディングを設定しました:-)

preferences.png popupmenu.png

今回は Commit, Show in Resource History, Branch のための command を追加しましたが、他のコマンドについても同様の手順で追加することができます。必要に応じて追加してみてください。

使用したソフトウェアのバージョン

EGit0.4.0.200904282320
Eclipse3.4.2
トラックバック(0)
  • このブログ記事のトラックバックURL:
コメント