[Mew-dist 07632] Re: auto refile

Yoshinari NOMURA nom at example.com
1999年 2月 23日 (火) 13:37:13 JST


乃村です。

On Tue, 23 Feb 1999 07:21:42 +0900,
	NARA Susumu <nara at example.com> said:

> kazu> これまでに何人もの人が指摘していますが、作者の nom さんの腰は重いよう
> kazu> です。
> kazu> 
> kazu> あと何人から言われれば腰を上げるのか、興味深く見守っています。
> 
> nom さん頑張って下さい。 

とまで言われては。。。最後に、非公式パッチ付けます。みなさんの環
境での効果/害をお知らせ下さい。

・変更点

  1.  auto-refile のときまで学習するのはやめた。

  2.  mew-refile-ctrl-throw
      mew-refile-ctrl-auto-boundary
      の下の関数をいつも呼んで、学習のための info を集めていたのを
      auto-refile か否かに関わらず、止めた。

  3.  auto のときは、mew-summary-display を使うのを止めて、
      自分で insert-file-contents か imcat を呼ぶようにした。X-)
      よって、ヘッダの解析は行われないので、Subject: や From: の 
      encode された文字でひっかけてたりする人は使えなくなる。

  4.  基本的に header の部分でしか guess しないので、3. の
      insert-file-contents で、最初の 5000 byte(?) しか読まないよ
      うにした。本文まで見て guess する関数を自分で書いている人は
      注意して下さい。

  5.  alias の補完の候補がダブるのを直した。

  6.  mew-refile-set で append をなくしてみた。
	(mo その他が治るといいな)

セルの浪費云々は根本的に解決していないと思います。 6. が少しは効
果あるかなといったところです。ちょっと勉強します。
--
nom


--- mew-refile.el.orig	Wed Oct 21 13:22:08 1998
+++ mew-refile.el	Tue Feb 23 13:25:57 1999
@@ -113,13 +113,14 @@
 	  ;; func is control function
 	  (funcall (car funcs))
 	;; func is guess function
-	(setq ret (funcall (car funcs))
-	      ret (or (and (listp ret) ret)
-		      (and ret (list ret))))
-	(if (not (or (and guess mew-refile-ctrl-throw)
-		     (and auto mew-refile-ctrl-auto-boundary)))
-	    (setq guess (append guess ret)))
-	(setq info (cons (cons (car funcs) ret) info)))
+	(if (or (and guess mew-refile-ctrl-throw)
+		(and auto mew-refile-ctrl-auto-boundary))
+	    ()
+	  (setq ret (funcall (car funcs))
+		ret (or (and (listp ret) ret)
+			(and ret (list ret)))
+		info (cons (cons (car funcs) ret) info)
+		guess (append guess ret))))
       (setq funcs (cdr funcs)))
     (setq info (nreverse info))
     (if mew-refile-ctrl-multi
@@ -411,7 +412,7 @@
     (while loop-alist
       (setq addr (car (car loop-alist)))
       (setq user (mew-addrstr-extract-user addr))
-      (if (assoc user alias-alist)
+      (if (or (assoc user alias-alist) (assoc user ret))
 	  ()
 	(setq ret (cons (cons user addr) ret)))
       (setq loop-alist (cdr loop-alist)))
@@ -535,7 +536,7 @@
     (if folders
 	(if (not (mew-folder-member folder folders))
 	    (setq mew-summary-buffer-refile 
-		  (cons (append (list msg) folders (list folder))
+		  (cons (nreverse (cons folder (nreverse (cons msg folders))))
 			(delete msg-folders mew-summary-buffer-refile))))
       (setq mew-summary-buffer-refile 
 	    (cons (list msg folder) mew-summary-buffer-refile)))))
@@ -590,26 +591,39 @@
   (interactive)
   (mew-summary-only
    (mew-summary-msg-or-part
-    (let (msg folders mark buf learn-info)
+    (let (msg folders mark buf learn-info fld)
       (save-excursion
 	;; save the cursor position anyway
 	(mew-summary-goto-message)
 	;; on the message
+	(setq fld (mew-summary-folder-name))
 	(setq msg (mew-summary-message-number)) ;; msg is never nil
 	(setq mark (mew-summary-get-mark)) ;; any mark
 	(if exp-flds
 	    (setq folders exp-flds)
 	  ;; show message if not displayed
-	  (mew-summary-display t) ;; not force
-	  (setq buf (or (mew-cache-hit (cons (buffer-name) msg))
-			;; non analysis
-			(mew-buffer-message)))
+	  (if auto
+	      (save-excursion
+		(setq buf (get-buffer-create mew-buffer-tmp))
+		(set-buffer buf)
+		(mew-erase-buffer)
+		(if (mew-folder-imapp fld)
+		    (mew-piolet mew-cs-autoconv mew-cs-noconv
+				(call-process mew-prog-imcat nil t nil
+					      (format "--src=%s" fld) msg))
+		  (insert-file-contents 
+		   (mew-expand-folder fld msg) nil 0 5000)))
+
+	    (mew-summary-display t) ;; not force
+	    (setq buf (or (mew-cache-hit (cons (buffer-name) msg))
+			  ;; non analysis
+			  (mew-buffer-message))))
 	  (setq learn-info (mew-refile-decide-folders buf msg mark auto))
 	  (setq folders (car learn-info)))
  	;; mark refile
 	(if (null folders)
 	    ()
-	  (or exp-flds (mew-refile-guess-learn buf learn-info))
+	  (or exp-flds auto (mew-refile-guess-learn buf learn-info))
 	  (mew-refile-reset msg)
 	  (mapcar (lambda (x) (mew-refile-set msg x)) folders)
 	  (mew-mark-unmark)



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