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