[Mew-dist 03644] [mew-summary-sort] summary update when region sort

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


元木です。

mew-summary-sort を region 指定で実行した場合は、Summary バッファの更新も
ソートした部分だけでよいのではと思い、region の先頭から最後までを更新する
ように変更しました。

実際にはソートした部分以外も scan していますが、ML を番号順にソートする
場合などは、バッファの最後の方が対象になることが多いので効果はあるでしょう。
-- 
━━━━━━━…………‥‥・・・ ・ ・・ .
  元木 顕弘 / 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-sort.el	Sun Jan 25 21:05:33 1998
+++ mew-1.93b12/mew-sort.el	Wed Feb  4 05:02:11 1998
@@ -24,7 +24,7 @@
 (defvar mew-sort-modes '("date" "num" "text" "ml"))
 (defvar mew-summary-sort-last-field "date")
 
-(defun mew-summary-sort-subr (msgs &optional method)
+(defun mew-summary-sort-subr (msgs &optional method rbeg)
   (let* ((folder (buffer-name)) (field) (mode)
 	 (msgs (if (listp msgs) msgs (list msgs)))
 	 (completion-ignore-case t)
@@ -56,7 +56,8 @@
 	     (append mew-prog-im-arg msgs)) ;; xxx
       (message "Sorting %s by %s ... done" folder field)
       (setq mew-summary-buffer-process nil)
-      (let ((buffer-read-only nil)) (erase-buffer));; for update
+      (let ((buffer-read-only nil))
+	(delete-region (or rbeg (point-min)) (point-max))) ;; for update
       (mew-summary-scan-body mew-prog-imls
 			     'mew-summary-mode
 			     folder
@@ -71,23 +72,25 @@
 
 (defun mew-summary-sort-region (r1 r2 &optional method)
   (interactive "r")
-  (let (from to)
+  (let (from to rbeg)
     (save-excursion
-      (goto-char r1)
+      (goto-char (min r1 r2))
       (setq from
 	    (or (mew-summary-message-number)
 		(progn
 		  (re-search-backward mew-summary-message-regex nil t nil)
 		  (mew-summary-message-number))))
-      (goto-char r2)
+      (goto-char (max r1 r2))
       (setq to
 	    (or (mew-summary-message-number)
 		(progn
 		  (re-search-backward mew-summary-message-regex nil t nil)
 		  (mew-summary-message-number))))
-      (if (< (string-to-int from) (string-to-int to))
-	  (mew-summary-sort-subr (concat from "-" to) method)
-	(mew-summary-sort-subr (concat to "-" from) method)))))
+      (goto-char (min r1 r2))
+      (beginning-of-line)
+      (setq rbeg (point)) ;; get region beginning point
+      (mew-summary-sort-subr (concat from "-" to) method rbeg)
+      )))
 
 (defun mew-summary-mark-sort (&optional r1 r2)
   (interactive)


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