[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00570] Re: FDclone 2.09 has been released
- Subject: [FDclone-users:00570] Re: FDclone 2.09 has been released
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 22 Aug 2006 17:16:43 +0900
しらいです。
In Message-Id <20060822081110.DE1CA40C601@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> 本日 fj.sources に FDclone 2.09 の patch を投稿しましたの
> でご案内申上げます。full package は以下の URL で順次公開され
> ていくと思います。
リリースが遅くなってすみませんでした。bug がなかなか取れな
かったのと、本業の方が忙しくてリリース作業の時間がなかなか取
れなくて。今日はリリースのためにわざわざ休み取りました。
特に Cygwin 対応が今回かなり泣かされた部分で、もういい加減
振り回されるのにも飽きたので、そろそろサポート対象外にしたい
くらいです。その話はまた後述。
> 以下は HISTORY より今回の変更点の抜粋です。
今回、変更点が非常に多いので解説も膨大になってしまいますが、
以降しばしおつき合い下さい。
> 内部変数 IMEKEY, IMEBUFFER の追加。
今回の機能追加の一番の目玉になるかと思います。自前でかな漢
字変換エンジンを実装しました。余り賢くはないので長い文章の入
力には向かないと思いますが、無いよりはましということで。
特に root 権限のないレンタルサーバなんかだと、Wnn や Canna
等の server/client モデルで動作する IME が使えませんから、そ
ういう環境では重宝するかも知れません。
元々 command line の日本語入力には対応していましたが、かな
漢字変換は uum 等の外部 IME に頼らざるを得なかったので、環境
によっては日本語を扱えないことも多かったと思います。
例えば Zaurus なんかでも、何故か標準 IME がコンソールでは
使用不可なんで、折角日本語対応した vim 載せてるのに日本語編
集することは出来なかったんですよね。
license がよく判らなかったんで既存の辞書は使わず単漢字辞書
を同梱してるんですが、pubdic とか Wnn とか Canna とか SJ3 と
かの辞書も使えるので、ちゃんと日本語入力したい人はそれを使っ
て build して下さい。
試しに pubdic+ を使ってみたら、compile 後の辞書が 1MB 越え
ちゃったので、binary 頒布する場合は標準添付辞書にしておいた
方が無難かも知れませんね。
この場合、辞書だけ別パッケージで頒布という手もあります。品
詞情報は辞書ファイルに一緒に持ってるので、辞書を差替えるだけ
で単文節変換に対応します。
尚、IMEBUFFER の有効性ですが、実際に使ってみて遅さが気にな
るようなら指定するという方針で使ってみて下さい。多分、最近の
CPU や HDD 環境だと必要ないと思います。
pubdic+ に gerodic とか私家版補遺とかごてごてに追加して、
更に MMX-P5 辺りの骨董 CPU で試してみて、変換に数秒かかるこ
とがあるという程度なので、気にしなければ不要でしょう。
因みに連文節変換には非対応です。parser が複雑になるという
事情だけでなく、連文節変換の場合 interface がより複雑になる
ので、あまりややこしいのや重たいのは避けたかったんです。
一応、使用頻度による学習機能も持っていますが、重み付けが適
切でないのか、余り学習効果が現れないようです。
> 内部変数 BASICCUSTOM の追加。
[FDclone-users:00530] で予告していたカスタマイザ画面の軽量
化です。FDclone で扱う変数が多くなり過ぎたんで、表示を最小限
に減らしてみました。
尤も、初期値は「制限しない」なので、変数の羅列がうるさくて
困っている人が敢えて設定すると初めて意味を持つことになってい
ます。
> 内部変数 PROGRESSBAR, PRECOPYMENU の追加。
関西では「イラチ」と呼ぶんですが、ファイルのコピーや移動の
処理時間を待ち切れない人が少なくないようですね。そういった人
向けの対応です。
前者は進捗度を視覚的に表示するオプションです。Windows 辺り
では当たり前になってるんですけど、私はこういうの嫌いなんです
よ。そんな表示してる暇があったら本来の処理に専念して貰った方
がよっぽど早く完了する筈なので。
後者は「今頃になって聞くな」という声に対する対処です。アク
セス権や同名ファイルの存在によって通常の処理が遂行し切れない
場合にどうするかを、前もって聞いておいてくれます。
まぁ、イラチじゃない人はこんな設定無視して普通に使って下さ
い。
> 内部変数 SAVEDIRHIST, DIRHISTFILE の追加。
どうして command 履歴は保存出来るのに directory 履歴は保存
出来ないのかという問題は、実は 1.xx の頃から良く出て来た話題
ではありました。
私自身必要性を感じなかったのでこれまで実装して来なかった訳
ですが、まぁいつまでも頑なに要望を拒み続ける理由もないので、
今回晴れて実装に至りました。
それぞれ SAVEHIST と HISTFILE に対応します。DIRHISTFILE の
既定値は「なし」なので、何か適当な名前をあてがってやって下さ
い。
> 内部変数 FUNCLAYOUT の追加。
そもそも本家『FD』のファンクションキー表示は、MS-DOS と
いう端末が固定の環境だったから意味のあったもので、UNIX のよ
うに端末が可変の環境では余り意味がない筈なんですよね。
なので、5x2 だろうが 4x3 だろうがどういうレイアウトで表示
したって大勢に影響しないし、そもそもが飾りに過ぎないものだと
思ってた訳です。MS-DOS みたいな Shift 押下検知も無理だし。
しかし、PC-UNIX が当たり前になって逆に PC-9801 なんてどこ
にも見当たらなくなって来ると、5x2 のレイアウトってむしろ奇異
な存在になって来て、じゃあどうしましょうということでレイアウ
トを可変にしてみました。
まぁ見た目が変わるだけなので好きに設定してみて下さい。但し、
F21 以上は termcap/terminfo 的に存在しないので表示不能です。
> 内部変数 MESSAGELANG の追加。
[FDclone-users:00552] で要望のあった機能の追加です。locale
から LC_MESSAGES の値をそのまま拾って来ようかとも思ったんで
すが、これまでの体系と親和性が良くないので変数での対応とし、
変数名も独自の名称にしました。
将来的には M18N 対応用に使ってもいいかも知れませんが、現状
では英語のみの対応です。
因みに英語を表す文字列ですが、従来は「eng」又は「C」でした
が、LANG 等の locale 文字列をそのまんま用いることの出来るよ
うに、「en」「C」「POSIX」としてあります。
文字列「eng」を指定した場合も部分文字列に「en」を含みます
ので、従来仕様の上位互換にもなっている筈です。
まぁ細かいことを言うと「en」と「C」「POSIX」とは別物ではあ
るんですが、現実的には、少なくとも LC_MESSAGES では同じもの
として扱って問題ないということで。
> 内部変数 LANGUAGE 等の設定値に UTF8-iconv の追加。
従来の「UTF8」って、MS mapping に基づく encoding なんで、
それ以外の mapping を使っている Mac OS X とか Fedora Core と
かの UTF-8 とは互換性がありませんでした。
Mac OS X 用には以前から「UTF8-mac」という encoding で対応
してましたが、Fedora の場合は iconv 由来の mapping なので、
「UTF8」でも「UTF8-mac」でも対応出来ませんでした。
と言っても MS mapping と iconv mapping との違いは僅かに 6
文字なんですけどね。
まぁこういうことになった元凶はそもそも UNICODE の設計の甘
さにある訳で、ああいう実際の利用者を無視した規格はあんまし普
及して欲しくないというのが本音のところですが ;-p
> 内部変数 UTF8ICONVPATH の追加。
> %JI マクロの追加。
「UTF8-iconv」encoding の展開を、他の箇所でも行なっておき
ました。
> 内部変数 SORTTYPE にアーカイブブラウザのソート保存機能を追加。
SORTTYPE >= 100 の場合には、一回ソートしたら以降もずっとそ
のソート順が保持される仕様なのですが、どうしてこれが archive
browser を起動した途端に reset されるのかというお話。
私は、UNIX の directory entry は「ソートして表示するのが標
準」と思ってるので SORTTYPE >= 100 な挙動も自然に見えますけ
ど、archive entry は「作成時の並び順に表示するのが標準」だと
思ってるので、archive browser では reset される方が自然に見
えるんです。
でもまぁ希望者も少なくないようなので、SORTTYPE >= 200 の時
には archive browser の中でも直前のソート型を継承するように
しておきました。
> 内部変数 ANSIPALETTE に実行ファイルの配色を追加。
本家『FD』でも実行ファイルの色指定なんて無かったので不要
かと思ってたんですが、colored-ls が実行ファイルに色をつけて
るんですね。
そんなところからの要望なんだと思いますが、特に実装が面倒な
訳でもないのでリクエストに応じました。ANSIPALETTE の桁数が一
桁増えてますので、配色を変えてる人は気をつけて下さい。
11 桁もあって何がどの色だか判りにくいので、カスタマイザで
設定する方が判り易いかも知れません。2.08e での変更はこの機能
の布石だったという訳でした。
> 組込みコマンド setroman, printroman の追加。
日本語入力では、かな漢字変換の前に普通はローマ字かな変換が
必要になるんですが、ローマ字の規則って結構ローカルルールが多
くて、個人の好みでカスタマイズしたい人が多いようですね。
まぁ慣れなんでしょうけど、ユーザ辞書を登録出来ない分、ロー
マ字くらいは自由に設定させたげましょうということで、好きに設
定して下さい。
変換後の文字列として平仮名しか登録出来ない訳でもないので、
各種記号とか良く使う熟語とか、色々ローマ字変換ルールとして登
録しておくと便利だと思います。
> 組込みコマンド bind が F20 までコメント指定可能に。
ファンクション行の 10 個制限が無くなったので、20 個までは
設定出来るようにしました。
> 疑似端末メニューに漢字入力を追加。
折角なので、かな漢字入力を PTY 経由でも使えるようにしまし
た。uum みたいなことが出来るようになります。
これを使って日本語入力が可能かどうかは、PTY の先で起動した
アプリ依存ですが、最近は 8bits thru でないアプリは減ってきて
るので、大概は使えそうな気がします。
勿論、mule のように IME と連動しているアプリはそっちを使っ
て貰ったらいいんだと思いますけどね。
因みに、uum と違って PTY 制御と process 制御を全部 FDclone
で行なっているので、uum よりも PTY 側のアプリを選ばないとい
う特長があります。
uum の実装を良くは知らないのですが、PTY 側の process 制御
は shell を介して行なうしかないので、例えば特定の signal が
PTY 側のアプリに届かなかったりということもあったそうです。
FDclone の場合、PTY 側で process 制御しているのも自分自身
なので、その仕様がどうなっているかを完全に把握することが可能
で、その分 PTY 側のアプリとの親和性が高くなります。
尤も、bug がなければの話ですけどね ;-p
> 疑似端末メニューの文字コード入力で漢字コードに対応。
ASCII 文字なら \106 とか \104 とかいった風に ASCII コード
で入力可能なんですが、同じことを漢字でも出来れば便利かなと思
って実装してみました。
最初はかな漢字変換なんて考えてなくて、このコード変換で十分
だろうと思ってました。debug 用に日本語ファイル名をちょこっと
作る程度なら、コード入力で十分ですから。
対応しているコード体系ですが、JIS コードや EUC の他に区点
コードなんてものもあります。区点コードを載せてる漢字辞典なん
てのも結構あったんですが、最近は使わないですかねー。
> PTYMODE=1 時に Cygwin でフリーズしていた点を修正。
Cygwin の PTY 実装は癖があって、普通の UNIX で通用する手段
をそのまま適用したのでは色々と不都合があるようです。
具体的には、用意した PTY を一旦閉じてから fork() してしま
うと、別の process がその PTY を開いたままで待機していたとし
ても、その PTY を再度開いても使えなくなってしまいます。
どういう理屈かは良く判らないのですが、Cygwin は fork() 時
に端末周りの設定を色々変更してしまうようですね。そもそもが疑
似的な fork() なので仕方ないのかも知れません。
FDclone の実装では backend process が全ての PTY の master
を制御しており、一つでも PTY が使用中の間は全ての window 用
の PTY master を開いたままで待機しています。
新たに PTY を使用する際は、その window 用に開いてある PTY
master に対応する PTY slave を開いて使うのですが、子 process
にしか必要のない代物なので fork() してから初めて開くようにし
ています。
この実装だと、fork() してから新たに開いた PTY slave が使用
不能になってしまうんですね。
この結果、Cygwin では PTYMODE=1 にして PTY を使うとフリー
ズしてしまっていましたので、PTY を閉じるタイミングを調整して
この問題を解消しました。
更に、Cygwin では PTY を強制的に閉じられた時に SIGHUP が飛
ばないようですね。一体 SIGHUP は何のためにあるんだか。
このせいで、強制終了時に親から順番に明示的に SIGHUP を送っ
てやる必要があります。一応そういう実装を組込みましたが、これ
は結構面倒な話なのです。
FDclone が直接起動していない process まで含めて SIGHUP を
どこまで伝達出来るかは process 次第なので、モノによっては生
き残ってしまいます。X や screen ではどう対応してるんでしょ。
以前はこんなことなかったと思うので、Cygwin 側で何らかの仕
様変更があったんだと思いますが、Cygwin はこういう致命的な変
更が何の前触れもなく突然出て来るので困りものです。
Cygwin って、そもそも UNIX や Linux 向けソースを、そのまま
compile して使える環境が目標だったように思うんですが、最近は
互換性を損なう変更がちょくちょく入ってしまって、Cygwin 固有
のコードがどんどん増えていってしまいます。
これ以上この傾向が続くようなら、Cygwin はサポート対象から
外してしまおうかとも考えているんですが、どうでしょうかね?
> ログ出力指定時に異常終了することがある点を修正。
[FDclone-users:00547] で報告した bug に関する修正です。ご
迷惑おかけしました。
> UTF8 のファイル名が扱えない点を修正。
[FDclone-users:00548] で報告のあった bug に関する修正です。
度重なりご迷惑おかけしました。
> UNICODEBUFFER=1 時に UTF8 環境で異常終了する点を修正。
[FDclone-users:00554] で報告のあった bug に関する修正です。
状況が複雑に絡み合っていたようですが、最終的には完全 fix 出
来たと思います。
しらい たかし