JGitで git log -p を再現する

JGitを研究で使わなきゃならなくなった。
これでgit log -pを再現するのがえらい時間がかかったのでメモ。
一部EGitのソースを流用してる。

以下のcheckGitInfo()を実行するとこんな感じで取得が可能である。

.gitignore MODIFY
 old 
*.csv
*.xml

 new 
*.tsv

ソースコード中のprojectPathはGitリポジトリがあるファイルのString型パス。

流れとしては、

  1. Gitのリポジトリをプロジェクトパスを指定して取得。
  2. LogCommandによってlogのイテレータを取得(返り値はIterable)
  3. 取得したイテレータから前のやつと後のやつのペアを取るようにループを回す。(この時参照渡しに注意。)
  4. リポジトリをセットしたDiffFormatterのscanメソッドを用いて前のヤツと後のヤツの差分情報(DiffEntryオブジェクトで保存)のリストを取る
  5. DiffEntryオブジェクトから、差分の行数を保存しているEditオブジェクトのリストを取得する
  6. 同じくDiffEntryオブジェクトから新旧のテキストをRawTextオブジェクトとして取得。

と言った感じ。

続きを読む

Eclipseプラグイン org.eclipse.ui.viewsとか

家で研究の課題やってます。寝坊して行くに行けない時間だったのです。
こんなことできるの情報系くらいじゃないっすかね…
レモンです。

Eclipseプラグインで今日お家でやってことまとめときます。
忘れるんです…(´・ω・`)

以下メモなので言葉は乱雑。

続きを読む

MacにEclipse all in oneの環境を作る

研究の関係でpleiadesの環境がMacに欲しくなったのでインストールしてみましたが、かなり詰まった…のでメモ@研究室

Mac用のpleiadesはないため、Windowsのpleiadesを落としてきて、dropin,plugins,featuresの中身をすべて移した。普通はこれだけいいらしいんだけどclean起動してもどうもエラーが出てくる。調べてみるとJStyleというWindows用のプラグインが悪さをしているらしい。JStyleとはエディタ強化用のプラグインで、フォントの調整や全角半角などの視覚化を行っているらしい。

ので、アンインストールをする

アンインストールするには以下の手順を踏む

1.plugins ディレクトリーの以下 jar ファイルを削除。
jp.sourceforge.mergedoc.jstyle_4.x.x.x.jar
org.eclipse.swt.win32.win32.x86_64_xxx.xxx.jar
org.eclipse.swt.win32.win32.x86_64_source_xxx.xxx.jar

2.plugins ディレクトリーの以下バックアップ jar をリネーム (末尾 .backup 除去)。
org.eclipse.swt.win32.win32.x86_64_xxx.xxx.jar.backup
org.eclipse.swt.win32.win32.x86_64_source_xxx.xxx.jar.backup

(ここで元々のエディタの設定ファイルを戻している)

この辺の設定はここからzipを落としてきて中のhtmlを読むと分かった。

eclipseのプラグインでメインメニューにボタンを表示

お早うございます、夜はプログラミングが捗る、レモンです。

研究の関係でEclipseプラグインの開発が必要なので色々やってたんですがボタンを表示させるだけでもかなり苦労したのでメモ。

actionSetsを使う方法がよくWebにあったけどどうも古い形式らしいので(というか、先輩方のコードが使ってなかったので)eclipse.org.ui.menus,commands,handlersを使う。
下層の拡張は右クリックから拡張したいものを選択することで選択する。
また、menus,handlersのcommandIDはcommandsのidに結びついており、それと同じStringを打ち込んでやると連携するみたい。
肝心のボタンを表示させるには

 <menuContribution locationURI="menu:org.eclipse.ui.main.menu">

をmenusの直下に付け加えることで下のように表示ができる。plaiades入れてるとなんか勝手に翻訳されるっぽい。
locationURIに何を入れるとどこに表示されるか、はここが参考になった。

eclipse_1
ドロップダウン式のボタンが基本なので、その下にcommandを入れてあげてあとはcommandIDでcommandを割り当てて実際の操作をJavaコードに投げるっぽい。
下は作ってみたサンプル。

plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="sample2.Handler1"
            id="sample2.command2"
            name="name">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               label="Sample Menu">
            <command
                  commandId="sample2.command2"
                  label="Sample Command"
                  style="push">
            </command>
         </menu>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            commandId="sample2.command2">
      </handler>
   </extension>

</plugin>