CRとLFの問題
テキストファイル内で改行を表す記号が統一されなくて困ると言う話。
真魚は、Windows、Windows以外、古いMacという、三つの表記を使っている。
まず、Unix系のパソコンでは、改行をLFという記号で表している。
インターネットとかが普及したせいで、LFの需要も高まってしまった。
次に、古いMacはCRという記号で改行を表していたのだが、
そのインターネット需要のためか、最近はLFに変更されているらしい。
コレが、Windows以外、古いMacという表記の詳細だ。
で、Windowsでは、CRとLFを並べて一回の改行として表している。
コレはLFCRじゃダメで、CRLFってのが決まり事。のはず。
このCRもLFもタイプライターの動作を表していて、
CRは印字位置を左側に引き戻し、LFで紙を一行分ずらす。
しかしタイプライターでの動作の場合、普通はLFしてCRするものであり、
←に動かして↓に動くのは間違いで、↓の次に←ってのが正しい動きらしい。
CRしてからLFするっていうWindowsの動作はそもそも間違いらしいのだ。
改行コードをマークで表しているエディタで、真魚みたいに矢印が折れ曲がってるのは、
↓行ってから←行くっていうタイプライターの動作を表しているわけだが、
CRLFをそのまま表現するなら、この矢印はやっぱりおかしい。
正しくは、
CR:←
LF:↓
CRLF:←曲がって↓
LFCR:↓で一行、←で一行
こんな表記になる。
あきらかに間違っているのはサクラエディタで、CRとLFの矢印が逆だ。
いや、Windowsの間違いにわざと乗ってやってると言うべきなのか。
CR:↓(逆)
LF:←(逆)
CRLF:↓曲がって←(逆+逆)
LFCR:←曲がって↓(一行にまとめてはいけない)
ところが、語源を無視してあえて間違っているサクラエディタの矢印が一番自然なのだ。
もう語源とか正しいかどうかなんてどうでもいいから、
真魚も間違った方にあわせて修正したくなったりするわけだ。
Windows上で動作するアプリなんだからWindowsが一番正しいってことでいいじゃない。
ここまでは単なる、改行をマークで表示するときの矢印の話。
次に、正規表現で¥rとか¥nとかで改行を表す時の話。
萌ディタの開発日記を見ると、テキストエディタの改行は¥nで当然のように書いてある。
サクラはCRLF混在で編集できる仕様だから、¥nと¥rを区別して検索する。
真魚もCRLF混在型なので、サクラと同じ仕様なわけだが、
検索でCRLFのLFのみにヒットしたりとかすると、カーソル位置に矛盾が出るわけだ。
[¥r¥n]+で、下方検索なら2回ヒットするし、上方検索では引っ掛かって次にいけない。
で、昨日も書いたように、正規表現ライブラリを自分でいじれそうもないので、
修正するなら、真魚を内部的にLFのみのデータ保持にし、
入出力でつじつまをあわせるっていう事以外にやりようはないわけ。
さらに、現在真魚は、改行キーでCRLFしか入力できないわけだが、
CRのみやLFのみに対応したら、LFの直前でCRの入力があったときなど、
どう言う動作をして良いかの自信もないってのがその理由。
コレはコマッチッタなって言う話なんだけど、
実は作り始めたときから無視し続けてきた、新しくない問題なのだ。
さて、このまま無視続けるか、やっちまうか。