[mew-dist 21347] Re: Delete duplicated messages
KOIE Hidetaka ( 鯉江英隆 )
hide at example.com
2002年 8月 1日 (木) 10:58:02 JST
Message-Id: <20020731.125815.424263254.z1980163 at example.com>
Date: Wed, 31 Jul 2002 12:58:15 +0900 (JST)
From: Shun-ichi TAHARA (田原 俊一) <jado at example.com>
Subject: [mew-dist 21317] Delete duplicated messages
| # 複数のサーバに転送したメールをかき集めるので、結構重複が出るのです
複数の経路から同じメイルがとどくことが多いので重宝してます。
| ようは、Message-Id: が重複しているメッセージに D が付けばいいだけです
| ので、こんなのを仕立ててみました。ちなみに、Sylpheedには同じような機能
| が載っているようです。
|
| (define-key mew-summary-mode-map "\M-d" 'mew-summary-delete-duplicates)
|
| とかして、M-d x S RET O とかすると、一発で整理完了で最高です。
obarrayをつかって高速化しました。
--
KOIE Hidetaka 鯉江英隆 <hide at example.com>
-------------- next part --------------
(defun mew-summary-delete-duplicates (&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
(let (beg end region my-id size ids)
(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))))
;; mew-summary-thread-region in mew-threaed.el
(setq size (mew-count-lines beg end))
(cond
((<= size 211)
(setq size 211))
((<= size 1511)
(setq size 1511))
((<= size 7211)
(setq size 7211))
(t
(setq size 18211)))
(setq ids (make-vector size 0))
(message "Marking duplications...")
(save-excursion
(goto-char end)
(beginning-of-line)
(setq end (point))
(goto-char beg)
(beginning-of-line)
(while (< (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)
(when (intern-soft my-id ids)
(mew-mark-put-mark mew-mark-delete 'no-msg))
(intern my-id ids)))
(forward-line 1)))
(message "Marking duplications...done")))))
Mew-dist メーリングリストの案内