[Mew-dist 807] Re: Auto refile

Shunichi GOTO gotoh at example.com
1997年 4月 3日 (木) 17:59:59 JST


>>>>> From: 尾澤 稔 <ozawa at example.com>
ozawa> 皆さんはじめまして。

ozawa> 本題ですが、Mewには、リファイルの機能がついていますが、手作業でリファイルを
ozawa> するのが少々面倒です。
ozawa> mew-folder-alist にしたがってMew終了時等に自動で、リファイルしてくれる機能が
ozawa> あったら便利だと思い自分で作ってみましたが、少々遅いので、どなたかこんな機能
ozawa> を実現している方いませんか?

尾澤さんと、ほぼ同様の発想で作ったものがあります。
わたしはLisperではないので、かなりテキトーな実装ですが。(..)
まぁ、アイディアの足しになるかも知れないので、添付してみます。

内容は、単純に手で操作するのを代行する程度のものです。
既に'o'や'd'でマークしてあるものは無視(skip)するようにしてます。
推論は(どこにいくかわからないこともあるので)使わないで、
mew-guess-by-alist だけを使います。
したがって振り分けるものは先にalistに登録しておく必要があります。
で、1つずつ単純に進んで(next-line)いって同じことを繰り返します。
#やりようによっては、'*'にマークしてあるファイルのみを対象とする
#とかも可能だと思いますが。。。

実行はかなり遅いです。(^^;
1日分を整理するならば気合いを入れてから実行すべきかも。
キーは m y にあてて使ってます。

my-autorefile1 は、mew-refile.elの mew-summary-refileから
mew-guess-by-alistだけを使いたかったがために、抜きだして
使わせていただいてます。
もっともっともっとスマートにできることと思いますが、
必要に迫られて間に合わせに作り、まぁまぁうまく運用できているので、
「ま、いっか」でいまも使ってるというところでしょうか。(^^;

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN
     [Biz]  Phone: +81-3-3771-8171  FAX: +81-3-3773-1284
     [Home] Phone: 045-401-2120     DoCoMo: 080-68-05846
-------------- next part --------------
(defun my-auto-refile ()
  (interactive)
  (while (not (eobp))
    (let ((msg (mew-summary-message-number)))
      (save-excursion
	(if (my-auto-refile1)
	    (message (format "refiling msg %s " msg))
	  (message (format "skiping msg %s" msg)))))
    (next-line 1)))
    

(defun my-auto-refile1 ()
  (interactive)
  (if (eobp)
      (message "No message")
    (let (msg-buffer 
	  mark
	  (fld nil))
      (cond
       ((mew-summary-part-number)
	(re-search-backward mew-summary-message-regex nil t nil)
	(mew-summary-display))
       )
      (setq mark (mew-summary-get-mark))
      (if (or (null msg)
	      (equal mark mew-mark-refile)
	      (equal mark mew-mark-rmm))
	  () ;; nothing do
	(setq msg-buffer (or (mew-summary-display t)
			     (mew-buffer-message)))
	(save-excursion
	  (set-buffer msg-buffer)
	  (setq learn-info (mew-guess-by-alist)))
	(setq fld (car learn-info))
	(if (or (null (car learn-info))
		(not (eq (car (cdr learn-info)) 'mew-guess-by-alist)))
	    nil
	  (mew-summary-refile (list (car learn-info)))
	  (list (car learn-info)))
	))))
      





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