[Mew-dist 592] Re: mew-my-refile.el

Yasuharu Yamada yasuharu at example.com
1997年 3月 5日 (水) 20:07:02 JST


少し前に mew-my-refile.el に関する質問をした
山田康晴@法政大学です。

問題が解決した(と思う)ので report します。
もとの質問はこのようなものでした。

yasuharu> この機能を使うと /tmp にディレクトリがバンバン作成されて
yasuharu> しまうのですが(使うたびに1つ作成される)、後に見ると
yasuharu> このディレクトリが残ってしまっています。
yasuharu> これは仕方のないことなのでしょうか?
yasuharu> あまり気持ちいいものではないので。

これに対し、

dezawa> ls /tmp
dezawa> aaaa01356~      dezawaa00190/   dezawaa16869/   orikaa18129/    work1/
dezawa> aaaa01361~      dezawaa00366/   dezawaa17684/   orikaa18313/
dezawa> baaa19091~      dezawaa13410/
dezawa> こんなのが出来てますがこれ関係ありそうですか?

botan> 確認したところ私の環境でも出来ました。
botan> SUN OS 5.4 or 5.5 です。

など賛同意見も戴きました。
この解決方法として

michiyo> Q(大文字) できちんと Mew 終了させれば、mew-clean-up が実行さ
michiyo> れて、/tmp にディレクトリが残ることが無いはずですが......

yasuharu> 私は CTRL+x CTRL+c で mule ごと終了していますが、

michiyo> これが原因のような気がします。

と戴きましたが、やはり私の所では CTRL+x CTRL+c ではゴミが残りませんでした。
そこでいろいろとテストした結果、どうも 「mule + mew ウィンドを残したまま
X を終了する」または「mule + mew の強制終了(fvwmのDestroy等)」を行なうと
ゴミが残ります。これが原因だったようです。
#良く考えれば当たり前のことですよね

私の不手際により mew-my-refile.el の作者である 工藤@Pacifitech さんに
多大な御迷惑をかけたことを心よりお詫び致します。

#皆さんもメンドくさがらずに window をすべて終了してから 
# X を終了するよう心がけましょう。

最後に mew-1.55 用 mew-my-refile パッチをつけておきます。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    \  /       法政大学工学研究科電気工学専攻 尾川研究室
  ー○  ○ー           山田 康晴  (yasuharu yamada)
      ∧          e-mail : yasuharu at example.com
     ⊂⊃         http://www.ogw.ei.hosei.ac.jp/~yasuharu/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-------------- next part --------------
diff -c Makefile.org Makefile
*** Makefile.org	Fri Feb 28 15:00:42 1997
--- Makefile	Wed Mar  5 19:09:53 1997
***************
*** 33,39 ****
  
  
  MEW	= mew.elc
! TARGETS = mew-attach.elc mew-charset.elc mew-decode.elc mew-demo.elc mew-draft.elc mew-encode.elc mew-fib.elc mew-header.elc mew-message.elc mew-pgp.elc mew-pick.elc mew-refile.elc mew-scan.elc mew-summary.elc mew-syntax.elc mew-ext.elc mew-virtual.elc
  LDPATH = lp.el

  RM = rm -f
--- 33,39 ----
  
  
  MEW	= mew.elc
! TARGETS = mew-attach.elc mew-charset.elc mew-decode.elc mew-demo.elc mew-draft.elc mew-encode.elc mew-fib.elc mew-header.elc mew-message.elc mew-pgp.elc mew-pick.elc mew-refile.elc mew-scan.elc mew-summary.elc mew-syntax.elc mew-ext.elc mew-virtual.elc mew-my-refile.elc
  LDPATH = lp.el

  RM = rm -f
  
