[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: Meadowのプロセス名を変更するには



07/09/13 に TSURUDA Naoki<tsuruda.naoki@xxxxxxxxx> さんは書きました:
> > であれば、relay.el で目論見は達成できそうで、あとはmew からそれが呼ばれる
> > ように設定を正しく行えばよいはずです。
>
> mew-smtp.el を見ると open-network-stream を使用せずに自前の
> mew-open-network-stream を定義しているようです。

あぁなるほど。mew は make-network-process<f>を使ってるんですね。
relay.el でのadvice の設定は open-network-stream を対象にしていますので、
make-network-process<f> で接続するアプリケーションには通用しなかったわ
けですね。


> なので、mew-open-network-stream に対して以下の様に advice をしてみました。
> # 見よう見まねでやっているので、間違ってないか不安ですが...

mew-open-network-stream に advice をかける方法の変わりに以下のようにし
てみてはどうでしょうか。行なうのは mew-smtp.el のロード後に。とりあえず
試すなら、meadow 起動後、M-x mew して M-x load-library mew-smtp の後で
あれば確実かな。

(defalias 'mew-open-network-stream 'open-network-stream)

# この場合は open-network-stream へのadvice はするが
# mew-open-network-stream へのadvice は行なわない方法。

この状態でmew からメール送信を試してみる。


別案として:

実際におきてる問題としては、mew-smtp-process-send-string は今回のような
外部プロセスを使った接続は想定していないことが原因でしょう。
とういのも mew としては process-status が open になることを期待しますが、
relay.el で繋いだ場合は外部プロセスなので process-status は run
になります。そのため mew-smtp-process-send-string<f> で "SMTP timeout" と
いわれてしまうのでしょう。

なので mew-smtp.el に以下の修正をしたらうまく行くかも。
# この修正 + mew-open-network-stream に advice する、という方法

diff -r 65c095b3124d mew-smtp.el
--- a/mew-smtp.el	Thu Sep 13 16:44:36 2007 +0900
+++ b/mew-smtp.el	Thu Sep 13 16:45:58 2007 +0900
@@ -357,7 +357,7 @@
 (defun mew-smtp-process-send-string (pro &rest args)
   (let ((str (apply 'format args)))
     (mew-smtp-debug "=SEND=" str)
-    (if (and (processp pro) (eq (process-status pro) 'open))
+    (if (and (processp pro) (member (process-status pro) '(open run)))
 	(process-send-string pro (concat str mew-cs-eol))
       (message "SMTP time out"))))


P.S.

できれば smtp.el のように、接続関数をユーザ変数にしておいてもらえるとい
いのだがな > mew

-- 
Shun-ichi GOTO