[Mew-dist 13586] Re: b45

Shun-ichi GOTO gotoh at example.com
2000年 7月 10日 (月) 22:03:20 JST


>>>>> at Mon, 10 Jul 2000 20:31:35 +0900
>>>>> 新岡 == Kenichi Niioka (新岡賢一) <ken at example.com> said,


> 具体的にどうするかは、難しいところですが、アイディアとしては、
> minor-mode 表示の部分に "Running" と出ているところに表示するとか、
> なんてのはどうでしょうか。
> 
> "Running:2/10:60%" とか。

新岡> "Running: 2/10: 60%" なんて出るとありがたいです。

という事なので、試しに実装してみました。

Mew 1.95b45 + Meadow 1.13b1 でしか試していません。
mew-pop-filter に対する修正なので、ナニかあると厄介なので、
冒険者だけお楽しみ下さい。

POP で retr している最中だけ "Running:2/10:60%" などと出ます。
"10" は全部で 10 通取得しようとしている事を示し、
"2" は 現在2通目のメールを取得中である事を示し、
"60%" は2桁の数字で、その2通目のメールの何パーセントが完了したの
かを示します。

でかいファイルでないとパーセンテージの部分は楽しくないかも知れませんが、
案通目かがわかるのは、かなり安心できます。(^^;


--- 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.2
retrieving revision 1.4
diff -u -r1.2 -r1.4
--- mew-pop.el	2000/07/10 09:25:46	1.2
+++ mew-pop.el	2000/07/10 13:01:17	1.4
@@ -265,13 +265,37 @@
 	(set-buffer (get-buffer-create "*Mew debug*"))
 	(insert (format "\n<%s>\n%s\n" label string)))))
 
+(defun mew-set-summary-buffer-process-status (folder msg)
+  "Add infomational string MSG to summary buffer process status of Mew.
+Usually displayed as \" Running\" in minor mode indicator area.
+If string argument MSG is specfied, change as \" Running:xxx\".
+If MSG is nil, restore usual format."
+  (save-excursion
+    (set-buffer inbox)
+    (setq mew-summary-buffer-process-status
+	  (if (and msg (stringp msg))
+	      (concat " Running:" msg)
+	    " Running"))))
+
 (defun mew-pop-filter (process string)
   (let* ((pnm (process-name process))
 	 (status (mew-pop-get-status pnm))
+	 (cnt (mew-pop-get-cnt pnm))
+	 (msgs (mew-pop-get-messages pnm))
+	 (total (+ (length msgs) cnt))
+	 (size (cdr (car msgs)))
+	 (inbox (mew-pop-get-inbox pnm))
 	 (mulrep (mew-pop-fsm-reply status))
-	 stay next func)
+	 stay next func progress)
     (mew-pop-debug (upcase status) string)
     (mew-filter
+     ;; report (for debug)
+     (if (not (< cnt total))
+	 (setq progress nil)
+       (setq progress (format "%d/%d:%02d%%" (1+ cnt) total
+			      (/ (* (buffer-size) 100) 
+				 (string-to-number size)))))
+     (mew-set-summary-buffer-process-status inbox progress)
      ;; process's buffer
      (goto-char (point-max))
      (insert string)


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