[mew-dist 28853] Re: mew-config-alist による refile-guess-alist の切り替え

Hideyuki SHIRAI shirai at example.com
2009年 1月 22日 (木) 14:44:17 JST


From: KOIE Hidetaka (鯉江英隆) <hide at example.com> さん曰く
Subject: [mew-dist 28841] Re: mew-config-alist による refile-guess-alist の切り替え
Message-ID: <20090121.101842.1084275951035934745.hide at example.com>
Date: Wed, 21 Jan 2009 10:18:42 +0900 (JST)

>   | これで "a-mail" に設定した refile-guess-alist は利用できましたが、case
>   | を "b-mail" に切り替えても、"b-mail" に設定した refile-guess-alist を
>   | 利用できません("a-mail" の refile-guess-alist を使っている)。

鈴木さんはローカルフォルダのメッセージをリフィールしようとしてい
るのですよね?

鯉江さんの

> どうもmew-refile-guess-alist()が呼ばれるときに
> 引数のcaseがnilになっているのが問題のようなのですが、
> 直し方はわかりません。

の部分を見てみたのですが、

(defun mew-summary-refile-body (&optional exp-flds auto no-msg no-mark exfld)
  (let ((pos (point))
	fld msg folders cur-folders mark
	buf learn-info tmp delbuf invalidp folders-str
	mew-inherit-refile-proto mew-inherit-refile-case)
    (mew-summary-goto-message)
    (when (mew-sumsyn-match mew-regex-sumsyn-short)
      (setq fld (mew-sumsyn-folder-name))
      (setq msg (mew-sumsyn-message-number)) ;; msg is never nil
      (setq invalidp (not (mew-msg-validp msg))))
    (setq mew-inherit-refile-case  (mew-case:folder-case fld))
    (setq mew-inherit-refile-proto (substring (mew-case:folder-folder fld) 0 1))

となっていて、ここで、正しい(?) case を求められるのは、ローカル
フォルダ以外 かつ リモートフォルダで mew-case-default 以外の
case のもの、だと思います。

以下のパッチで OK かな?

-- 
白井秀行 (mailto:shirai at example.com)

--- mew-refile.el	21 Jan 2009 17:06:53 +0900	1.128
+++ mew-refile.el	22 Jan 2009 14:33:19 +0900	
@@ -678,7 +678,8 @@
       (setq fld (mew-sumsyn-folder-name))
       (setq msg (mew-sumsyn-message-number)) ;; msg is never nil
       (setq invalidp (not (mew-msg-validp msg))))
-    (setq mew-inherit-refile-case  (mew-case:folder-case fld))
+    (setq mew-inherit-refile-case (or (mew-case:folder-case fld)
+				      mew-case))
     (setq mew-inherit-refile-proto (substring (mew-case:folder-folder fld) 0 1))
     (setq mark (mew-summary-get-mark)) ;; any mark
     (cond
@@ -768,7 +769,8 @@
       (when (mew-sumsyn-match mew-regex-sumsyn-short)
 	(setq fld (mew-sumsyn-folder-name))
 	(setq msg (mew-sumsyn-message-number))))
-    (setq mew-inherit-refile-case  (mew-case:folder-case fld))
+    (setq mew-inherit-refile-case (or (mew-case:folder-case fld)
+				      mew-case))
     (setq mew-inherit-refile-proto (substring (mew-case:folder-folder fld) 0 1))
     (with-temp-buffer
       (mew-insert-message




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