[Mew-dist 2146] Re: refile

Yoshinari NOMURA nom at example.com
1997年 9月 19日 (金) 21:19:32 JST


乃村 @mew.org です。

On Thu, 18 Sep 1997 18:42:53 +0900,
	Yamashita Yuzo <you at example.com> said:

>     To: 誰か
>     From: 自分
> 
> であるメッセージ(つまりは Bcc や Dcc で控えをとったメッセージ)
> を mew-summary-refile するとき、たとえ、
> 
>     +from/誰か
> 
> というフォルダがあっても、refile の仕様により from は無視され
> るので、
> 
>     +from/自分
> 
> になってしまいますよね。これ、前者に refile して欲しいことがほ
> とんどなのは、私だけでしょうか?

実は、以前もそういう提案をいただいて、昔は実装してました。From:
が自分だったら、To: foo の方を使って +from/foo を guess するとい
う仕様でした。

mew-refile を全面的に書き直したときに、「誰も気付きゃしないか」
と思って止めてしまいました。別関数で復活させましょうか。

mew-refile.el 0.57 -> 0.58 のパッチを以下に付けます。

変更点:
        1. 佐藤@東邦大さんの [Mew-dist 2142] パッチの反映。

        2. mew-refile-guess-by-from2 (ただし Undocumented) の追
           加。From: が自分だったら、To: foo の方を使って
           +from/fooを guess するという仕様です。
           mew-refile-guess-control に適宜追加して下さい。

           ただし、To: Cc: に一杯アドレスがあった場合は、
           +from/xxx がマッチするだけ全部 guess します。
           (+from/xxx が存在しなければ当然 guess しません)
--
nom

-------------- next part --------------
--- mew-refile.el.orig	Thu Sep 18 10:30:23 1997
+++ mew-refile.el	Fri Sep 19 21:06:09 1997
@@ -8,10 +8,10 @@
 ;;; Author:  Yoshinari NOMURA <nom at example.com>
 ;;;          Kazu Yamamoto <Kazu at example.com>
 ;;; Created: Jun 11, 1994
-;;; Revised: Sep 18, 1997
+;;; Revised: Sep 19, 1997
 ;;;
 
-(defconst mew-refile-version "mew-refile.el version 0.57")
+(defconst mew-refile-version "mew-refile.el version 0.58")
 
 (require 'mew)
 
@@ -232,24 +232,48 @@
 ;
 ; by from returns: guess1
 ;
-(defun mew-refile-guess-by-from ()
-  (let ((from (or (mew-header-get-address "From:") "")) default)
+(defun mew-refile-guess-by-from (&optional addr)
+  (let ((from (or addr (mew-header-get-address "From:") "")) default)
     ; load alist if not
     (if (not mew-refile-from-alist)
 	(setq mew-refile-from-alist
 	      (mew-refile-alist-load mew-refile-from-file-name)))
     ; search from alist
-    (setq default (mew-refile-guess-by-default))
+    (setq default (mew-refile-guess-by-default from))
     (if (file-exists-p (mew-expand-folder default))
 	default
       (cdr (assoc from mew-refile-from-alist)))
     ))
 
 ;
+; by To: or Cc: when From: is mine. (Undocumented)
+;
+(defun mew-refile-guess-by-from2 ()
+  (let ((to-cc (mew-header-address-collect '("To:" "Cc:" "Apparently-To:")))
+	(from  (mew-header-get-address "From:"))
+	ret return)
+    (if (catch 'my-addr
+	  (mapcar (lambda (a)
+		    (if (string-match a from)
+			(throw 'my-addr t)))
+		  (append 
+		   (list (concat "^" (regexp-quote (user-login-name)) "$")
+			 (concat "^" mew-mail-address "$"))
+		   mew-mail-address-list))
+	  nil)
+	(progn
+	  (while to-cc
+	    (if (setq ret (mew-refile-guess-by-from (car to-cc)))
+		(setq return (append return (list ret))))
+	    (setq to-cc (cdr to-cc)))
+	  (mew-refile-list-uniq return))
+      ())))
+
+;
 ; by default returns: guess1
 ;
-(defun mew-refile-guess-by-default ()
-  (let ((from (or (mew-header-get-address "From:") "")))
+(defun mew-refile-guess-by-default (&optional addr)
+  (let ((from (or addr (mew-header-get-address "From:") "")))
     (if (and mew-folders-default-folder
 	     (not (equal "" mew-folders-default-folder)))
 	(concat (file-name-as-directory mew-folders-default-folder)
@@ -579,7 +603,8 @@
 
 (defun mew-summary-auto-refile ()
   (interactive)
-  (let ((mew-analysis nil) 
+  (if (equal major-mode 'mew-summary-mode)
+      (progn (let ((mew-analysis nil) 
 	(lines (count-lines (point-min) (point-max)))
 	(line 1))
     (message "Auto refiling ...")
@@ -592,6 +617,8 @@
 		 (/ (* 100 line) lines))
 	(setq line (1+ line)))
       (message "Auto refileing ... done"))))
+    (progn (message "only summary buffer can use mew-summary-auto-refile!")
+	   )))
 
 ;;
 ;; "mx" extension


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