[Mew-dist 13571] Re: b45

Shun-ichi GOTO gotoh at example.com
2000年 7月 9日 (日) 23:29:53 JST


>>>>> at Sat, 8 Jul 2000 20:32:57 +0900
>>>>> kazu == Kazu Yamamoto (山本和彦) <kazu at example.com> said,

kazu> だいぶん安全になった b45 をリリースします。

POP で取得したメッセージを補完するメッセージ番号を決める際に、毎回 
mew-folder-new-message を行なうと、巨大な+inboxを持つ人(私)は1メッセージ
取得のたびに時間がかかります。なのでpop-info の中に次のメッセージ番号を
保存しておくpatch を作りました。

ベクタを14 elements として 14 番目に next という数値要素を追加。
mew-pop-get-next(), mew-pop-set-next() マクロを追加。
mew-pop-command-dele() にてこれらを使用。

です。

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN
-------------- next part --------------
Index: mew-pop.el
===================================================================
RCS file: /Master/mew-1.95/mew-pop.el,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 mew-pop.el
--- mew-pop.el	2000/07/08 04:49:50	1.1.1.3
+++ mew-pop.el	2000/07/09 14:25:51
@@ -19,7 +19,7 @@
   (` (progn
        (if (or (not (intern-soft (, name)))
 	       (not (boundp (intern (, name)))))
-	   (set (intern (, name)) (make-vector 13 nil)))
+	   (set (intern (, name)) (make-vector 14 nil)))
        (symbol-value (intern-soft (, name))))))
 
 (defmacro mew-pop-get-status (name)
@@ -58,6 +58,8 @@
 (defmacro mew-pop-get-top (name)
   (` (aref (mew-pop-info (, name)) 12)))
 
+(defmacro mew-pop-get-next (name)
+  (` (aref (mew-pop-info (, name)) 13)))
 
 (defmacro mew-pop-set-status (name status)
   (` (aset (mew-pop-info (, name)) 0 (, status))))
@@ -95,6 +97,9 @@
 (defmacro mew-pop-set-top (name top)
   (` (aset (mew-pop-info (, name)) 12 (, top))))
 
+(defmacro mew-pop-set-next (name num)
+  (` (aset (mew-pop-info (, name)) 13 (, num))))
+
 ;;
 
 (defconst mew-pop-process-prefix "mew-pop-process-")
@@ -171,6 +176,7 @@
       (mew-pop-set-size pnm (mew-pop-size case))
       (mew-pop-set-delete pnm (mew-pop-delete case))
       (mew-pop-set-top pnm nil)
+      (mew-pop-set-next pnm nil)
       ;;
       (set-process-sentinel process 'mew-pop-sentinel)
       (set-process-filter process 'mew-pop-filter)
@@ -243,6 +249,7 @@
     (mew-pop-set-size pnm nil)
     (mew-pop-set-delete pnm nil)
     (mew-pop-set-top pnm nil)
+    (mew-pop-set-next pnm nil)
     (if (processp sshpro) (delete-process sshpro))
     (mew-pop-set-ssh-process pnm nil)
     (run-hooks 'mew-pop-flush-hook)))
@@ -448,6 +455,7 @@
 	 (msg (car msgs))
 	 (num (car msg))
 	 (truncated (mew-pop-get-top pnm))
+	 (next (mew-pop-get-next pnm))
 	 vec line file fnum)
     ;; deleting +OK
     (goto-char (point-min))
@@ -468,8 +476,14 @@
     (while (re-search-forward "^\\." nil t)
       (delete-char -1)
       (forward-line))
-    (setq file (mew-folder-new-message inbox))
-    (setq fnum (file-name-nondirectory file))
+    (if next
+	(setq fnum (number-to-string next)
+	      file (mew-expand-folder inbox fnum))
+      (setq file (mew-folder-new-message inbox)
+	    fnum (file-name-nondirectory file)
+	    next (string-to-number fnum)))
+    (setq next (1+ next))
+    (mew-pop-set-next pnm next)
     (mew-frwlet 
      mew-cs-dummy mew-cs-text-for-write
      (write-region (point-min) (point-max) file nil 'no-msg))


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