以前の記事「EGitを使ってEclipseでGitリポジトリを操作する」で書いたように、EGit 0.4.0 ではキーバインディングを設定することができません。EGit のコマンドはポップアップメニューの Team から実行することができますが、コミットやブランチの切り替えといった使用頻度の高いコマンドをいちいちポップアップメニューから実行するのは面倒です。
そこで今回は、ポップアップメニューから実行する EGit のコマンドに対してキーバインディングを設定できるようにする方法を解説します。
ゴール
使用頻度の高い以下のコマンドに対して、ユーザが自由にキーバインディングを設定できるようにします。
| コマンド | 機能 |
|---|---|
| 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 を入力すると自動的に入力されます。
| URI | git://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 を追加します。
次に、追加したそれぞれの command とポップアップメニューのアクションを関連付ける必要があります。org.eclipse.ui.popupMenus 拡張ポイントに定義された対象アクションのプロパティ definitionId にそれぞれの command の id を設定することでこの関連付けを行います。
これらの作業によって 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 をプリフィックスとしてキーバインディングを設定しました:-)
今回は Commit, Show in Resource History, Branch のための command を追加しましたが、他のコマンドについても同様の手順で追加することができます。必要に応じて追加してみてください。
使用したソフトウェアのバージョン
| EGit | 0.4.0.200904282320 |
|---|---|
| Eclipse | 3.4.2 |
トラックバック(0)
- このブログ記事のトラックバックURL:
