Kazuhiro's blog
ようこそ! Kazuhiro's blog
金曜日, 3月 29 2024 @ 03:03 午後 JST
   

よくわからない解説

Lookup

UbuntuのeblookでEBGの辞書がひけない話の続きです。 EBGに対して(だけかどうか不明ですが)、ウムラウトの入った文字を含む単語を検索しようとするとLookupが反応しなくなったそうです。 呼ばれもしないのにしゃしゃり出ていろいろ試していただいた結果、一応解決したようです。 途中、解決しなかったらどうしようかと思いましたが。

過程はコメント欄でのやり取りを見て頂くとして、結局Readlineとiconvのサポートを切る事でうまく動作するようになりました。今のところ一番あやしいのはReadlineサポートです。 (コメント欄ではiconvも切るように書きましたが、iconvでおかしくなっているのであればshell-modeでも症状が再現するはずなので、その可能性は低いと思っています。) 何故Readlineサポートが有効だとダメなのかは追求していません。

通常、Lookupから呼ばれたeblookはReadlineサポートを無効にしますが、Emacsがターミナル上で動作している場合などはReadlineサポートは有効のまま動作します。ちなみに、以下のようなコードで判定を行っています。

if (!isatty(fileno(stdin))) interactive_mode = 0;

今回はこの判定がおかしかったのかもしれませんがやっぱり追求していません。 とりあえず思いついた、eblookのReadlineサポートを無効にする手段は以下の通りです。

eblookのReadlineサポートを無効にしてビルドする

eblookを使うのがLookupからだけであればReadlineサポートは必要ありません。

eblook-1.6.1+media (とLookup 1.4+media)を使う。

eblook-1.6.1+mediaにはReadlineサポートを無効にするオプションがあります。

また、eblookにおける日本語の文字コードですが、Lookup 1.4.1のデフォルトでは常にeuc-jpになります。 ndeb-process-coding-systemのデフォルト値もUNIX環境ではeuc-jpになるはずです。 Lookup 1.3ではeblookの文字コードはeblookの自動判定に任せますから、環境変数の値等に依存しています。 その為、ndeb-process-coding-systemもそれに合わせる必要があります。

(追記) Lookup 1.4+mediaでも、Readlineを有効にした状態のeblookにiso-8859-1な文字列を送ると動作がおかしくなりました。 Readlineを無効にすると解消したので、やはりReadline機能が問題になっているようです。

タグ:eblook Lookup

トラックバック

このエントリのトラックバックURL: http://ikazuhiro.s206.xrea.com/trackback.php/20080312194144327

よくわからない解説 | 2 件のコメント | アカウントの作成
コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。
iconvも無効でないと動きませんでした
投稿者は: ゲストユーザ on 水曜日, 3月 19 2008 @ 08:25 午後 JST
先日、lookupの件でお世話になった者です。

readlineのみを無効にしてビルドしてみたところ、また同じ症状がでました。iconvも無効しなければならないようです。
試しにiconv無効、readline有効でビルドしてみたら、ubuntuでは動きました。

vine linuxでも試してみました。readlineのみ無効だと、ウムラウトありの単語が検索できない同じ症状になります。iconvのみ無効だと、lookupが起動しません。両方無効にすると、使えるようになりました。

今のところ、両方無効にするのが無難なようです。