[Mew-dist 11355] Re: auto refile to multiple folders with mew-refile-guess-by-alist

Yoshinari NOMURA nom at example.com
1999年 11月 17日 (水) 14:38:11 JST


乃村 @ y 切片上げ損ったかも。です。

On Wed, 17 Nov 1999 02:39:18 +0900,
	Tomohisa Yazaki <yazaki at example.com> said:

>   (setq mew-refile-guess-alist
>     '(("\\(To:\\|Cc:\\)"
>       ("mew-dist at example.com" . "+mailingList/mew,+inbox"))))

なるほど。これは想定していませんでした。

>   (setq mew-refile-guess-alist
>     '(("\\(To:\\|Cc:\\)"
>       ("mew-dist at example.com" . "+mailingList/mew")
>       ("mew-dist at example.com" . "+inbox"))))
> 
> という設定では、M-o の方でも両方のフォルダに refile してくれます。こっ
> ちの書き方を使うべきだってことはないですよね? 最初に挙げた方の書き方
> でも o ではちゃんと動いてますし。(もしかして偶然だったりして…) 

割と偶然です。guess は、`+mailingList/mew,+inbox' を意味的に 1つ
のフォルダだと思って提示しています。

しかし、`o' の場合は、ミニバッファの入力関数を一度系由するので、
そのおかげで ',' が 2つの folder の区切りだと解釈されます。
一方、`M-o' の場合は、そのプロセスがないので、literal に 
`+mailingList/mew,+inbox' という folder だと解釈されます。

がんばれば、

(setq mew-refile-guess-alist
      '(("\\(To:\\|Cc:\\)"
	 ("mew-dist at example.com" . ((t . "+mailingList/mew") (t . "+inbox"))))))

のように書けなくもないのですが。。info 読んで理解するのは難しい
ですね。その上、"mew-dist- at example.com" を 2回書いた方が分かりやすい。

> どちらにせよ、複雑な条件を記述したいときを考えると、1つの条件に対して
> 複数の行き先フォルダを対応づけるルールを書けた方がうれしいですよね。

確かにおっしゃる通りですね。mew-reilfe.el の 

(defun mew-refile-guess-by-alist ()
 (mew-refile-guess-by-alist1 mew-refile-guess-alist))

を以下のように置き換えるとうまくいきますか?

;; In short, I want to do :
;;   (apply 'append (mapcar '(lambda (x) (mew-split x ?,)) lst)))
;;
(defun mew-refile-guess-by-alist ()
  (let* ((lst (mew-refile-guess-by-alist1 mew-refile-guess-alist))
	 (tmp lst) next split)
    (while tmp
      (setq next (cdr tmp))
      (if (not (string-match "," (car tmp)))
	  ()
	(setq split (mew-split (car tmp) ?,))
	(setcar tmp (car split))
	(setcdr tmp (cdr split))
	(nconc  tmp next))
      (setq tmp next))
    (mew-uniq-list lst)
    ))

逆に mew-refile-guess-by-alist で "+xxx,+yyy" を "+xxx", "+yyy"
と解釈するように変更すると、不都合がある人はいないのか少し心配です。
"," の後に思わず " " を入れちゃいそうで恐いですが。
--
nom



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