slang-pre2-r0
S-LangはJohn E. Davis氏が開発したインタープリタ言語として知られています。その一方でcursesライブラリの実装の一つとしても知られています。私のようなMutt使いにとってはcursesライブラリとしてのS-Langを利用しています。
S-Langの最新バージョンは1.4.9です。このバージョンでは正式には日本語を扱えませんが、SLANG_HAS_KANJI_SUPPORTの定義を有効にしてコンパイルすればEUC-JPの環境で日本語を扱うことができるようになります。日本語パッチ(slang-j)を当てることでも日本語を扱うことができるようになります。また、UTF-8もそのままでは扱えません。Edmund G. Evans氏のUTF-8パッチを当てることによりUTF-8を扱うことができます。以上で述べたのはcursesライブラリとしての側面です。
Davis氏は以前からS-Lang 2(以降slang-2と記す)でUTF-8に対応するぞとメーリングリストで発言していて、slang-2を開発中であるということも発言していました。しかし、開発中のコードを一般に公開してくれなかったので状況がわからない日々が続いていました。
昨日、Davis氏がslang-usersメーリングリストで次のURLのような投稿をしました。開発中のコードの公開の案内です。
http://www.jedsoft.org/pipermail/slang-users_jedsoft.org/2004/000088.html
早速、このスナップショットのコードを試してみました。Mutt使いの日本人の私としてはslang-2に対してパッチなしに日本語が正常に表示できることを期待しています。そのため、Mutt(mutt-1.5.6、パッチなし)で日本語を正しく表示できるかを確認しました。環境としてはLinuxディストリビューションのFedora Core 2です。
ロカールがja_JP.eucJPの場合では次の結果です。
- 日本語の表示はできる。
- 字が時々化ける。
slang-1の時と状況は変わりません。さらに、SLANG_HAS_KANJI_SUPPORTの定義を有効にしてコンパイルし直してみようとするとコンパイルに失敗します。状況は悪化しています。
ロカールがja_JP.utf8の場合では次の結果です。
- 日本語の表示はできる。
- 改行の位置がおかしい。
端末を80桁にしているのですが、80桁目ではなく80バイト目で改行をしています。つまり、文字の桁数とバイト数を取り違えています。
結果をまとめると、curses周りに関しては何ら状況は変わっていないということです。slangに対してパッチを書くか、slangを使うのをやめるかのどちらかを選択することになります。
ちなみに、Muttで扱えるcursesライブラリとしてはncursesもあります。ncurses-5.4で確認してみたら、時々字がずれて一文字消えてしまうことがありますが、ja_JP.eucJPおよびja_JP.eucJPの環境でほぼ正常に日本語の表示ができていました。