2013-08-12

複数の文字符号化方式が混在しているときのmagit文字化け対策コード(magit 1.2.0用)

64ビット版cygwinを入れたらgit-encwrapperがどうやっても正しく動かなくなってしまったので、諦めてmagit側を修正することにしました。

次のelispをロードすることで、magit 1.2.0がgitのencoding属性を使うようになってくれます。

差分のファイルヘッダー部分を認識して各ファイルパート毎に git check-attr encoding でエンコーディングを取得し、そのエンコーディングで decode-coding-region(git diff時) や encode-coding-region(git apply時) を使って変換します。

ファイルのエンコーディングは自動的に判別するわけではありませんので、必ず .gitattributes でencoding属性を設定してください。

(2014-01-29追記:magitの最新版で上のコードは使えなくなったので、git-encwrapperを復活させました)