annotate lisp/mail/rmailout.el @ 88348:a943d2961193

*** empty log message ***
author Henrik Enberg <henrik.enberg@telia.com>
date Mon, 30 Apr 2007 20:47:19 +0000
parents 4fd331e58549
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
1 ;;; rmailout.el --- "RMAIL" mail reader for Emacs: output message to a file.
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 202
diff changeset
2
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
3 ;; Copyright (C) 1985, 1987, 1993, 1994, 2001, 2002, 2003, 2004,
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
4 ;; 2005 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5
788
c8d4eb38ebfc *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 713
diff changeset
6 ;; Maintainer: FSF
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: mail
788
c8d4eb38ebfc *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 713
diff changeset
8
63
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
10
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 788
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
63
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
14 ;; any later version.
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
15
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
19 ;; GNU General Public License for more details.
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
20
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13054
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
24 ;; Boston, MA 02110-1301, USA.
63
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
25
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 38304
diff changeset
26 ;;; Commentary:
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 38304
diff changeset
27
788
c8d4eb38ebfc *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 713
diff changeset
28 ;;; Code:
63
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
29
23986
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
30 (provide 'rmailout)
5859
84ad3a2c5373 Add (require 'rmail) so the macro will be byte-compiled properly.
Karl Heuer <kwzh@gnu.org>
parents: 5802
diff changeset
31
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
32 (eval-when-compile
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
33 (require 'rmail)
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
34 (require 'rmaildesc))
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
35
16188
5bc27ae3cd14 (rmail-output-file-alist): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
36 ;;;###autoload
17631
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
37 (defcustom rmail-output-file-alist nil
145
1a0f15a66c06 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 63
diff changeset
38 "*Alist matching regexps to suggested output Rmail files.
4056
419e92a78e6f (rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents: 3832
diff changeset
39 This is a list of elements of the form (REGEXP . NAME-EXP).
4851
b70799eabd57 (rmail-output-file-alist): Doc fix.
Roland McGrath <roland@gnu.org>
parents: 4836
diff changeset
40 The suggestion is taken if REGEXP matches anywhere in the message buffer.
4056
419e92a78e6f (rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents: 3832
diff changeset
41 NAME-EXP may be a string constant giving the file name to use,
419e92a78e6f (rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents: 3832
diff changeset
42 or more generally it may be any kind of expression that returns
17631
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
43 a file name as a string."
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
44 :type '(repeat (cons regexp
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
45 (choice :value ""
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
46 (string :tag "File Name")
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
47 sexp)))
35d8e74c6edb Use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17305
diff changeset
48 :group 'rmail-output)
145
1a0f15a66c06 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 63
diff changeset
49
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
50 ;;;###autoload
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
51 (defcustom rmail-fields-not-to-output nil
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
52 "*Regexp describing fields to exclude when outputting a message to a file."
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
53 :type '(choice (const :tag "None" nil)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
54 regexp)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
55 :group 'rmail-output)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
56
23986
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
57 (defun rmail-output-read-file-name ()
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
58 "Read the file name to use for `rmail-output'.
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
59 Set `rmail-default-file' to this name as well as returning it."
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
60 (let* ((default-file
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
61 (with-current-buffer rmail-buffer
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
62 (expand-file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
63 (or (catch 'answer
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
64 (dolist (i rmail-output-file-alist)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
65 (goto-char (point-min))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
66 (when (re-search-forward (car i) nil t)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
67 (throw 'answer (eval (cdr i))))))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
68 rmail-default-file))))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
69 (read-file
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
70 (expand-file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
71 (read-file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
72 (concat "Output message to Rmail (mbox) file: (default "
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
73 (file-name-nondirectory default-file) "): ")
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
74 (file-name-directory default-file)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
75 (abbreviate-file-name default-file))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
76 (file-name-directory default-file))))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
77 (setq rmail-default-file
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
78 (if (file-directory-p read-file)
23986
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
79 (expand-file-name
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
80 (file-name-nondirectory default-file) read-file)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
81 (expand-file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
82 (or read-file (file-name-nondirectory default-file))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
83 (file-name-directory default-file))))))
23986
2c996615e2e9 Provide `rmailout'.
Richard M. Stallman <rms@gnu.org>
parents: 23941
diff changeset
84
23042
4404e3d66e80 (rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents: 22740
diff changeset
85 ;;; There are functions elsewhere in Emacs that use this function;
4404e3d66e80 (rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents: 22740
diff changeset
86 ;;; look at them before you change the calling method.
16343
e2b0e3d63822 (rmail-fields-not-to-output): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 16188
diff changeset
87 ;;;###autoload
29160
998506bd35f3 1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents: 24838
diff changeset
88 (defun rmail-output-to-rmail-file (file-name &optional count stay)
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
89 "Append the current message to an Rmail (mbox) file named FILE-NAME.
63
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
90 If the file does not exist, ask if it should be created.
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
91 If file is being visited, the message is appended to the Emacs
714e88ef93c8 Initial revision
root <root>
parents:
diff changeset
92 buffer visiting that file.
19961
be32396bfb04 (rmail-output-to-rmail-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17631
diff changeset
93 If the file exists and is not an Rmail file, the message is
be32396bfb04 (rmail-output-to-rmail-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17631
diff changeset
94 appended in inbox format, the same way `rmail-output' does it.
4056
419e92a78e6f (rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents: 3832
diff changeset
95
7332
e30a34bfc536 (rmail-output-menu): Set rmail-default-rmail-file.
Richard M. Stallman <rms@gnu.org>
parents: 7320
diff changeset
96 The default file name comes from `rmail-default-rmail-file',
5592
ee1ed3d9e517 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5590
diff changeset
97 which is updated to the name you use in this command.
ee1ed3d9e517 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5590
diff changeset
98
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
99 A prefix argument COUNT says to output that many consecutive messages,
29160
998506bd35f3 1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents: 24838
diff changeset
100 starting with the current one. Deleted messages are skipped and don't count.
998506bd35f3 1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents: 24838
diff changeset
101
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
102 If the optional argument STAY is non-nil, then leave the last filed
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
103 message up instead of moving forward to the next non-deleted message."
88177
cf8100a82c36 (rmail-output-read-file-name): Make sure search in executed in `rmail-buffer'.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88155
diff changeset
104 (interactive (list (rmail-output-read-file-name)
cf8100a82c36 (rmail-output-read-file-name): Make sure search in executed in `rmail-buffer'.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88155
diff changeset
105 (prefix-numeric-value current-prefix-arg)))
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
106 ;; Use the 'rmail-output function to perform the output.
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
107 (rmail-output file-name count nil nil)
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
108 ;; Deal with the next message
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
109 (if rmail-delete-after-output
88177
cf8100a82c36 (rmail-output-read-file-name): Make sure search in executed in `rmail-buffer'.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88155
diff changeset
110 (unless (if (and (= count 0) stay)
cf8100a82c36 (rmail-output-read-file-name): Make sure search in executed in `rmail-buffer'.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88155
diff changeset
111 (rmail-delete-message)
cf8100a82c36 (rmail-output-read-file-name): Make sure search in executed in `rmail-buffer'.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88155
diff changeset
112 (rmail-delete-forward))
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
113 (setq count 0))
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
114 (when (> count 0)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
115 (unless (when (not stay)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
116 (rmail-next-undeleted-message 1))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
117 (setq count 0)))))
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
118
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
119 (defun rmail-delete-unwanted-fields ()
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
120 "Delete from the buffer header fields we don't want output."
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
121 (when rmail-fields-not-to-output
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
122 (save-excursion
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
123 (let ((limit (rmail-header-get-limit))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
124 (inhibit-point-motion-hooks t)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
125 start)
9993
26f63d276d89 (rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8910
diff changeset
126 (goto-char (point-min))
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
127 (while (re-search-forward rmail-fields-not-to-output limit t)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
128 (forward-line 0)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
129 (setq start (point))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
130 (while (progn (forward-line 1) (looking-at "[ \t]+"))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
131 (goto-char (line-end-position)))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
132 (delete-region start (point)))))))
9993
26f63d276d89 (rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8910
diff changeset
133
23042
4404e3d66e80 (rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents: 22740
diff changeset
134 ;;; There are functions elsewhere in Emacs that use this function;
4404e3d66e80 (rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents: 22740
diff changeset
135 ;;; look at them before you change the calling method.
16343
e2b0e3d63822 (rmail-fields-not-to-output): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 16188
diff changeset
136 ;;;###autoload
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
137 (defun rmail-output (file-name &optional count noattribute from-gnus)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
138 "Append this message to system-inbox-format mail file named FILE-NAME.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
139 A prefix argument COUNT says to output that many consecutive messages,
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
140 starting with the current one. Deleted messages are skipped and don't count.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
141 When called from lisp code, COUNT may be omitted and defaults to 1.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
142
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
143 If the pruned message header is shown on the current message, then
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
144 messages will be appended with pruned headers; otherwise, messages
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
145 will be appended with their original headers.
4836
38a0f0209707 (rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents: 4265
diff changeset
146
7561
22a4985ddad3 (rmail-output): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7332
diff changeset
147 The default file name comes from `rmail-default-file',
5592
ee1ed3d9e517 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5590
diff changeset
148 which is updated to the name you use in this command.
ee1ed3d9e517 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5590
diff changeset
149
4265
2812d8619305 (rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents: 4264
diff changeset
150 The optional third argument NOATTRIBUTE, if non-nil, says not
5011
22c7b341d536 (rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents: 4851
diff changeset
151 to set the `filed' attribute, and not to display a message.
22c7b341d536 (rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents: 4851
diff changeset
152
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
153 The optional fourth argument FROM-GNUS is set when called from GNUS."
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
154 (interactive
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
155 (list (rmail-output-read-file-name)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
156 (prefix-numeric-value current-prefix-arg)))
1866
a712cff3b6e7 * rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents: 1460
diff changeset
157 (or count (setq count 1))
202
ae5ace097df2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 145
diff changeset
158 (setq file-name
ae5ace097df2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 145
diff changeset
159 (expand-file-name file-name
5590
1d9fabec8bec Use new names rmail-default-file and rmail-default-rmail-file.
Richard M. Stallman <rms@gnu.org>
parents: 5399
diff changeset
160 (and rmail-default-file
1d9fabec8bec Use new names rmail-default-file and rmail-default-rmail-file.
Richard M. Stallman <rms@gnu.org>
parents: 5399
diff changeset
161 (file-name-directory rmail-default-file))))
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
162 (if (and (file-readable-p file-name) (mail-file-babyl-p file-name))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
163 (error "BABYL output not supported.")
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
164 (with-current-buffer rmail-buffer
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
165 (let ((orig-count count)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
166 (rmailbuf (current-buffer))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
167 (destbuf (find-buffer-visiting file-name))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
168 (case-fold-search t))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
169 (while (> count 0)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
170 (with-temp-buffer
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
171 (insert-buffer-substring rmailbuf)
88345
4fd331e58549 (rmail-output): Bind buffer-file-coding-system even when rmail-enable-mime is nil.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88339
diff changeset
172 ;; ensure we can write without barfing on exotic characters
4fd331e58549 (rmail-output): Bind buffer-file-coding-system even when rmail-enable-mime is nil.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88339
diff changeset
173 (setq buffer-file-coding-system
4fd331e58549 (rmail-output): Bind buffer-file-coding-system even when rmail-enable-mime is nil.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88339
diff changeset
174 (or rmail-file-coding-system 'raw-text))
4fd331e58549 (rmail-output): Bind buffer-file-coding-system even when rmail-enable-mime is nil.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88339
diff changeset
175 ;; prune junk headers
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
176 (rmail-delete-unwanted-fields)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
177 (if (not destbuf)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
178 ;; The destination file is not being visited, just write
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
179 ;; out the processed message.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
180 (write-region (point-min) (point-max) file-name
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
181 t (when noattribute 'nomsg))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
182 ;; The destination file is being visited. Update it.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
183 (let ((msg-string (buffer-string)))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
184 (with-current-buffer destbuf
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
185 ;; Determine if the destination file is an Rmail file.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
186 (let ((buffer-read-only nil)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
187 (dest-current-message
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
188 (and (boundp 'rmail-current-message)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
189 rmail-current-message)))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
190 (if dest-current-message
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
191 ;; The buffer is an Rmail buffer. Append the
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
192 ;; message.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
193 (progn
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
194 (widen)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
195 (narrow-to-region (point-max) (point-max))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
196 (insert msg-string)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
197 (insert "\n")
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
198 (rmail-process-new-messages)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
199 (rmail-show-message dest-current-message))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
200 ;; The destination file is not an Rmail file, just
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
201 ;; insert at the end.
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
202 (goto-char (point-max))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
203 (insert msg-string)))))))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
204 (unless noattribute
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
205 (when (equal major-mode 'rmail-mode)
88295
d8903e2bde16 (rmail-output): Make sure headers are properly
Henrik Enberg <henrik.enberg@telia.com>
parents: 88293
diff changeset
206 (rmail-set-attribute "filed" t)
d8903e2bde16 (rmail-output): Make sure headers are properly
Henrik Enberg <henrik.enberg@telia.com>
parents: 88293
diff changeset
207 (rmail-header-hide-headers)))
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
208 (setq count (1- count))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
209 (unless from-gnus
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
210 (let ((next-message-p
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
211 (if rmail-delete-after-output
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
212 (rmail-delete-forward)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
213 (when (> count 0)
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
214 (rmail-next-undeleted-message 1))))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
215 (num-appended (- orig-count count)))
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
216 (when (and (> count 0) (not next-message-p))
88295
d8903e2bde16 (rmail-output): Make sure headers are properly
Henrik Enberg <henrik.enberg@telia.com>
parents: 88293
diff changeset
217 (error (format "Only %d message%s appended" num-appended
d8903e2bde16 (rmail-output): Make sure headers are properly
Henrik Enberg <henrik.enberg@telia.com>
parents: 88293
diff changeset
218 (if (= num-appended 1) "" "s")))
88293
93ee62702af5 (rmail-delete-unwanted-fields): Handle mbox format.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88219
diff changeset
219 (setq count 0)))))))))
88128
b621daa96824 Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents: 49587
diff changeset
220
17267
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
221 ;;;###autoload
17305
7a3eb2b72749 (rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents: 17268
diff changeset
222 (defun rmail-output-body-to-file (file-name)
17267
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
223 "Write this message body to the file FILE-NAME.
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
224 FILE-NAME defaults, interactively, from the Subject field of the message."
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
225 (interactive
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
226 (let ((default-file (or (mail-fetch-field "Subject")
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
227 rmail-default-body-file)))
22202
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
228 (list (setq rmail-default-body-file
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
229 (read-file-name
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
230 "Output message body to file: "
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
231 (and default-file (file-name-directory default-file))
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
232 default-file
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
233 nil default-file)))))
cca4f78e5e2a (rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents: 19961
diff changeset
234 (setq file-name
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
235 (expand-file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
236 file-name
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
237 (and rmail-default-body-file
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
238 (file-name-directory rmail-default-body-file))))
17267
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
239 (save-excursion
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
240 (goto-char (point-min))
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
241 (search-forward "\n\n")
17305
7a3eb2b72749 (rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents: 17268
diff changeset
242 (and (file-exists-p file-name)
7a3eb2b72749 (rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents: 17268
diff changeset
243 (not (y-or-n-p (message "File %s exists; overwrite? " file-name)))
7a3eb2b72749 (rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents: 17268
diff changeset
244 (error "Operation aborted"))
17267
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
245 (write-region (point) (point-max) file-name)
88219
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
246 (when (equal major-mode 'rmail-mode)
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
247 (rmail-desc-set-attribute rmail-desc-stored-index
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
248 t rmail-current-message)))
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
249 (when rmail-delete-after-output
1044c364f41f (rmail-output-read-file-name): Simplify.
Henrik Enberg <henrik.enberg@telia.com>
parents: 88177
diff changeset
250 (rmail-delete-forward)))
17267
958340c8db5e (rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16343
diff changeset
251
88155
d7ddb3e565de sync with trunk
Henrik Enberg <henrik.enberg@telia.com>
parents: 88128
diff changeset
252 ;;; arch-tag: 447117c6-1a9a-4b88-aa43-3101b043e3a4
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 202
diff changeset
253 ;;; rmailout.el ends here