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