[mew-dist 20690] Re: refile by character code

Tatsuya Kinoshita tats at example.com
2002年 3月 30日 (土) 00:45:06 JST


In message [mew-dist 20686], on Thu, 28 Mar 2002,
Tak Ota <Takaaki.Ota at example.com> wrote:

> mew-refile-guss-alist を初めて知りました。これは便利ですね。

refile-guessで使われる関数は、変数mew-refile-guess-controlに登録
されています。さらに凝った判定が必要なら、この変数に自前の関数を
登録することで対応できます。

    *

mew-refile-guess-alistで指定した日本語(non-ASCII)の判定で、うまく
マッチしてくれない、`o', `M-o', `C-u o'で結果が異なる、という場合
があることに気づいたので、修正してパッチを作りました。

mew-refile-guess-fastがtだと、高速化のため`Subject:'以外のフィー
ルドについてはデコードを省略する場合があります。

`Subject:'以外のフィールドについてnon-ASCIIで判定したい場合には、
mew-refile-guess-fastをnilにする必要があります。(手元では2〜3倍
程度時間がかかり、数百通を`M-o'で処理する際には気になりました)

-- 
木下達也
-------------- next part --------------

 This patch is written by Tatsuya Kinoshita.  Copyright is disclaimed.

diff -ur mew.orig/mew-refile.el mew/mew-refile.el
--- mew.orig/mew-refile.el	Sat Mar 30 00:11:13 2002
+++ mew/mew-refile.el	Sat Mar 30 00:12:26 2002
@@ -506,15 +506,18 @@
 	      (setq delbuf t)
 	      (set-buffer buf)
 	      (mew-erase-buffer)
-	      (mew-insert-message fld msg mew-cs-autoconv
+	      (mew-insert-message fld msg mew-cs-text-for-read
 				  mew-header-reasonable-size)
-	      (goto-char (point-min))
-	      (if (and (re-search-forward (concat "^$\\|^" mew-subj:) nil t)
-		       (not (looking-at "^$")))
-		  (let ((med (point)))
-		    (forward-line)
-		    (mew-header-goto-next)
-		    (mew-header-decode-region mew-subj: med (point)))))
+	      (if (not mew-refile-guess-fast)
+		  (let ((mew-use-highlight-header nil))
+		    (mew-decode-rfc822-header))
+		(goto-char (point-min))
+		(if (and (re-search-forward (concat "^$\\|^" mew-subj:) nil t)
+			 (not (looking-at "^$")))
+		    (let ((med (point)))
+		      (forward-line)
+		      (mew-header-goto-next)
+		      (mew-header-decode-region mew-subj: med (point))))))
 	  ;; need to make a cache or a message buffer.
 	  (mew-summary-display nil)
 	  ;; mew-cache-hit should be first since we want to get 
@@ -568,8 +571,10 @@
     (save-excursion
       (set-buffer tmpbuf)
       (mew-erase-buffer)
-      (mew-insert-message fld msg mew-cs-autoconv
+      (mew-insert-message fld msg mew-cs-text-for-read
 			  mew-header-reasonable-size)
+      (let ((mew-use-highlight-header nil))
+	(mew-decode-rfc822-header))
       (setq guess (mew-refile-guess nil t)))
     (mew-remove-buffer tmpbuf)
     (mew-window-configure 'message)
diff -ur mew.orig/mew-vars.el mew/mew-vars.el
--- mew.orig/mew-vars.el	Sat Mar 30 00:11:13 2002
+++ mew/mew-vars.el	Sat Mar 30 00:12:26 2002
@@ -1818,6 +1818,13 @@
   :group 'mew-refile
   :type 'boolean)
 
+(defcustom mew-refile-guess-fast t
+  "*If *non-nil*, 'mew-summary-refile-body' omits MIME decoding
+except Subject:. If you want to handle non-ASCII on any fields,
+set this variable to nil."
+  :group 'mew-refile
+  :type 'boolean)
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; Case guess


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