[migemo] migemo-get-patternのタイムアウト
URA Takefumi
hage at power.email.ne.jp
Sun Oct 10 22:56:38 JST 2004
はじめまして、浦といいます。
migemoはEmacsやw3mで便利に使わせて貰っています。
さて、本題です。末尾にパッチをつけましたが、このように直していただくこと
はできませんでしょうか。
実はEmacs上でmigemoを使うと1文字打つたびに10秒近く待たされるんです。もう
何年も前からこうでした。cmigemoを使ってみたところ一応解消したんで、その
まま使っていたんです。先日それを思い出し、原因を究明してみようかと思って
cvsからmigemoを持ってきて遊んでみました。
で、*scratch*で
(progn
(migemo-get-pattern "a")
(migemo-get-pattern "as")
(migemo-get-pattern "asa")
(migemo-get-pattern "asay")
(migemo-get-pattern "asaya")
(migemo-get-pattern "asayak")
(migemo-get-pattern "asayake"))
を評価してみると、migemoで待たされるのと同じような感じになりました。それ
ぞれのmigemo-get-patternの間に(wait-for 0 100)を入れるとほぼ瞬時に戻って
きます。そこで、migemo-get-patternをもう一度見てみるとwhileでループしな
がらmigemoからの結果を待ってる部分があって、そこでmigemo-get-patternをも
う一度よく見てみると
(accept-process-output migemo-process 0 5)
というのがありました。こいつの5を100に書き換えてみたところスカスカ動くよ
うになりました。
ならばここの値をmigemo.el本体を書き直すのではなくカスタマイズ可能にして
おけば~/.emacsで制御できるなあ、と思い以下のパッチを作ってみたんです。
私の環境はFreeBSDでして、migemoはportsから入れています。なのでmigemo.el
を書き換えるわけにはいかないんです(といいつつ書き換えちゃいましたけど)。
defcustomは見よう見まねですし、docstringも適当です。すみません。
Index: migemo.el.in
===================================================================
RCS file: /cvsroot/migemo/migemo/migemo.el.in,v
retrieving revision 1.4
diff -c -r1.4 migemo.el.in
*** migemo.el.in 6 Oct 2004 10:29:31 -0000 1.4
--- migemo.el.in 10 Oct 2004 13:08:23 -0000
***************
*** 134,139 ****
--- 134,144 ----
:group 'migemo
:type 'file)
+ (defcustom migemo-accept-process-output-timeout-msec 5
+ "*Timeout of migemo process communication."
+ :group 'migemo
+ :type 'integer)
+
(defconst migemo-mw32-input-method (and (featurep 'meadow) "MW32-IME")
"Support \"MW32-IME\" for Meadow.")
***************
*** 237,243 ****
(process-send-string migemo-process (concat word "\n"))
(while (not (and (> (point-max) 1)
(eq (char-after (1- (point-max))) ?\n)))
! (accept-process-output migemo-process 0 5))
(setq pattern (buffer-substring (point-min) (1- (point-max)))))
(when (and (memq system-type '(windows-nt OS/2 emx))
(> (length pattern) 1)
--- 242,248 ----
(process-send-string migemo-process (concat word "\n"))
(while (not (and (> (point-max) 1)
(eq (char-after (1- (point-max))) ?\n)))
! (accept-process-output migemo-process 0 migemo-accept-process-output-timeout-msec))
(setq pattern (buffer-substring (point-min) (1- (point-max)))))
(when (and (memq system-type '(windows-nt OS/2 emx))
(> (length pattern) 1)
--
浦 岳史 (うら たけふみ)
mailto:hage at power.email.ne.jp
Migemo メーリングリストの案内