Mercurial > emacs
annotate lisp/mail/rmailout.el @ 88139:de90332b77e9
Add patches from Eli Tziperman <eli@beach.weizmann.ac.il>, and John Paul
Wallington <jpw@gnu.org>
Avoid loading CL at runtime.
(vm-use-spam-filter.el, spam-filter-working-with-vm): Add support for
use by VM.
(rmail-spam-filter-min-region-length-added-to-spam-list): New
variable.
(rmail-spam-filter): Do not assume the message is narrowed, do it
explicitly using the rmail message descriptor; use `rmail-output'
instead of `rmail-output-to-rmail-file'; take into account the state
of the `rmail-delete-after-output' variable.
(rmail-spam-filter-add-region-to-spam-list,
spam-filter-bbdb-dont-create-entries-for-deleted-messages): Rewrite.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Sat, 22 Feb 2003 15:37:59 +0000 |
parents | b621daa96824 |
children | d7ddb3e565de |
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 |
37613
d5dbe7f1300c
(rmail-output-read-rmail-file-name): Be sure to
Gerd Moellmann <gerd@gnu.org>
parents:
36717
diff
changeset
|
3 ;; Copyright (C) 1985, 1987, 1993, 1994, 2001 Free Software Foundation, Inc. |
845 | 4 |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
5 ;; Maintainer: FSF |
814
38b2499cb3e9
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
6 ;; Keywords: mail |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
7 |
63 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; 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
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
63 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
14169 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
63 | 24 |
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38304
diff
changeset
|
25 ;;; Commentary: |
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38304
diff
changeset
|
26 |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
27 ;;; Code: |
63 | 28 |
23986 | 29 (provide 'rmailout) |
5859
84ad3a2c5373
Add (require 'rmail) so the macro will be byte-compiled properly.
Karl Heuer <kwzh@gnu.org>
parents:
5802
diff
changeset
|
30 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
31 (eval-when-compile |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
32 (require 'rmail) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
33 (require 'rmaildesc)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
34 |
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 | 37 (defcustom rmail-output-file-alist nil |
145 | 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 | 43 a file name as a string." |
44 :type '(repeat (cons regexp | |
45 (choice :value "" | |
46 (string :tag "File Name") | |
47 sexp))) | |
48 :group 'rmail-output) | |
145 | 49 |
23986 | 50 (defun rmail-output-read-rmail-file-name () |
51 "Read the file name to use for `rmail-output-to-rmail-file'. | |
52 Set `rmail-default-rmail-file' to this name as well as returning it." | |
53 (let ((default-file | |
54 (let (answer tail) | |
55 (setq tail rmail-output-file-alist) | |
56 ;; Suggest a file based on a pattern match. | |
57 (while (and tail (not answer)) | |
58 (save-excursion | |
37613
d5dbe7f1300c
(rmail-output-read-rmail-file-name): Be sure to
Gerd Moellmann <gerd@gnu.org>
parents:
36717
diff
changeset
|
59 (set-buffer rmail-buffer) |
23986 | 60 (goto-char (point-min)) |
61 (if (re-search-forward (car (car tail)) nil t) | |
62 (setq answer (eval (cdr (car tail))))) | |
63 (setq tail (cdr tail)))) | |
64 ;; If no suggestions, use same file as last time. | |
65 (expand-file-name (or answer rmail-default-rmail-file))))) | |
66 (let ((read-file | |
67 (expand-file-name | |
68 (read-file-name | |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
69 (concat "Output message to Rmail (mbox) file: (default " |
23986 | 70 (file-name-nondirectory default-file) |
71 ") ") | |
72 (file-name-directory default-file) | |
73 (abbreviate-file-name default-file)) | |
74 (file-name-directory default-file)))) | |
75 ;; If the user enters just a directory, | |
76 ;; use the name within that directory chosen by the default. | |
77 (setq rmail-default-rmail-file | |
78 (if (file-directory-p read-file) | |
79 (expand-file-name (file-name-nondirectory default-file) | |
80 read-file) | |
81 read-file))))) | |
82 | |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
83 ;;; mbox: deprecated |
23986 | 84 (defun rmail-output-read-file-name () |
85 "Read the file name to use for `rmail-output'. | |
86 Set `rmail-default-file' to this name as well as returning it." | |
87 (let ((default-file | |
88 (let (answer tail) | |
89 (setq tail rmail-output-file-alist) | |
90 ;; Suggest a file based on a pattern match. | |
91 (while (and tail (not answer)) | |
92 (save-excursion | |
93 (goto-char (point-min)) | |
94 (if (re-search-forward (car (car tail)) nil t) | |
95 (setq answer (eval (cdr (car tail))))) | |
96 (setq tail (cdr tail)))) | |
97 ;; If no suggestion, use same file as last time. | |
98 (or answer rmail-default-file)))) | |
99 (let ((read-file | |
100 (expand-file-name | |
101 (read-file-name | |
102 (concat "Output message to Unix mail file: (default " | |
103 (file-name-nondirectory default-file) | |
104 ") ") | |
105 (file-name-directory default-file) | |
106 (abbreviate-file-name default-file)) | |
107 (file-name-directory default-file)))) | |
108 (setq rmail-default-file | |
109 (if (file-directory-p read-file) | |
110 (expand-file-name (file-name-nondirectory default-file) | |
111 read-file) | |
112 (expand-file-name | |
113 (or read-file (file-name-nondirectory default-file)) | |
114 (file-name-directory default-file))))))) | |
115 | |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
116 ;;; mbox: ready |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
117 ;;; 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
|
118 ;;; 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
|
119 ;;;###autoload |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
120 (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
|
121 "Append the current message to an Rmail (mbox) file named FILE-NAME. |
63 | 122 If the file does not exist, ask if it should be created. |
123 If file is being visited, the message is appended to the Emacs | |
124 buffer visiting that file. | |
19961
be32396bfb04
(rmail-output-to-rmail-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
17631
diff
changeset
|
125 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
|
126 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
|
127 |
7332
e30a34bfc536
(rmail-output-menu): Set rmail-default-rmail-file.
Richard M. Stallman <rms@gnu.org>
parents:
7320
diff
changeset
|
128 The default file name comes from `rmail-default-rmail-file', |
5592 | 129 which is updated to the name you use in this command. |
130 | |
63 | 131 A prefix argument N says to output N consecutive messages |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
132 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
|
133 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
134 If optional argument STAY is non-nil, then leave the last filed |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
135 mesasge up instead of moving forward to the next non-deleted message." |
3657
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
136 (interactive |
23986 | 137 (list (rmail-output-read-rmail-file-name) |
138 (prefix-numeric-value current-prefix-arg))) | |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
139 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
140 ;; 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
|
141 (rmail-output file-name count nil nil) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
142 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
143 ;; Deal with the next message |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
144 (if rmail-delete-after-output |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
145 (unless |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
146 (if (and (= count 0) stay) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
147 (rmail-delete-message) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
148 (rmail-delete-forward)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
149 (setq count 0)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
150 (if (> count 0) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
151 (unless |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
152 (if (not stay) (rmail-next-undeleted-message 1)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
153 (setq count 0))))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
154 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
155 ;;; mbox: deprecated |
16343
e2b0e3d63822
(rmail-fields-not-to-output): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
16188
diff
changeset
|
156 ;;;###autoload |
17631 | 157 (defcustom rmail-fields-not-to-output nil |
158 "*Regexp describing fields to exclude when outputting a message to a file." | |
159 :type '(choice (const :tag "None" nil) | |
160 regexp) | |
161 :group 'rmail-output) | |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
162 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
163 ;;; mbox: deprecated |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
164 ;; Delete from the buffer header fields we don't want output. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
165 ;; NOT-RMAIL if t means this buffer does not have the full header |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
166 ;; and *** EOOH *** that a message in an Rmail file has. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
167 (defun rmail-delete-unwanted-fields (&optional not-rmail) |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
168 (if rmail-fields-not-to-output |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
169 (save-excursion |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
170 (goto-char (point-min)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
171 ;; Find the end of the header. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
172 (if (and (or not-rmail (search-forward "\n*** EOOH ***\n" nil t)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
173 (search-forward "\n\n" nil t)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
174 (let ((end (point-marker))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
175 (goto-char (point-min)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
176 (while (re-search-forward rmail-fields-not-to-output end t) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
177 (beginning-of-line) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
178 (delete-region (point) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
179 (progn (forward-line 1) (point))))))))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
180 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
181 ;;; mbox: ready |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
182 ;;; 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
|
183 ;;; 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
|
184 ;;;###autoload |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
185 (defun rmail-output (file-name &optional count noattribute ext) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
186 "Append an mbox formatted message to the mbox formatted file named |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
187 FILE-NAME. A prefix argument COUNT says to output COUNT consecutive |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
188 messages starting with the current one. Deleted messages are skipped |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
189 and don't count. When called from lisp code, COUNT may be omitted. |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
190 |
7561
22a4985ddad3
(rmail-output): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7332
diff
changeset
|
191 The default file name comes from `rmail-default-file', |
5592 | 192 which is updated to the name you use in this command. |
193 | |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
194 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
|
195 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
|
196 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
197 The optional fourth argument EXT is set when called from outside of an |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
198 Rmail function, for example by GNUS or Sendmail." |
63 | 199 (interactive |
23986 | 200 (list (rmail-output-read-file-name) |
201 (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
|
202 (or count (setq count 1)) |
202 | 203 (setq file-name |
204 (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
|
205 (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
|
206 (file-name-directory rmail-default-file)))) |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
207 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
208 ;; Use the Rmail buffer, likely narrowed, as the message source |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
209 ;; unless being called from an external party, such as GNUS or |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
210 ;; Sendmail. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
211 (unless ext |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
212 (set-buffer rmail-buffer)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
213 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
214 (let ((orig-count count) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
215 (src-buf (current-buffer)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
216 (dst-buf (find-buffer-visiting file-name)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
217 (current-message rmail-current-message) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
218 (tembuf (get-buffer-create " rmail-output")) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
219 (original-headers-p |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
220 (and (not ext) (not (rmail-msg-is-pruned))))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
221 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
222 ;; Output each message to the destination file. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
223 (while (> count 0) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
224 (save-excursion |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
225 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
226 ;; Copy the message, including all headers, to the temporary |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
227 ;; buffer. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
228 (set-buffer tembuf) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
229 (erase-buffer) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
230 (insert-buffer-substring src-buf) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
231 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
232 ;; Deal with MIME --- tbd. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
233 ;;(when rmail-enable-mime ... |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
234 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
235 ;; Determine whether a buffer is already visiting the output |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
236 ;; file. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
237 (if dst-buf |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
238 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
239 ;; The destination file is being visited. Update it. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
240 (progn |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
241 (set-buffer dst-buf) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
242 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
243 ;; Determine if the destination file is an Rmail file. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
244 (let ((buffer-read-only nil) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
245 (dst-current-message (and (boundp 'rmail-current-message) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
246 rmail-current-message))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
247 (if dst-current-message |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
248 |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
249 ;; The buffer is an Rmail buffer. Append the message. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
250 (progn |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
251 (widen) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
252 (narrow-to-region (point-max) (point-max)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
253 (insert-buffer-substring src-buf) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
254 (insert "\n") |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
255 (rmail-process-new-messages) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
256 (rmail-show-message dst-current-message)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
257 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
258 ;; The destination file is not an Rmail file, just |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
259 ;; insert at the end. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
260 (goto-char (point-max)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
261 (insert-buffer-substring src-buf)))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
262 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
263 ;; The destination file is not being visited, just write out |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
264 ;; the processed message. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
265 (write-region (point-min) (point-max) file-name t |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
266 (if noattribute 'nomsg)))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
267 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
268 ;; Do housekeeping, such as setting the "Filed" attribute, if |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
269 ;; necessary and moving to the next message. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
270 (or noattribute |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
271 (if (equal major-mode 'rmail-mode) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
272 (progn |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
273 (rmail-set-attribute "filed" t current-message) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
274 (setq current-message (1+ current-message))))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
275 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
276 ;; Determine if Rmail post output operations need to be handled. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
277 (or ext |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
278 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
279 ;; They do. Move to the next non-deleted message. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
280 (let ((next-message-p |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
281 (if rmail-delete-after-output |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
282 (rmail-delete-forward) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
283 (if (> count 1) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
284 (rmail-next-undeleted-message 1)))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
285 (num-appended (- orig-count count))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
286 (if (and (> count 1) (not next-message-p)) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
287 (progn |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
288 (error |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
289 (save-excursion |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
290 (set-buffer src-buf) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
291 (format "Only %d message%s appended" num-appended |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
292 (if (= num-appended 1) "" "s")))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
293 (setq count 0))))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
294 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
295 ;; Decrement the count for the next iteration. If an error has |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
296 ;; occurred, then count will be -1, which is every bit as good |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
297 ;; as 0. |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
298 (setq count (1- count))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
299 (kill-buffer tembuf))) |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
300 |
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
301 ;;; mbox: ready |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
302 ;;;###autoload |
17305
7a3eb2b72749
(rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents:
17268
diff
changeset
|
303 (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
|
304 "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
|
305 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
|
306 (interactive |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
307 (let ((default-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
|
308 (or (mail-fetch-field "Subject") |
cca4f78e5e2a
(rmail-output-body-to-file): Avoid error if message has no subject.
Richard M. Stallman <rms@gnu.org>
parents:
19961
diff
changeset
|
309 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
|
310 (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
|
311 (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
|
312 "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
|
313 (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
|
314 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
|
315 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
|
316 (setq 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
|
317 (expand-file-name 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
|
318 (and 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
|
319 (file-name-directory rmail-default-body-file)))) |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
320 (save-excursion |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
321 (goto-char (point-min)) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
322 (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
|
323 (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
|
324 (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
|
325 (error "Operation aborted")) |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
326 (write-region (point) (point-max) file-name) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
327 (if (equal major-mode 'rmail-mode) |
88128
b621daa96824
Attempt to minimize byte compilation warnings.
Paul Reilly <pmr@pajato.com>
parents:
49587
diff
changeset
|
328 (rmail-desc-set-attribute rmail-desc-stored-index t rmail-current-message))) |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
329 (if rmail-delete-after-output |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
330 (rmail-delete-forward))) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
331 |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
332 ;;; rmailout.el ends here |