メニュー |
ようこそ! Kazuhiro's blog
木曜日, 8月 28 2008 @ 11:26 午後 JST mkdirhierのバグ![]() imakeに入っているmkdirhierがCygwin環境では動作しない(事がある)というお話しです。 なんでいきなりimakeなのかというとFreePWINGにこのmkdirhierが入っているからです。 簡単に書くと、Cygwin環境でmkdirhierに絶対パスを引数として与えるとディレクトリの作成に失敗するというものです。 何故失敗するかというと、絶対パス名が与えられると先頭の'/'を'//'に変更してディレクトリを掘ろうとするためです。 以前からあった問題なのかは知りません。 UNIX環境では問題にならないようですが、Cygwin環境ではUNC名として解釈されるので予期しない動作を来します (大抵の場合はエラー)。 ちなみに、最近のmkdirには同等の動作をするオプション (-p) があるので、mkdirhierがなくてもあまり困らないかもしれません。 改造版のFreePWINGは修正しました。 タグ:FreePWING よくわからない解説![]() 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における日本語の文字コードですが、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機能が問題になっているようです。 Meadow でユニコードテキストをクリップボードとやり取りする![]() NTEmacsでは、selection-coding-systemがutf-16le-dosだったりすると、ユニコードテキストをコピー&ペーストで他のアプリとやり取りできるようになっています。 Meadowではクリップボードまわりは独自のルーチンを使っており、他のアプリとのユニコードテキストのやり取りは困難ですが、複数起動されたMeadow間でテキストのコピー&ペーストができるようになっているらしいです。 個人的にはNTEmacsの動作の方が(今となっては)便利そうなので、自分が使うMeadowはNTEmacsのルーチンを使うようにしました。 (2008/05/02 追記) Meadowのtrunkもそのようになりました。 タグ:Meadow eblookの文字コードについて![]() UbuntuのLookupでEBGの辞書がひけないという話があったのでちょっと調べた結果のメモ。 ただし確認できる環境がないので未確認です。 とりあえずEUC-JP以外の文字コードを設定した場合はEBGはひけなさそうな気がします。 eblookは起動後に(日本語の)入出力に使う文字コードを決定し、出力時には内部コード(EUC-JP)を変換し、入力時にはEUC-JPへと変換します。 EUC-JPが指定されている場合は変換処理を行いません。 が、この文字コード変換処理はEBGの書籍を選択した時にも内部コードをEUC-JPとみなしたまま行われているような気がします。 これを回避するにはeblookをEUC-JPで使い、変換処理を行わせないようにする必要があります。 パッケージのことは分かりませんが、Lookup 1.4.1の場合はndeb-program-argumentsがデフォルト値のままであれば
(setq ndeb-process-coding-system 'euc-jp)
で、EUC-JPで動きます。 Lookup 1.3で動いていたものがLookup 1.4.1で動かないという部分と、:codingオプションが効かないという部分はよくわかりませんでした。 Lookup 1.3と1.4.1の間では、eblookの起動時にeuc-jpを使用するようになったくらいで、それ以外の文字コードの扱いは、:codingオプションも含めて変わっていないはずです (eblook側は追っかけてません)。 ですので、上記のようにEUC-JPでeblookを使うようにし、エージェントオプションとして:codingを指定すればよさそうな気がするのですが。 (更にバグっぽい動きも見つけてしまったので)本当はeblookを変更すべきですが、自分のところでは動作の確認が全くできないうえに、EBXA-Cについても視野に入れると大きな変更になりそうなのでちょっと手を出しにくいです。 |
このサイトについてEmacs 上で動作する辞書検索インターフェイスであるLookupの改造版の配布(のミラー)等を行っているサイトです。 現在はテスト運用中です。 written by Kazuhiro Ito 新着情報記事-コメント 最近 2 日-トラックバック 最近 2 日- |
| Copyright © 2008 Kazuhiro's blog 本ページのすべての商標と著作権はそれぞれの所有者に帰属します。 |
Powered By Geeklog ページ作成時間: 0.19 秒 |