known problems						-*- outline -*-

* General problems

** 辞書が対応してない検索法が指定された場合、単純に無視している。

* Mule problems

** Mule 2.3 (based Emacs 19.34) で外字を用いると固まってしまうことがある。
これは Mule の current-column にバグがあるためで、外字を多く含む行で何か
しようとすると固まってしまう。特に本文整形処理のfill-region の途中で固ま
ることが多く、これは

これは Lookup のインストール後に 
lookup-vse.elc というファイルを削除することで、ある程度は回避することが
出来る。しかし他の個所で固まるケースもあり、抜本的な対策とはなっていない。

この問題の難しいところは、current-column がバイトコンパイル時に
インライン展開されてしまう(らしい)ことにある。例え current-column
を上書きするコードを後から書いても、プログラムをバイトコンパイル
してしまうとオリジナルの current-column が使われてしまう。上で
lookup-vse.elc というファイルを消すとうまくいくのも、そうすること
で lookup-vse.el に組み込まれた回避用のコードが働くためである。

この問題を完全に回避しようと思えば、Mule 本体のバグを潰してインス
トールをやり直すか、current-column と同等のしかも害のないコードを
用意して、その上で current-column を呼び出す全ての elc ファイルを
削除するしかない。しかしこれは、あまり妥当な対策とは言えない。

------------------------------------------------------------------------
--- indent.c~	Tue Feb 16 13:25:32 1999
+++ indent.c	Tue Feb 16 15:23:54 1999
@@ -518,11 +518,11 @@
 		  int bytes = char_bytes[(c = FETCH_CHAR (scan) - 0x20)];
 
 		  /* Check existence of trailing non ascii character.  */
-		  while (--bytes && scan < pos
+		  while (bytes-- && scan < pos
 			 && NONASCII_P (FETCH_CHAR (scan)))
 		    scan++;
 
-		  if (bytes)
+		  if (bytes != -1)
 		    /* Incomplete multibyte form.  */
 		    {
 		      scan = oldscan, width = 4;
------------------------------------------------------------------------

より現実的には、外字の数が少なければ問題が発生しないことを利用して、
外字置き換えを利用することで外字の数を減らしてしまうことが考えられ
る。実際、多くの外字置き換えを定義している『辞・典・盤97』の補助
パッケージを用いると、問題が起こらないということが報告されている。

結局、対策としてはユーザ側で次のようにするしかない。

 1. 自分の辞書に合わせた補助パッケージを用意する。
 2. ndeb であれば Appendix を設定する。
 3. Mule 2.3@19.28 や Emacs 20 などに乗り換える。
 4. 外字の利用を諦める。

* XEmacs problems

** XEmacs だとエントリ等のコラムがずれてしまう。
これは日本語のフォント幅が英字の二倍とは限らないため、column による
判定ではうまくいかないため。うまくやる方法はあるのだろうけど、よく
わからない。誰か教えて。

** XEmacs でリファレンスに含まれる外字の色が変わらない。
これは外字を画像として表示しているため、フォントの指定が効かないため。
画像をカラーにして誤魔化すことも可能かもしれないが、それよりは外字表示
の方法を抜本的に見直したい。

* Meadow problems

** ndeb や ndnmz の設定で辞書のディレクトリを指定する場合、パスの区切り
文字としてバックスラッシュ(`\')を用いると設定が上手くいかない場合がある。
これは Meadow の外部プログラム呼び出しのバグのようで、回避するには区切り
文字にスラッシュ(`/')を用いるか、あるいは次のように設定しておくとよい。

  (define-process-argument-editing
    "/eblook\\.exe\\'"          ;; Namazu の場合は "/namazu\\.exe\\'"
    (lambda (x) (general-process-argument-editing-function x nil t)))

** Lookup で外部プログラム(eblook など)を用いるように設定し、その後
Meadow を終了すると、Windows95 がハングすることがある。これは Meadow の
外部プロセスの扱いに問題が残されているためで、次のように設定しておけば
回避出来ることが多い。

  (if (fboundp 'orig:delete-process)
      nil
    (fset 'orig:delete-process (symbol-function 'delete-process))
    (defun delete-process (proc)
      (sit-for 1)
      (orig:delete-process proc)))
