NKFCocoa
Smultron-3.5.1+NKFCocoa公開します
なんとかできました。オリジナルと違う点は次のとおり。まだまだバギーですので問題があればご連絡ください。
Smultron-3.5.1+NKFCocoa途中経過
NKFCocoaのSmultronへの組み込みは実装方針だけは決めたもののなかなか手がつけられずにいたのですがようやく取りかかりはじめました。NKFCocoaによってもとのエンコードで書き出せないコードに変換されてしまう可能性があるため、その救済手段としてエンコードを指定して保存できるようなインタフェース(JeditXのような)を考えていたのですが、考えてみたらSmultronにも[テキストエンコーディング]メニューで編集中のドキュメントのエンコードを変更することはできるんですよね。あまり使ったことがないので今回のためにソースを読んでみるまで気がつきませんでした。
で、まぁそんならやめちゃおうかとも考えたのですがそれも業腹なのでとりあえず [別名で保存...」時にはエンコードを指定できるよう修正することにしました。僕自身も気がつかなかったようにメニューでエンコードを変更するというSmultornオリジナルの実装はあまり一般的ではなくてどちらかといえば新規保存時にエンコードを指定するほうがUIとしては優れているのかな?
NSSavePanelのカスタマイズはカスタマイズ用のビューをセットするだけという単純なもので簡単です。エンコードを選択するポップアップを含んだビューを作成しそいつをsetAccessoryViewします。後はどこでやるかなんですが、Smultronではドキュメントクラスに「開く...」や「保存...」を実装しておらず、「ファイル」とか「編集」毎にメニューコントローラクラス作成し、これらをコントロールしていますのでそこらあたりで...

近日中に公開する予定です。
Smultron-3.5.1 + NKFCocoaの仕様検討中
年度末ドタバタしている中SmultronへのNKFCocoaを組み込み中です。迷っているのはUnicode変換表にない文字を含むファイルの扱い。一応、NKFCocoaによるエンコードの判定そのものは組み込んだのですが、Shift_JISを正しく判定することができているにも関わらず読み込めないファイルがいくつかあって収まりが悪い。
nkf-2.0.9リリース UTF-16の判定が....
実に久しぶりnkf-2.0.9にアップデートされました。このところNKFCocoaの開発をしていたこともあってちょくちょくチェックはしていたのですが、正直アップデートされるとは思っていなかったのでちょっとビツクリ。v2.0.8ではUTF-16がBOM付きのみの判定だったのでちょっと期待したのですがリリースノートを読む限りそのあたりは修正されていないようです。ど・こ・ろ・かむしろUTF-16の判定精度が...
ためしてみたところ、これまでできていたBOM付きのUTF-16もASCII判定に...さらに ISO-2022-jpも正しく認識されない場合があるみたいです。
NKFCocoa.Framework公開します
愛用のエディタSmultronのエンコーディング自動判定に手を入れはじめてからずいぶん時間が経ちますが、年末にフト「nkf使えないかな?」って思い立ってNKFCocoaなるものを作成しました。名前どおりnkfのcocoaラッパーです。Cocoaの開発では日本語関連のメソッドは相変わらずの状況なので、まあ多少の役には立つかなと思います。ベースはnkf-2.0.8です。
Smultronの場合だったら、いままでごちゃごちゃやっていたところを
NSError* error = nil;
encoding = [textData guessByNKF:&error];
if (error != nil)
{
NSAlert *theAlert = [NSAlert alertWithError:error];
[theAlert runModal];
encoding = 0;
}程度に集約できてすっきり。APIの詳細は、ドキュメントを参照してください。
ひとつだけショックだったのはnkfではBOMなしUTF-16の自動判定には対応していなかったですね。まあ、それ以外は概ねやりたいことはできました。お悩みの方、バグ含みですがよかったらお試しください。









最近のコメント
39 weeks 11 hours ago
47 weeks 6 days ago
48 weeks 14 hours ago
48 weeks 20 hours ago
49 weeks 2 days ago
49 weeks 2 days ago
50 weeks 1日 ago
50 weeks 3 days ago
51 weeks 2 days ago
51 weeks 2 days ago