Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

UTF8ize Plugin。

これは何?

新規に作成したり開いたユニットのファイルフォーマットを自動でUTF-8にセットするプラグインです。

デフォルトでは新規かどうかにかかわらずすべてUTF-8にセットします。この動作をやめて新規のみを対象にする場合は、UUtf8ize.pasを開いて{$DEFINE APPLYTOALL}をコメントアウトするか、削除して下さい。ただし以下のような動作をするため、ほとんどの場合はそのまま使っても問題ないと思います。

既存のファイルに対する動作

このプラグインは新規作成したファイルだけでなく、既存のファイルを開いた際にもフォーマットとしてUTF-8を指定します。フォーマットの変更を手動で行う場合、IDEは変更フラグを立てるため、中身を何も編集していなくてもファイルを閉じる際に保存するかどうか尋ねられますが、このプラグインは変更フラグを立てないため、内容の変更を行わない限り保存するかどうかは尋ねられませんし、そのまま閉じればUTF-8に変換しないまま閉じることができます。

余談

これを作るにあたってとりあえずOpen Tools API内で何とかできないか調べたところ、IOTAFileFilterServicesにDefaultFilterプロパティがあり、ここにUTF-8を表すIOTAFileFilterインターフェースを突っ込めば良さそうだったので、これは楽勝…と思いきや、指定すると「BOMが付いてないファイルをUTF-8と見なして開く」という動作に変わるだけの残念仕様*1で、結局OTAを使わないいつもの手法に落ち着きました…。

余談の余談

ソースコードUTF-8にするメリットは、海外の人がソースコードを開いた時に文字化けを防ぐというだけで無く、コンパイルが速くなる*2という直接的なものがあります。これはヘルプにも書いてあることなんですが、何故かUTF-8がデフォルトになる気配が無いですよね…謎です。UTF-16をデフォルトにするというならサイズ的な問題があるので分からなくも無いですが、UTF-8なら欧米圏はせいぜいBOMで数バイト増えるだけですし。

*1:当然UTF-8でないファイルは化ける

*2:正確にはUTF-8以外を使うとコンパイル速度が低下する