[Mew-dist 03645] region pick

Akihiro Motoki motoki at example.com
1998年 2月 4日 (水) 09:02:23 JST


元木です。

'?'(mew-summary-search-mark) を実行すると、条件にあったメールに '*'マーク
をつけることができますが、それを「指定した region 内のメール」に対して
できるようにしてみました。C-u ? とすると、region に対して検索します。
( ? としたときは今までと同じです)
# メールがたまってくると、全体に対してサーチをかけると遅くなりますよね。

region の指定についてですが、マークをつけた行から現在カーソルのある行まで
が範囲です。region でのソートと同じです。
-- 
━━━━━━━…………‥‥・・・ ・ ・・ .
  元木 顕弘 / Akihiro Motoki              ・
 E-mail: motoki at example.com         ・
  URL: http://www.hal.t.u-tokyo.ac.jp/~motoki/  ‘  ・・ ‥…━━☆
-------------- next part --------------
--- ../mew-1.93b12.orig/mew-pick.el	Sun Jan 25 21:05:29 1998
+++ mew-pick.el	Wed Feb  4 05:56:05 1998
@@ -34,10 +34,16 @@
       )
     ))
 
-(defun mew-summary-search-mark ()
+(defun mew-summary-search-mark (&optional arg)
   "Pick messages according to a pick pattern which you input, 
 then put the '*' mark onto them."
-  (interactive)
+  (interactive "P")
+  (if arg
+      (mew-summary-search-mark-region (region-beginning) (region-end))
+    (mew-summary-search-mark-region (point-min) (point-max))))
+  
+(defun mew-summary-search-mark-region (r1 r2)
+  (interactive "r")
   (if (equal (point-min) (point-max))
       (message "No messages in this buffer.")
     (let ((folder (buffer-name))
@@ -47,18 +53,23 @@
 	  (range nil))
       (setq pattern (mew-read-pick-pattern))
       (message "Picking messages in %s ..." folder)
-      (goto-char (point-min))
-      (setq first (mew-summary-message-number))
-      (goto-char (point-max))
-      (forward-line -1)
-      (setq last (mew-summary-message-number))
-      (setq range (mew-summary-pick folder pattern (concat first "-" last)))
+      (goto-char r1)
+      (if (eobp)
+	  () ;; r1 <= r2, so if r1 = (point-max) then no messages.
+	(setq first (mew-summary-message-number))
+	(goto-char r2)
+	(if (eobp)
+	    (progn
+	      (forward-line -1)
+	      (setq r2 (point))))
+	(setq last (mew-summary-message-number))
+	(setq range (mew-summary-pick folder pattern (concat first "-" last))))
       (message "Picking messages in %s ... done" folder)
       (if (null range)
-	  ()
+	  (message "No marked message.")
 	(message "Marking messages ... ")
-	(goto-char (point-min))
-	(while (not (eobp))
+	(goto-char r1)
+	(while (<= (point) r2)
 	  (if (and (null (mew-summary-marked-p))
 		   (mew-member-del (mew-summary-message-number) range))
 	      (mew-summary-mark-as mew-mark-review))


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