[Mew-dist 10546] Re: one more IMAP support.

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 9月 1日 (水) 13:57:33 JST


From: Masaki SHIGEMORI <shige at example.com> さん曰く
Subject: [Mew-dist 10544] Re: one more IMAP support.
Message-ID: <37CCA15B204.425ASHIGE at example.com>
Date: Wed, 1 Sep 1999 12:45:36 +0900

shirai> IMAP(nntp)で、折角 mew-temp-dir の下に message のコピーを作る機
shirai> 能を入れたので、すべて、そのコピーを基準に動作するようにしました。
shirai> 
shirai> # 一回読んだ message は server に取りに行かなくて済みます。:-)

重森> すばらしいです! 
重森> やっぱり IMAP は caching しないと ;-)

喜んでいただけて幸いです。

重森> が、^^;
重森> ちょっと気になるのは、summary で 'n' とかで新しいメッセージを読むと
重森> Caching a message ... done となった後カーソルが 'n' する前の位置に戻っ
重森> てしまうということです。

重森さんの文面通りの現象は発生しませんでした。
これって、caching しているときにカーソルが(次の message とかに)
バタツクという話でしょうか? もしそうならあきらめています。:-p

重森> (環境は、Mew 1.94pre2 + 白井さんのパッチ + IM126 です。)

ごめんなさい。一か所、虫さんがいました。パッチをつけておきます。

重森> それから、cache 先は /tmp でなく ~/Mail/@imapserver#user/ のなかの対応
重森> フォルダの中にして、Mew が終わっても削除しないというほうが良い気がする
重森> のですが、いかがでしょうか。そうしないと IMAP4 の、POP3 の上位互換と
重森> して使える、という謳い文句通りになりませんし ^^;

最初にこちらを考えたのですが、cache した message の正当性(*1) の
判定がわからないため、あきらめました。

(*1) 例えば、%#mh/ な folder で他から pack や refile をした、と
 か。このあたりの判定方法が考え付きませんでした。


重森> IMAP⊃POP という謳い文句通りにするには、あと、
重森>     1) inc の際に指定した IMAP フォルダの内容を(本文を含め)
重森>        とってきて cache できるようにする
重森>     2) summary で 's' したときにメッセージ本文も 
重森>        cache できるようにする

う〜ん、やっぱり cache するのって時間がかかるから自動的にやるの
はいやだなぁ。パッチにはしませんが、こんなのではどうでしょうか?

summary で "G" を押すと、全部の message、"C-uG" だと region 内の
message を cache します。region-end がちょっとずれるような気もす
るのですが。。。


;; ----------- IMAP(nntp) messages cache support ----------
(add-hook 'mew-summary-mode-hook
	  '(lambda ()
	     (define-key mew-summary-mode-map "G" 'mew-summary-remote-get)))

(defun mew-summary-remote-get (&optional arg)
  "Get remote messages to local."
  (interactive "P")
  (if arg
      (mew-summary-remote-get-region (region-beginning) (region-end))
    (mew-summary-remote-get-region (point-min) (point-max))))

(defun mew-summary-remote-get-region (beg end)
  (interactive "r")
  (mew-summary-only
   (save-excursion
     (let ((regex "^[ ]*\\([1-9][0-9]*\\)")
	   (fld (mew-summary-folder-name))
	   msgs)
       (if (not (mew-folder-remotep fld))
	   (message "Can't execute here.")
	 (goto-char beg)
	 (while (re-search-forward regex end t)
	   (setq msgs (cons (mew-match 1) msgs)))
	 (if (null msgs)
	     (message "No message caching.")
	   (setq msgs (nreverse msgs))
	   (message "Caching all messages ... ")
	   (mapcar (function
		    (lambda (msg)
		      (mew-summary-im-start
		       mew-prog-imcat fld nil msg nil nil mew-cs-text-for-read 'noinsert)))
		   msgs)
	   (message "Caching all messages ... done")))))))
;; ----------- IMAP(nntp) messages cache support ----------


重森> # 「気がする」というのが多いのは、自分自身がまだ興味本位でしか IMAP 
重森> # を使っていないからです ^^;;

"興味本位" っていうのは私も一緒です。全然、実用的には IMAP を使っ
ていませんから。というわけで、私からも

重森> # 実用なさっている方の意見はいかがでしょうか?

どうでしょうか? ^^;;;
-------------- next part --------------
--- mew-func.el.orig	Wed Sep  1 09:09:52 1999
+++ mew-func.el	Wed Sep  1 13:28:27 1999
@@ -404,7 +404,7 @@
   "Delete cached messages for remote FOLDER."
   (let (dir files file)
     (if (mew-folder-newsp folder)
-	(setq dir (expand-file-name subdir mew-temp-dir))
+	(setq dir (expand-file-name (substring folder 1) mew-temp-dir))
       (setq dir (mew-imap-folder-dir folder mew-temp-dir)))
     (if (and (file-exists-p dir) (file-directory-p dir))
 	(progn
-------------- next part --------------

-- 
白井秀行 (mailto:shirai at example.com)


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