Emacs 20.4 XIM対応化パッチ


何か

 Emacs 20.4でQ's Nicolatterを使えるようにするパッチです。

 最初,私も自分でパッチを書いていたのですが,井上さん <inoue@ainet.or.jp> が公開されているパッチの方が優れていたので,これを添付します。

 このパッチの最新版は以下のWebサイトから入手できます。

http://www.ainet.or.jp/~inoue/software/emacs-xim/

パッチの概要

 Emacs 20.4は最初からXIMのコードが含まれていますが,Xの実装によってはXlibとXtとで一つのイベントを二重に解釈することにより,無限ループに陥ることがあります。

 Emacs 20.4のイベントループは次のようになっています。

src/xterm.c: XTread_socket()
    XEvent event;
    {
        XtAppNextEvent(..., &event);
        XFilterEvent(&event, ...);      (1)
        switch (event.type)
        {
        case KeyPress:
            ...                         (2)
        }
        XtDispatchEvent(&event);        (3)
    }

 (1)でXlibがIMサーバーにキーイベントをforwardします。で,Q's NicolatterのようなIMサーバーがこれを適当に解釈して,Xlibに返信します。

 Emacsは(2)でその変換結果などをテキストに取り込みます。

 (3)で,Xの実装によっては再びIMサーバーにforwardしてしまいます。それに対するIMサーバーの返信は新しいイベントとして(1)で再びIMサーバーに送られます。そのため,無限ループに陥ることになります。

 このパッチはIMサーバーからの返信によるイベントをXtに回さないことでこの問題を回避します。


Copyright (c) 1998-1999 Hisashi HORIKAWA. All rights reserved.

Q's crafting attic (http://www2.airnet.ne.jp/pak04955/)