[Mew-dist 2222] Re: Delete mail in trash folder

Maybe TABOO y-koga at example.com
1997年 9月 24日 (水) 19:09:52 JST


Akihiro Motoki <motoki at example.com>:
> > さて、取りまとめということなので、やってみませう。
> よろしくお願いします。特にtrashフォルダでの消去はあった方が便利ですので。
>
> > 需要がありそうな設定としては、
> > - 常に消さない
> > - 常に消す
> > - ゴミ箱でだけ消す
> > - 特定のフォルダでは消す
> これだけあれば十分だと僕は思います。変数の形式はおまかせしますが、
> 1変数の方が設定で混乱することがなくて、いいと思います。
> #フォルダ指定のlistは別の変数にするのかな。

とりあえず、これを実現するパッチを送ります。

変数 mew-msg-rm-policy
	"never"     -> 常に消さない
	"all"       -> 常に消す
	"trashonly" -> ゴミ箱でだけ消す
	"uselist"   -> mew-msg-rm-folder-list にセットした
	               リストにマッチするフォルダでだけ消す

また、mew-msg-rm-policy や mew-msg-rm-folder-list を変更した場合、
summary モードで C-u Z すると変更が反映されるようにしています。あまり
変更するものではないだろうから、なんとなくこの方がよいかなという気がし
ただけで、これを変更するにはやぶさかではないです。
----
NEC ネットワーキング技術研究所 & 慶應義塾SFC研究所
こがよういちろう <y-koga at example.com> 他
-------------- next part --------------
--- mew.el.orig	Thu Sep 18 10:31:38 1997
+++ mew.el	Wed Sep 24 18:51:49 1997
@@ -408,6 +408,7 @@
 (defvar mew-prog-impath      "impath")
 (defvar mew-prog-impack      "impack")
 (defvar mew-prog-immv        "immv")
+(defvar mew-prog-imrm        "imrm")
 (defvar mew-prog-imput       "imput")
 (defvar mew-prog-imsort      "imsort")
 (defvar mew-prog-imgrep      "imgrep")
@@ -440,6 +441,12 @@
 (defvar mew-inbox-folder nil)
 (defvar mew-draft-folder nil)
 (defvar mew-trash-folder nil)
+
+(defvar mew-msg-rm-policy nil
+  "Set remove policy. You can set one of never, all, trashonly, or uselist")
+(defvar mew-msg-rm-folder-list nil
+  "Folder list to remove message really.")
+
 (defvar mew-petname-file nil)
 (defvar mew-draft-mime-folder nil
   "A directory where attachments are contained.")
@@ -654,6 +661,19 @@
     (setq mew-petname-alist (mew-petname-make-alist))
     (setq mew-folder-list (mew-folder-make-list (interactive-p)))
     (setq mew-folder-alist (mew-folder-make-alist mew-folder-list))
+    (cond
+     ((string-equal mew-msg-rm-policy "all")
+      (setq mew-msg-really-rm-folder-list '("..+")))
+     ((string-equal mew-msg-rm-policy "trashonly")
+      (setq mew-msg-really-rm-folder-list (list mew-trash-folder)))
+     ((string-equal mew-msg-rm-policy "never")
+      (setq mew-msg-really-rm-folder-list nil))
+     ((and (string-equal mew-msg-rm-policy "uselist") mew-msg-rm-folder-list)
+      (setq mew-msg-really-rm-folder-list mew-msg-rm-folder-list))
+     (t
+      (setq mew-msg-really-rm-folder-list nil))
+     )
+    ;;
     (message "Updating aliases and folders ... done")
     )
    (t
--- mew-mark.el.orig	Thu Sep 18 10:29:15 1997
+++ mew-mark.el	Wed Sep 24 18:34:36 1997
@@ -490,6 +490,10 @@
   (let* ((msgs (mew-summary-mark-collect mew-mark-refile beg end))
 	 (dels (mew-summary-mark-collect mew-mark-rmm beg end))
 	 (src (buffer-name))
+	 (del-prog mew-prog-immv)
+	 (del-opt mew-trash-folder)
+	 (del-folder "")
+	 (del-list mew-msg-really-rm-folder-list))
 	 refal folder folder-list tmp msg)
     (if (not (mew-summary-exclusive-p))
 	()
@@ -556,13 +560,20 @@
 	;;
 	;; delete at once
 	;;
-	(if (and dels (not (equal src mew-trash-folder)))
-	    (apply (function call-process)
-		   mew-prog-immv nil nil nil
-		   (format "--src=%s" src)
-		   "--link=no"
-		   mew-trash-folder
-		   dels))
+	(if dels
+	    (while del-list
+	      (setq del-folder (car del-list))
+	      (setq del-list (cdr del-list))
+	      (if (not (string-match del-folder src)) ()
+		(setq del-folderlist nil)
+		(setq del-prog mew-prog-imrm)
+		(setq del-opt "--quiet=on"))
+	      )
+	  (apply (function call-process)
+		 del-prog nil nil nil
+		 (format "--src=%s" src)
+		 del-opt
+		 dels))
 	;;
 	;; ending...
 	;;


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