2012年8月26日日曜日

Eclipse PDT でコメント切り替えショートカットキーが効かなくなるのを直す

Eclipse 4.2 Juno にアップデートしたら、Ctrl+/によるコメントアウトの切り替えが動作しなくなることがありました。

どうやら、エディタを複数開くと2つ目以降でCtrl+/が効かなくなるものがあるようです。
調べるうちに、同じ現象での相談がフォーラムに投稿されているのを見つけました。

http://www.eclipse.org/forums/index.php/m/894630/

解決方法はPDTプラグインの中身を直接いじるというもの。jarファイルを展開、編集して再度アーカイブするように書いてあります。

展開後再アーカイブする方法を試してみましたがエラーが出るなどうまくいきませんでした。しかし、再アーカイブではなくアーカイブ中の対象ファイルのみを更新する方法でうまくいきましたのでその方法を書きます。

jar を展開する

まず、編集対象のファイルを取り出すため、対象のjarファイルを展開します。
Eclipse Pleiades All in Oneでは、
eclipse\dropins\PDT\eclipse\plugins\org.eclipse.php.ui_3.0.1.v201201110400.jar
にありました。 元のjarをバックアップした後、一時フォルダにコピーします。

その後コマンドプロンプトを起動し、一時フォルダに移動してjarを展開します。
> jar xvf org.eclipse.php.ui_3.0.1.v201201110400.jar

plugin.xmlを書き換える

展開されたファイルのうち、plugin.xmlを書き換えます。書き換える箇所は612行目付近の次の箇所です。

書き換え前:
<!-- overriding WST's Handlers with the same 'commanId' -->
<handler class="org.eclipse.php.internal.ui.actions.PHPToggleLineCommentHandler"
    commandId="org.eclipse.wst.sse.ui.toggle.comment">
    <activeWhen>
    <or>
        <reference definitionId="org.eclipse.php.ui.phpContentType.definition" />
       <with variable="activePartId">
        <equals value="org.eclipse.php.editor"/>
       </with>
    </or>
        
    </activeWhen>
    <enabledWhen>
        <reference definitionId="org.eclipse.php.ui.phpContentType.definition" />
    </enabledWhen>
</handler>
書き換え後:
<!-- overriding WST's Handlers with the same 'commanId' -->
<handler class="org.eclipse.php.internal.ui.actions.PHPToggleLineCommentHandler"
    commandId="org.eclipse.wst.sse.ui.toggle.comment">
    <activeWhen>
        <reference definitionId="org.eclipse.php.ui.phpContentType.definition" />
    </activeWhen>
    <enabledWhen>
        <reference definitionId="org.eclipse.php.ui.phpContentType.definition" />
    </enabledWhen>
</handler>

jarを更新

書き換えたplugin.xmlをjarに注入して更新します。
> jar -uf org.eclipse.php.ui_3.0.1.v201201110400.jar plugin.xml
更新したjarで元ファイルを上書きし、eclipseを-cleanオプション付きで起動します。
これでエディタを複数起動した時も2つ目以降でCtrl+/が効くようになります。

0 件のコメント:

コメントを投稿