[Mew-dist 07066] Re: mew-summary-refileの動作

Yoshinari NOMURA nom at example.com
1998年 12月 11日 (金) 13:46:31 JST


乃村です。

On Fri, 11 Dec 1998 04:01:25 +0900,
	Yasushi Shoji <yashi at example.com> said:

> 今日、誤って .emacsの mew-refile-guess-alist 所に
> '(("Sender:" ("hoge" . " +hoge")))

同様に '+' を忘れてもエラーになっていたと思います。

> summary-refileの引数が nil t と言うことは
> exp-flds が nilなので summary-refile内最初の
> fi exp-fldsには引っ掛からず、refile-decide-foldersは
> 呼ばないように思えるのですが、どうなのでしょう?
> 
> # 同じ mailで、o を押すとちゃんと refileされます。

auto-refile でエラーになって、'o' だと大丈夫な理由ですが、どっち
も mew-refile-decide-folders は呼びます。

'o' の場合は、ユーザの確認を求めるための mew-input-folder で、余
計なスペースを chop するようになっているので、エラーになりません。

auto-refile の場合は、chop せずに mew-folder-check に渡されます。
mew-folder-check の中で、実際のディレクトリに expand した際 nil 
が帰って来るのですが、それを構わず file-exists-p につっこんでる
のが原因です。

'o': mew-summary-refile
        -> mew-decide-folders
                -> mew-input-folders (この中で chop)
                -> mew-folder-check (OK)

auto:  mew-summary-refile
        -> mew-decide-folders
                -> mew-folder-check
                        -> mew-expand-folder (' +foo' だと nil が返る)
                        -> file-exists-p (nil が渡って来るので error)

という感じです。以下のパッチで治りますが、ユーザが、間違ってコン
フィグを記述しているのに気付きにくくなるかもしれません。

# *Message* 読めば分かりますけどね。
--
nom


--- mew-func.el.orig	Wed Nov 11 22:24:36 1998
+++ mew-func.el	Fri Dec 11 13:19:15 1998
@@ -321,8 +321,10 @@
 (defun mew-folder-check (folder)
   "A function to see if FOLDER exists.
 Return t if exists or created. Otherwise, return nil."
-  (if (not (stringp folder))
-      nil ;; wrong
+  (if (or (not (stringp folder)) (not (mew-expand-folder folder)))
+      (progn 
+	(message (format "%s is not suitable for a folder name." folder))
+	nil) ;; wrong
     (let ((absdir (mew-expand-folder folder))  ;; /home/Mail/foo
 	  (folders-file (expand-file-name mew-folders-file mew-mail-path))
 	  create-it)



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