From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/8429 Path: main.gmane.org!not-for-mail From: Kees de Bruin Newsgroups: gmane.emacs.gnus.general Subject: PATCH: Overwrite files when saving Date: 18 Oct 1996 10:18:37 +0200 Sender: kimito!bruin@tasking.nl Message-ID: Reply-To: Kees de Bruin NNTP-Posting-Host: coloc-standby.netfonds.no X-Trace: main.gmane.org 1035148590 12085 80.91.224.250 (20 Oct 2002 21:16:30 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sun, 20 Oct 2002 21:16:30 +0000 (UTC) Cc: Lars Magne Ingebrigtsen Return-Path: Original-Received: (qmail 23288 invoked from smtpd); 18 Oct 1996 09:14:31 -0000 Original-Received: from ifi.uio.no (0@129.240.64.2) by deanna.miranova.com with SMTP; 18 Oct 1996 09:14:29 -0000 Original-Received: from ns.NL.net (ns.NL.net [193.78.240.1]) by ifi.uio.no with SMTP (8.6.11/ifi2.4) id for ; Fri, 18 Oct 1996 10:51:32 +0200 Original-Received: from taski by ns.NL.net (5.65b/NLnet1.3) id AA25105; Fri, 18 Oct 1996 10:27:42 +0200 Original-Received: from kimito.tasking.nl by lucca; (5.65v3.2/1.1.8.2/02Jan95-0312PM) id AA00215; Fri, 18 Oct 1996 10:18:39 +0200 Original-To: ding@ifi.uio.no (Gnus Development) X-Url: http://www.tasking.com X-Attribution: KdB Mail-Copies-To: Kees de Bruin Original-Lines: 117 X-Mailer: Red Gnus v0.52/Emacs 19.34 Xref: main.gmane.org gmane.emacs.gnus.general:8429 X-Report-Spam: http://spam.gmane.org/gmane.emacs.gnus.general:8429 When saving articles to a mail file, it would be nice that we can replace the current file for a new one. This is handy when FAQ files are archived, but has also got some other uses. I have copied the definition of the function `gnus-summary-save-in-mail' to create a new function and added the correct bindings in the summary keymap. I can now use "O a" to archive the message while replacing any existing ones. Here's the patch against Red Gnus v0.52: -----[ rgnus-0.52.diff ]--------------------------------------------------- --- lisp/gnus-art.el.orig Fri Oct 18 09:42:34 1996 +++ lisp/gnus-art.el Fri Oct 18 09:48:55 1996 @@ -73,14 +73,16 @@ * gnus-summary-save-in-rmail (Rmail format) * gnus-summary-save-in-mail (Unix mail format) * gnus-summary-save-in-folder (MH folder) -* gnus-summary-save-in-file (article format). -* gnus-summary-save-in-vm (use VM's folder format)." +* gnus-summary-save-in-file (article format) +* gnus-summary-save-in-vm (use VM's folder format) +* gnus-summary-save-in-mail-overwrite (Unix mail format)." :group 'article :type '(radio (function-item gnus-summary-save-in-rmail) (function-item gnus-summary-save-in-mail) (function-item gnus-summary-save-in-folder) (function-item gnus-summary-save-in-file) - (function-item gnus-summary-save-in-vm))) + (function-item gnus-summary-save-in-vm) + (function-item gnus-summary-save-in-mail-overwrite))) (defcustom gnus-rmail-save-name 'gnus-plain-save-name "A function generating a file name to save articles in Rmail format. @@ -470,6 +472,33 @@ (gnus-output-to-rmail filename) (let ((mail-use-rfc822 t)) (rmail-output filename 1 t t)))))) + ;; Remember the directory name to save articles. + (setq gnus-newsgroup-last-mail filename))) + +(defun gnus-summary-save-in-mail-overwrite (&optional filename) + "Save this article to Unix mail file and overwrite any existing file. +Optional argument FILENAME specifies file name. +Directory to save to is default to `gnus-article-save-directory'." + (interactive) + (gnus-set-global-variables) + (let ((default-name + (funcall gnus-mail-save-name gnus-newsgroup-name + gnus-current-headers gnus-newsgroup-last-mail))) + (setq filename (gnus-read-save-file-name + "Save %s in Unix mail file:" default-name filename)) + (setq filename + (expand-file-name filename + (and default-name + (file-name-directory default-name)))) + (gnus-make-directory (file-name-directory filename)) + (gnus-eval-in-buffer-window gnus-original-article-buffer + (save-excursion + (save-restriction + (widen) + (if (file-exists-p filename) + (delete-file filename)) + (let ((mail-use-rfc822 t)) + (rmail-output filename 1 t t))))) ;; Remember the directory name to save articles. (setq gnus-newsgroup-last-mail filename))) --- lisp/gnus-sum.el.orig Fri Oct 18 09:51:38 1996 +++ lisp/gnus-sum.el Fri Oct 18 09:53:38 1996 @@ -1494,6 +1494,7 @@ (gnus-define-keys (gnus-summary-save-map "O" gnus-summary-mode-map) "o" gnus-summary-save-article "m" gnus-summary-save-article-mail + "a" gnus-summary-save-article-mail-overwrite "r" gnus-summary-save-article-rmail "f" gnus-summary-save-article-file "b" gnus-summary-save-article-body-file @@ -1685,6 +1686,7 @@ ["Save in default format" gnus-summary-save-article t] ["Save in file" gnus-summary-save-article-file t] ["Save in Unix mail format" gnus-summary-save-article-mail t] + ["Replace in Unix mail format" gnus-summary-save-article-mail-overwrite t] ["Save in MH folder" gnus-summary-save-article-folder t] ["Save in VM folder" gnus-summary-save-article-vm t] ["Save in RMAIL mbox" gnus-summary-save-article-rmail t] @@ -7959,6 +7961,17 @@ (interactive "P") (gnus-set-global-variables) (let ((gnus-default-article-saver 'gnus-summary-save-in-mail)) + (gnus-summary-save-article arg))) + +(defun gnus-summary-save-article-mail-overwrite (&optional arg) + "Save the current article to an mail file replacing old file. +If N is a positive number, save the N next articles. +If N is a negative number, save the N previous articles. +If N is nil and any articles have been marked with the process mark, +save those articles instead." + (interactive "P") + (gnus-set-global-variables) + (let ((gnus-default-article-saver 'gnus-summary-save-in-mail-overwrite)) (gnus-summary-save-article arg))) (defun gnus-summary-save-article-rmail (&optional arg) -----[ end-of-file ]------------------------------------------------------- Kind regards, -- Kees de Bruin Tasking Software BV Software Engineer --------------------------------------------------------------------------- telephone: +31 33 455 85 84 Tasking Software BV fax: +31 33 455 10 05 Plotterweg 31 email: kees_de_bruin@tasking.com 3821 BB Amersfoort WWW: http://www.tasking.com The Netherlands CompuServe: GO TASKING --------------------------------------------------------------------------- ----- Quality Development Tools Worldwide ----- -----------------------------------