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