[mew-dist 20791] Re: Retrieving
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2002年 4月 19日 (金) 12:34:00 JST
From: b-fish at example.com さん曰く
Subject: [mew-dist 20788] Re: Retrieving
Message-ID: <20020418.225605.01365997.b-fish at example.com>
Date: Thu, 18 Apr 2002 22:56:05 +0900 (LMT)
> こちらは
> mew-pop-info-b-fish at example.com closed 256 *Mew* .....
> となっていました。
> こちらは
> <QUIT>
> +OK Pop server at xxx.xxx.or.jp signig off.
> で、終わっています。
やっぱり sentinel が上がってきていませんね。
そういえば、emacs-w3m 方面でも Mac OS X の人が、w3m の
start-process の sentinel が上がってこない、といわれていたので、
まだまだこれからなのでしょう、Emacs on Mac OS X。
> > sentinel が上がってこないと、Mew (というか elisp) からはどうしよ
> > うもないでしょう。
>
> ということで、Mew ではどうしようもない状態なのでしょうね ;_;
ということは、メールを送った後の smtp も 'closed で残っていたり
しますか?
> # ようやく、Win の呪縛から逃れられそうなので、何とかしたいので
> す .....
# う〜む
とってもアドホック、かつ、動くかどうか全然わからないのですが、
以下のコードを ~/.mew.el に仕込んでおくと、予想では (^^;) 3秒に
一回 process をチェックして、Mew が open-network-stream で作った
process が 'closed になっていたら、それぞれの sentinel のコード
を無理やり動かすようになると思います。
(defvar mew-force-delete-network-timer nil)
(unless mew-force-delete-network-timer
(setq mew-force-delete-network-timer
(run-at-time 10 3 'mew-force-delete-network)))
;; (cancel-timer mew-force-delete-network-timer)
(defun mew-force-delete-network ()
(let ((procs (process-list))
(event "[[FORCE DELETE]]")
proc type func)
(while (setq proc (car procs))
(when (and (string-match "^mew-\\(.+\\)-info-" (process-name proc))
(setq type (match-string 1 (process-name proc)))
(eq 'closed (process-status proc)))
(setq func (intern-soft (concat "mew-" type "-sentinel")))
(when (fboundp func)
(funcall func proc event)))
(setq procs (cdr procs)))))
*Mew debug* に
<POP SENTINEL>
[[FORCE DELETE]]
と出たら成功です。
# ま、真っ当に動いたらラッキーということで ^^;;;
--
白井秀行 (mailto:shirai at example.com)
-------------- next part --------------
おまけなのですが、こういうのもだめなんでしょうか?
<<SENTINEL>> が *TEST* buffer に入るかどうかです。
;; 直接 http server と話せる場合はこちら。
(let ((server "www.mew.org")
(port 80)
(url "index.html")
(buf (get-buffer-create "*TEST*"))
process)
(pop-to-buffer buf)
(erase-buffer)
(setq process (open-network-stream "TEST" buf server port))
(set-process-coding-system process 'undecided 'raw-text)
(set-process-sentinel process
(lambda (proc event)
(set-buffer (process-buffer proc))
(goto-char (point-max))
(insert "<<SENTINEL>>\n")))
(process-send-string process (format "GET %s\n" url)))
;; proxy 通さないとだめな場合はこちら。
(let ((proxy-server "proxy.foo.bar") ;; proxy server の設定
(proxy-port 8080) ;; proxy port の設定
(url "http://www.mew.org/index.html")
(buf (get-buffer-create "*TEST*"))
process)
(pop-to-buffer buf)
(erase-buffer)
(setq process (open-network-stream "TEST" buf proxy-server proxy-port))
(set-process-coding-system process 'undecided 'raw-text)
(set-process-sentinel process
(lambda (proc event)
(set-buffer (process-buffer proc))
(goto-char (point-max))
(insert "<<SENTINEL>>\n")))
(process-send-string process (format "GET %s HTTP/1.0\n\n" url)))
Mew-dist メーリングリストの案内