[Mew-dist 03646] mew-summary-exec-region failed after 2nd time.

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


元木です。

リージョン指定をして、refile を行うと、二度目からは Summaryバッファは更新
されるものの、実際には refile に失敗して、そのままになっています。

refile情報を保存している mew-summary-buffer-refile が、一度 refile すると
すべてクリアされてしまうのが原因でした。これを修正しました。

この作業をしていて疑問に思ったのですが、関数によって region 指定が異なります。

・mew-summary-sort-region と mew-summary-search-mark-region では、
  マークをつけた行からカーソルのある行までが範囲になります。
  (注: mew-summary-search-mark-region は別メールで送ったパッチで定義)

・しかし、mew-summary-exec-region では、マークの位置やカーソルの現在位置が
  その行のどこにあるかによって、その行が region に含まれたり含まれなかったり
  します。(具体的には行頭にあった場合は一行上のメールまでしか実行されません)

仕様としては上の一番目の方が分かりやすいと思います。
mew-summary-mark-exec-region を少し変更するだけだったので、
こちらも同時に変更しました。引数の begin と end をセットし直しただけです。
-- 
━━━━━━━…………‥‥・・・ ・ ・・ .
  元木 顕弘 / 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-mark.el	Fri Jan 30 14:16:58 1998
+++ mew-mark.el	Wed Feb  4 07:37:44 1998
@@ -483,6 +483,13 @@
 (defun mew-summary-exec-region (beg end)
   (interactive "r")
   (message "Collecting marks ...")
+  (save-excursion
+    (goto-char beg)
+    (beginning-of-line)
+    (setq beg (point))
+    (goto-char end)
+    (end-of-line)
+    (setq end (point)))
   (condition-case nil
       (let* ((msgs (mew-summary-mark-collect mew-mark-refile beg end))
 	     (dels (mew-summary-mark-collect mew-mark-delete beg end))
@@ -530,7 +537,10 @@
 			  (setq refal (cons (append tmp (list msg))
 					    (delete tmp refal)))
 			(setq refal (cons (list folder msg) refal))
-			))))) ;; end of while
+			))))
+	      (setq mew-summary-buffer-refile
+		    (delete (assoc msg mew-summary-buffer-refile)
+			    mew-summary-buffer-refile))) ;; end of while
 	    ;;
 	    ;; refile at once
 	    ;;
@@ -538,7 +548,6 @@
 	      (mew-summary-exec-im
 	       mew-prog-immv src (car (car refal)) (cdr (car refal)))
 	      (setq refal (cdr refal)))
-	    (setq mew-summary-buffer-refile nil)
 	    ;;
 	    ;; delete at once
 	    ;;


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