[mew-dist 21358] Re: Delete duplicated messages
KOIE Hidetaka ( 鯉江英隆 )
hide at example.com
2002年 8月 1日 (木) 16:47:42 JST
Message-Id: <20020801.133716.50030938.kazu at example.com>
Date: Thu, 01 Aug 2002 13:37:16 +0900 (JST)
From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [mew-dist 21355] Re: Delete duplicated messages
| > 単に、後ろから見るようにすれば大抵オッケーのような気がします。
|
| それがいいですね。
|
| 前からモードと、後ろからモードを用意して、付けるマークも選べればよいの
| では?
こんなんでどうでしょう。
--
KOIE Hidetaka 鯉江英隆 <hide at example.com>
-------------- next part --------------
(defun mew-summary-hash-size (beg end)
"Get obarray hashsize"
(let ((size (mew-count-lines beg end)))
(cond
((<= size 211)
211)
((<= size 1511)
1511)
((<= size 7211)
7211)
(t
18211))))
(defvar mew-summary-delete-dups-direction 'backward)
(defvar mew-summary-delete-dups-primary-mark mew-mark-review)
(defvar mew-summary-delete-dups-others-mark mew-mark-delete)
(defun mew-summary-delete-dups (&optional arg)
"Put delete marks on the duplicased messages in Summary, Virtual or
Thread mode.
If called with '\\[universal-argument]', process in the region."
(interactive "P")
(mew-summary-not-in-queue
(mew-summary-not-in-draft
(save-excursion
(let ((pmark mew-summary-delete-dups-primary-mark)
(omark mew-summary-delete-dups-others-mark)
(pmarks 0)
(omarks 0)
(dir (if (eq mew-summary-delete-dups-direction 'forward)
1 -1))
beg end region my-id primary-id p ids cmp)
(cond
(arg
(setq region (mew-summary-get-region))
(setq beg (car region))
(setq end (cdr region)))
(t
(setq beg (point-min))
(setq end (point-max))))
(setq ids (make-vector (mew-summary-hash-size beg end) 0))
(cond
((eq mew-summary-delete-dups-direction 'forward)
(setq cmp '<)
(setq end (save-excursion
(goto-char end) (beginning-of-line) (point)))
(goto-char beg)
(beginning-of-line))
((eq mew-summary-delete-dups-direction 'backward)
(setq cmp '>=)
(goto-char end)
(end-of-line)
(setq end (save-excursion
(goto-char beg) (beginning-of-line) (point))))
(t
(error
"Value of mew-summary-delete-dups-direction is invalid")))
(message "Marking duplications...")
(catch 'quit
(while (funcall cmp (point) end)
(when (and (mew-summary-message-number)
(not (mew-summary-marked-p)))
(setq my-id (mew-summary-my-id))
(when (> (length my-id) 0)
(setq primary-id (intern-soft my-id ids))
(if (null primary-id)
(set (intern my-id ids) (point))
(setq p (symbol-value primary-id))
(if (numberp p)
(save-excursion
(goto-char p)
(if pmark
(mew-mark-put-mark pmark 'no-msg))
(setq pmarks (1+ pmarks))
(set (intern my-id ids) t)))
(if omark
(mew-mark-put-mark omark 'no-msg))
(setq omarks (1+ omarks)))))
(if (not (= 0
(forward-line dir)))
(throw 'quit t))))
(if (= pmarks 0)
(message "Marking duplications...done (no duplications)")
(message "Marking duplications...done (dups: %d:%d)"
pmarks omarks)))))))
Mew-dist メーリングリストの案内