diff -c -N ../mew-1.55.org/mew-my-refile.el ../mew-1.55/mew-my-refile.el
*** ../mew-1.55.org/mew-my-refile.el
--- ../mew-1.55/mew-my-refile.el	Wed Mar  5 19:09:53 1997
***************
*** 0 ****
--- 1,144 ----
+ ;; mew-my-refile.el
+ ;; $Header: /d/salt/sd7g/home/kudou/elisp/mew-my-refile.el,v 1.3 1997/01/07 06:59:57 kudou Exp $
+ 
+ (defconst mew-summary-my-refile "mew-my-refile.el version 0.02")
+ 
+ (require 'mew)
+ 
+ (defvar mew-my-refile-alist '()
+   "alist which consists of mail pattern and folder name")
+ 
+ (defun mew-summary-my-refile ()
+   (interactive)
+   (let ((a mew-my-refile-alist)
+ 	prompt folder)
+   (while (not (null a))
+     (progn
+       (setq prompt (car (car a)))
+       (setq folder (cdr (car a)))
+       (mew-summary-my-refile-x prompt folder)
+       (setq a (cdr a))))))
+ 
+ (defun mew-summary-my-refile-x (prompt &optional folder)
+   (interactive)
+   (progn
+     (mew-summary-search-mark-x prompt)
+     (mew-summary-mark-refile-x folder)))
+ 
+ (defun mew-summary-mark-refile-x (folder)
+   (interactive)
+   (let ((regex (concat mew-summary-message-regex
+ 		       (regexp-quote (char-to-string mew-mark-hop))))
+ 	(mew-summary-buffer-disp-msg nil)
+ 	)
+     (save-excursion
+       (goto-char (point-min))
+       (if (not (re-search-forward regex nil t))
+ 	  (message "No marked messages")
+ 	(beginning-of-line)
+ 	(let ((mew-summary-refile-last-destination nil)
+ 	      (mew-analysis nil))
+ 	  (if (if (null folder)
+ 		  (setq folder (mew-decide-folder))
+ 		folder)
+ 	      (while (re-search-forward regex nil t)
+ 		(let ((buffer-read-only nil));; mew-summary-unmark
+ 		  (delete-backward-char 1)
+ 		  (insert " "))
+ 		(mew-summary-refile-mark folder)
+ 		(forward-line 1))
+ 	    ))
+ 	)
+       ))
+   )
+ 
+ (defun mew-summary-search-mark-x (prompt)
+   (interactive)
+   (if (equal (point-min) (point-max))
+       (message "No messages in this buffer.")
+     (let ((folder (buffer-name))
+ 	  (pattern nil)
+ 	  (first nil)
+ 	  (last nil)
+ 	  (range nil))
+       (setq pattern (mew-pick-input-pattern-x prompt))
+       (message "Picking messages in %s ..." folder)
+       (goto-char (point-min))
+       (setq first (mew-summary-message-number))
+       (goto-char (point-max))
+       (forward-line -1)
+       (setq last (mew-summary-message-number))
+       (setq range (mew-summary-pick folder pattern (concat first "-" last)))
+       (message "Picking messages in %s ... done" folder)
+       (if (null range)
+ 	  ()
+ 	(message "Marking messages ... ")
+ 	(goto-char (point-min))
+ 	(while (not (eobp))
+ 	  (if (and (null (mew-summary-marked-p))
+ 		   (mew-member-del (mew-summary-message-number) range))
+ 	      (mew-summary-mark mew-mark-hop))
+ 	  (forward-line))
+ 	(message "Marking messages ... done")
+ 	)
+       )))
+ 
+ (defun mew-pick-input-pattern-x (&optional prompt)
+   (mew-pick-macro-expand
+    (mew-pick-input-pattern-raw-x prompt)))
+ 
+ (defun mew-pick-input-pattern-raw-x (&optional prompt)
+   (let ((pat nil))
+     (if (string= prompt "")
+ 	(setq pat (read-from-minibuffer 
+ 		   (format "Pattern%s (%s) : "
+ 			    (if prompt prompt "")
+ 			    mew-prog-pick-default-arg)
+ 		   "-" mew-pick-map nil))
+       (setq pat prompt))
+     (setq pat (downcase pat))
+     (cond
+      ((string-match " " pat)
+       (mapcar (function mew-summary-search-blace)
+ 	      (mew-header-delete-nullstring-list
+ 	       (mew-header-split pat 32))));; 32 is " "
+      (t 
+       (if (or (string= pat "") (string= pat "-"))
+ 	  (setq pat mew-prog-pick-default-arg))
+       (cond
+        ((mew-member pat mew-prog-pick-arglogic-unary)
+ 	(cons pat (mew-pick-input-pattern-raw (format " for %s" pat))))
+        ((mew-member pat mew-prog-pick-arglogic-binary)
+ 	(mew-pick-input-logic pat))
+        ((mew-member pat mew-prog-pick-argdate)
+ 	(cons pat (mew-pick-input-value (format "Date for %s" pat)
+ 					mew-prog-pick-argdatealist)))
+        ((assoc pat mew-pick-macro-alist)
+ 	(let* ((assoc (assoc pat mew-pick-macro-alist))
+ 	       (args (nth 1 assoc)) arg n datep res)
+ 	  (setq res (list pat))
+ 	  (while args
+ 	    (setq arg (car args))
+ 	    (setq args (cdr args))
+ 	    (setq n (and (string-match "[0-9]+" arg) (mew-match 0 arg)))
+ 	    (setq datep (string-match "d" arg))
+ 	    (setq res
+ 		  (nconc
+ 		   (mew-pick-input-value 
+ 		    (cond ((and n datep)
+ 			   (format "Date arg %s for %s" n pat))
+ 			  (n
+ 			   (format "Arg %s for %s" n pat))
+ 			  (datep
+ 			   (format "Date for %s" pat))
+ 			  (t
+ 			   (format "Value for %s" pat)))
+ 		    (and datep mew-prog-pick-argdatealist))
+ 		   res)))
+ 	  (nreverse res)))
+        (t (cons pat (mew-pick-input-value (format "Value for %s" pat))))
+        )
+       )
+     )))
+ 
+ (provide 'mew-my-refile)

diff -c mew-summary.el.org mew-summary.el
*** mew-summary.el.org	Mon Mar  3 03:17:56 1997
--- mew-summary.el	Wed Mar  5 19:10:56 1997
***************
*** 72,77 ****
--- 72,78 ----
    (define-key mew-summary-mode-map "mr"   'mew-summary-mark-regexp)
    (define-key mew-summary-mode-map "ma"   'mew-summary-mark-all)
    (define-key mew-summary-mode-map "mu"   'mew-summary-mark-undo-all)
+   (define-key mew-summary-mode-map "my"   'mew-summary-my-refile)
    (define-key mew-summary-mode-map "\C-c\C-s" 'mew-summary-isearch-forward)
    (define-key mew-summary-mode-map "\C-c\C-r" 'mew-summary-isearch-backward)
    (define-key mew-summary-mode-map "\C-c\C-o" 

diff -c mew.el.org mew.el
*** mew.el.org	Tue Mar  4 11:51:19 1997
--- mew.el	Wed Mar  5 19:09:52 1997
***************
*** 1929,1932 ****
--- 1929,1933 ----
  (require 'mew-refile)
  (require 'mew-ext)
  (require 'mew-fib)
+ (require 'mew-my-refile)
  



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