WinDiffを少しだけ改良してみた

WinDiffは10年くらい使っていて慣れているのだが

  • UTF-8の文字が化ける
  • 行末がUTF-8文字だと改行を認識しないことがあり、行数もずれる

という問題があった。

WinMerge使えばよいという話ではあるのだが、

  • 何文字目から変化しているのか、ぱっと見わかりづらい
  • 左右分割なので、diffっぽくない&桁数が減る
  • 常に外部エディタで編集したい(右クリックメニューが遠い)

とかいう理由で、WinDiffを改造したほうが、慣れたインターフェースにできそうだったのでチャレンジ。

古いWinDiffはVisual C++ 6.0に付属していたような気がするが、これはバグっていて、右クリックメニューもない。
新しいものがPlatform SDKのサンプルに、SDKDiffという名前で付属していたので、これを使うことにした。
ちなみに最新版ではない(Vista用のものにはもっと細かいメニューがある)が、個人的には困っていない。
ライセンスについては、MSDNに「サンプルコードのうち、特記のないものはMICROSOFT LIMITED PUBLIC LICENSEに従う」という記述があったので、公開しても良いと判断した。
著作権表記と、プログラム名はそのままにする必要があるという認識です。

変更点は以下のとおり。処理はてきとーそのものです。

  • 1行を読み込むとき、文字コードを考慮せず、LFのみを検出
  • 1行の中で、Shift-JISのスコアとUTF-8のスコアを出して、UTF-8のスコアが高ければDBCSに変換

これ(ソース)
https://github.com/firewood/sdkdiff

バイナリ
https://github.com/firewood/sdkdiff/downloads