[Mew-dist 810] Re: Auto refile

尾澤稔 ozawa at example.com
1997年 4月 4日 (金) 11:10:43 JST


尾澤です。

ozawa> mew-folder-alist にしたがってMew終了時等に自動で、リファイルし
ozawa> てくれる機能があったら便利だと思い自分で作ってみましたが、

>> この機能を

>> 1)あらかじめ適当に mark をつける(これは既存のやつを単に使うだけなので
>>   新規に実装する必要はない)
>> 2)mark が付けられたやつに対して,一気に refile を実行する function を
>>   実行する(refile 先は推論の結果をそのまま使う)
>> 3)あとは x を叩くと処理(mew 終了時に mark されてたやつを処理するという
>>   のは hook で書けるはずから,その部分は多分新規に実装する必要はないか,
>>   あっても sample をつけておくだけでいい)

確かに、この方が便利そうですが、すべての推論をそのまま使ってしまうの
はどうかと思います。
それと、あらかじめマークをつけるのも面倒のような...
でも、自動でリファイルさせたくないメールがあるかも知れない...

>> という形にすると,さらに便利なんじゃないかと思っていました.もちろんこ
>> れはすぐに「それは mew-summary-mark-refile の個別 mail ごとな推論つき 
>> version なんじゃないの?」なんてことがわかってしまうんですが,でも私は 
>> lisp で code 書けないので実装できてません‥‥

mew-summary-mark-refile をいじくって私なりに作ってみました。

コード中の、mew-mark-refile-effective-folder-guess は、どの推論結果を
有効にするかの設定です。(non-nil が有効)

						尾澤 稔
						ozawa at example.com
-------------- next part --------------
(defvar mew-mark-refile-effective-folder-guess
  '(
    (mew-guess-by-alist		. t)
    (mew-guess-by-message-id	. t)
    (mew-guess-by-from		. t)
    (mew-guess-by-folder	. nil)
    (mew-guess-by-default	. nil)
    )
  "When folder is fixed, the establishment or they make which associative list effective."
  )

(defun mew-summary-mark-refile-by-guess ()
  (interactive)
  (let ((regex (concat mew-summary-message-regex
                       (regexp-quote (char-to-string mew-mark-hop))))
        (mew-summary-buffer-disp-msg nil)
	folder)
    (save-excursion
      (goto-char (point-min))
      (if (not (re-search-forward regex nil t))
          (message "No marked messages")
        (beginning-of-line)
	(while (re-search-forward regex nil t)
	  (let ((mew-summary-buffer-disp-msg nil)
		(mew-summary-refile-last-destination nil)
		(mew-analysis nil)
		msg-buffer learn-info)
	    (setq msg-buffer (or (mew-summary-display t)
				 (mew-buffer-message)))
	    (save-excursion
	      (set-buffer msg-buffer)
	      (setq learn-info (mew-refile-folder-guess))
	      )
	    (if (not
		 (cdr 
		  (assoc
		   (nth 1 learn-info) mew-mark-refile-effective-folder-guess))
		 )
		nil
	      (setq folder (nth 0 learn-info))
	      (let ((buffer-read-only nil));; mew-summary-unmark
		(delete-backward-char 1)
		(insert " "))
	      (mew-summary-refile-mark folder)
	      (forward-line 1))
            ))
        )
      ))
  )


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