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