[Mew-dist 03828] Re: Mew 1.93b6: mew-config breaks out mew-config-list setting ?

SAKAI Kiyotaka ksakai at example.com
1998年 2月 18日 (水) 14:25:17 JST


>> In article <19980213192705D.matusita at example.com>, Makoto MATSUSHITA (まつしたまこと) <matusita at example.com> writes:

> もしも推論ルールとして

> 	(X (A . B) (...)) となっていたとして,A に nil を書くと
> 	「現時点で (X ...) の推論結果がまだ決定していない時」に match
> 	するような条件を書ける

> ようになれば(なんとなくよくわからないルールですが,気持としては条件文
> に else 節を書きたいということです),mew-refile-guess-alist の例を使うと:

>     (setq mew-refile-guess-alist
>           '((".*" 
>               (".*" . '(("To:"
>                           ("wide at example.com" . "+wide/wide")
>                           ("adam"      . "+labo/adam"))
>                         ("Newsgroups:"
>                           ("^nifty\\.\\([^ ]+\\)" . "+Nifty/\\1"))
>                         ("From:" 
>                           ("uucp" . "+adm/uucp")
>                           (".*"   . "+misc"))))
>               (nil . "+notmatch"))))

書式としては、

    (setq mew-refile-guess-alist
          '(("To:"
              ("wide at example.com" . "+wide/wide")
              ("adam"      . "+labo/adam"))
            ("Newsgroups:"
              ("^nifty\\.\\([^ ]+\\)" . "+Nifty/\\1"))
            ("From:" 
              ("uucp" . "+adm/uucp")
              (".*"   . "+misc"))
            (nil . "+notmatch")))

で充分じゃないですか?

この nil (その時点でマッチした値がないときに返すデフォルト値) と、
t (無条件に追加して返す値) をサポートするためのパッチです。
-- 
酒井 清隆 (E-mail: ksakai at example.com)


Index: mew-refile.el
===================================================================
RCS file: /home/cvsroot/mew-1.93b14/mew-refile.el,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 mew-refile.el
--- mew-refile.el	1998/02/17 08:41:09	1.1.1.1
+++ mew-refile.el	1998/02/18 05:13:48
@@ -134,25 +134,31 @@
   (mew-refile-guess-by-alist1 mew-refile-guess-alist))
 
 (defun mew-refile-guess-by-alist1 (alist)
-  (let (header sublist key val ret return)
+  (let (name header sublist key val ret return)
     (while alist
-      (setq header  (mew-header-get-value (car (car alist))))
+      (setq name (car (car alist)))
       (setq sublist (cdr (car alist)))
-      (if header
-	  (while sublist
-	    (setq ret nil)
-	    (setq key (car (car sublist)))
-	    (setq val (cdr (car sublist)))
-	    (if (and (stringp key) (string-match key header))
-		(cond
-		 ((stringp val)
-		  (setq ret (mew-refile-guess-by-alist2 key header val)))
-		 ((listp val)
-		  (setq ret (mew-refile-guess-by-alist1 val)))))
-	    (setq return (append return
-				 (or (and (listp ret) ret)
-				     (and ret (list ret)))))
-	    (setq sublist (cdr sublist))))
+      (cond ((eq name t)
+	     (setq return (append return (list sublist))))
+	    ((eq name nil)
+	     (or return (setq return (list sublist))))
+	    (t
+	     (setq header (mew-header-get-value name))
+	     (if header
+		 (while sublist
+		   (setq ret nil)
+		   (setq key (car (car sublist)))
+		   (setq val (cdr (car sublist)))
+		   (if (and (stringp key) (string-match key header))
+		       (cond
+			((stringp val)
+			 (setq ret (mew-refile-guess-by-alist2 key header val)))
+			((listp val)
+			 (setq ret (mew-refile-guess-by-alist1 val)))))
+		   (setq return (append return
+					(or (and (listp ret) ret)
+					    (and ret (list ret)))))
+		   (setq sublist (cdr sublist))))))
       (setq alist (cdr alist)))
     (mew-refile-list-uniq return)
     ))



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