[mew-win32 4465] Re: MasterPW に C-g 連打で固まる

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
2008年 1月 15日 (火) 12:00:22 JST


山本です。

> (1) mew-rendezvous() で待っているとき C-g で抜けた場合の対処

このマクロなんですが、

+(defmacro mew-rendezvous (who &optional iquit)
   ;; Wait for the termination of WHO.
   ;; Emacs does not provide synchronize mechanism with
   ;; an asynchronous process. So, take this way. 
-  `(while ,who
-     (sit-for 0.1)
-     ;; accept-process-output or sleep-for is not enough
-     (discard-input)))
+  `(let ((inhibit-quit ,iquit))
+     (while ,who
+       (sit-for 0.1)
+       ;; accept-process-output or sleep-for is not enough
+       (discard-input)
+       (when (and inhibit-quit quit-flag)
+	 (setq ,who nil)))))

mew-ssh/ssl で
	(mew-rendezvous (null (mew-ssl-get-status pnm)))
としているために、setq できません。

やるとしたら、

(condition-case nil
    (mew-rendezvous mew-passwd-rendezvous)
  (quit (setq mew-passwd-rendezvous nil)))

ぐらいではないでしょうか?

そもそも、C-g したときに sentinel は呼ばれませんか?
呼ばれるなら、この処理は不要ですね?
sentinel で set-buffer しないだけで十分ですね?

試す環境がないので、試して頂けると嬉しいです。

--かず



Mew-win32 メーリングリストの案内