[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 メーリングリストの案内