[Mew-dist 990] Re: How do you refile?

尾澤稔 ozawa at example.com
1997年 6月 3日 (火) 09:34:25 JST


尾澤@沖電気です。

knishida> 見たところ、設定に従って自動的に分類する機能ではなく、ユーザの意
knishida> 図をサポートする方針であるようですが、いまひとつスマートに使いこ
knishida> なせません。ML のように、明らかに格納場所が決まっているようなメー
knishida> ルでも、いちいち `o'(mew-summary-refile)を押すたびにリターンしな
knishida> いといけないのも面倒ですし、マークを付けて一括移動もできるようで
knishida> すが、やはりわかりきったものはわかりきったところに納めてほしいで
knishida> す。過去のメールを取り寄せてみると、Auto refile のためのコードも
knishida> 流れていたようですが、これはマージされないのでしょうか?

これは私が流したものです。
メールに添付しておきますので、参考にして下さい。

最初(mew-auto-refile.el)のが、すべてのメールに対してリファイルを行なうも
のです。
mew-auto-refile-effective-folder-guess で t に設定した推測が有効になりま
す。
mew-auto-refile-exec を t にしておくと、mew-summary-exec まで自動で行な
います。

二つめ(mew-mark-refile-by-guess.el)のが、マーク(*)のついているメールだけ
を対象にリファイルを行なうものです。
mew-mark-refile-effective-folder-guess で t に設定した推測が有効になりま
す。
   mew-summary-mark-all を行なってから
   mew-summary-mark-refile-by-guess
   とすれば最初のと同じ動作をします。

						尾澤 稔
						ozawa at example.com

-------------- next part --------------
;;;			     mew-auto-refile.el
;;;
;;;		Copyright (C) 1997  Minoru Ozawa
;;;
;;;		   This emacs lisp library conforms
;;;		GNU GENERAL PUBLIC LICENSE Version 2.
;;;
;;; Author:  Minoru Ozawa <ozawa at example.com>
;;; Created: April 4, 1997
;;; Revised: 
;;;
(defvar mew-auto-refile-effective-folder-guess
  '(
    (mew-guess-by-alist		. t)
    (mew-guess-by-folder	. nil)
    (mew-guess-by-message-id	. nil)
    (mew-guess-by-from		. nil)
    (mew-guess-by-default	. nil)
    )
  "When folder is fixed, the establishment or they make which associative list effective."
  )

(defvar mew-auto-refile-exec	nil
  "The establishment it is filed reason perfectly by automatism.
This value appends only a mark at the time of nil.")

(defun mew-auto-refile-get-folder ()
  (interactive)
  (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 (mew-auto-refile-effective-folder-guess learn-info)
	(nth 0 learn-info)
      nil)
    )
  )

(defun mew-auto-refile-effective-folder-guess (learn-info)
  (let ()
    (cdr (assoc (nth 1 learn-info) mew-auto-refile-effective-folder-guess))
    ))

(defun mew-auto-refile ()
  (interactive)
  (let (folder mark msg)
    (message "Auto refiling ...")
    (save-excursion
      (goto-char (point-min))
      (while (not (eobp))
	(setq folder (mew-auto-refile-get-folder))
	(setq mark (mew-summary-get-mark))
	(setq msg (mew-summary-message-number))
	(if (or (not folder) (eq mark mew-mark-refile) (eq mark mew-mark-rmm))
	    nil
	  (mew-summary-refile-mark folder)
	  )
	(forward-line 1)
	(while (mew-summary-part-number)
	  (forward-line 1))
	))
    (if mew-auto-refile-exec
	(mew-summary-exec))
    (message "Auto refileing ... done")
    ))

(provide 'mew-auto-refile)
-------------- next part --------------
;;;			     mew-mark-refile-by-guess.el
;;;
;;;		Copyright (C) 1997  Minoru Ozawa
;;;
;;;		   This emacs lisp library conforms
;;;		GNU GENERAL PUBLIC LICENSE Version 2.
;;;
;;; Author:  Minoru Ozawa <ozawa at example.com>
;;; Created: April 4, 1997
;;; Revised: 
;;;
(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")
	(message "Marked message refiling ...")
        (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)
		(mew-analysis-now mew-analysis)
		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 mew-analysis 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)
	      (setq mew-analysis mew-analysis-now)
	      )
            ))
	(message "Marked message refiling ... Done")
        )
      ))
  )

(defun mew-summary-refile-check-guess ()
  (interactive)
  (let* ((begin (save-excursion (beginning-of-line) (point)))
	 (end (save-excursion (end-of-line) (point)))
	 (msg (mew-summary-mark-collect mew-mark-refile begin end))
	 folder)
    (if (not msg)
	(message "No refile mark")
      (setq folder (car (cdr (assoc (car msg) mew-summary-buffer-refile))))
      (message (format "Refiling folder is \"%s\"" (car folder)))
      )
    ))

(provide 'mew-mark-refile-by-guess)


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