Mercurial > emacs
annotate lisp/mail/rmailout.el @ 54585:1335f36a4a64
*** empty log message ***
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 26 Mar 2004 15:30:42 +0000 |
parents | 695cf19ef79e |
children | 18a818a2ee7c 375f2633d815 |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38304
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 |
5859
84ad3a2c5373
Add (require 'rmail) so the macro will be byte-compiled properly.
Karl Heuer <kwzh@gnu.org>
parents:
5802
diff
changeset
|
29 (require 'rmail) |
23986 | 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 |
16188
5bc27ae3cd14
(rmail-output-file-alist): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
32 ;;;###autoload |
17631 | 33 (defcustom rmail-output-file-alist nil |
145 | 34 "*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
|
35 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
|
36 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
|
37 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
|
38 or more generally it may be any kind of expression that returns |
17631 | 39 a file name as a string." |
40 :type '(repeat (cons regexp | |
41 (choice :value "" | |
42 (string :tag "File Name") | |
43 sexp))) | |
44 :group 'rmail-output) | |
145 | 45 |
23986 | 46 (defun rmail-output-read-rmail-file-name () |
47 "Read the file name to use for `rmail-output-to-rmail-file'. | |
48 Set `rmail-default-rmail-file' to this name as well as returning it." | |
49 (let ((default-file | |
50 (let (answer tail) | |
51 (setq tail rmail-output-file-alist) | |
52 ;; Suggest a file based on a pattern match. | |
53 (while (and tail (not answer)) | |
54 (save-excursion | |
37613
d5dbe7f1300c
(rmail-output-read-rmail-file-name): Be sure to
Gerd Moellmann <gerd@gnu.org>
parents:
36717
diff
changeset
|
55 (set-buffer rmail-buffer) |
23986 | 56 (goto-char (point-min)) |
57 (if (re-search-forward (car (car tail)) nil t) | |
58 (setq answer (eval (cdr (car tail))))) | |
59 (setq tail (cdr tail)))) | |
60 ;; If no suggestions, use same file as last time. | |
61 (expand-file-name (or answer rmail-default-rmail-file))))) | |
62 (let ((read-file | |
63 (expand-file-name | |
64 (read-file-name | |
65 (concat "Output message to Rmail file: (default " | |
66 (file-name-nondirectory default-file) | |
67 ") ") | |
68 (file-name-directory default-file) | |
69 (abbreviate-file-name default-file)) | |
70 (file-name-directory default-file)))) | |
71 ;; If the user enters just a directory, | |
72 ;; use the name within that directory chosen by the default. | |
73 (setq rmail-default-rmail-file | |
74 (if (file-directory-p read-file) | |
75 (expand-file-name (file-name-nondirectory default-file) | |
76 read-file) | |
77 read-file))))) | |
78 | |
79 (defun rmail-output-read-file-name () | |
80 "Read the file name to use for `rmail-output'. | |
81 Set `rmail-default-file' to this name as well as returning it." | |
82 (let ((default-file | |
83 (let (answer tail) | |
84 (setq tail rmail-output-file-alist) | |
85 ;; Suggest a file based on a pattern match. | |
86 (while (and tail (not answer)) | |
87 (save-excursion | |
88 (goto-char (point-min)) | |
89 (if (re-search-forward (car (car tail)) nil t) | |
90 (setq answer (eval (cdr (car tail))))) | |
91 (setq tail (cdr tail)))) | |
92 ;; If no suggestion, use same file as last time. | |
93 (or answer rmail-default-file)))) | |
94 (let ((read-file | |
95 (expand-file-name | |
96 (read-file-name | |
97 (concat "Output message to Unix mail file: (default " | |
98 (file-name-nondirectory default-file) | |
99 ") ") | |
100 (file-name-directory default-file) | |
101 (abbreviate-file-name default-file)) | |
102 (file-name-directory default-file)))) | |
103 (setq rmail-default-file | |
104 (if (file-directory-p read-file) | |
105 (expand-file-name (file-name-nondirectory default-file) | |
106 read-file) | |
107 (expand-file-name | |
108 (or read-file (file-name-nondirectory default-file)) | |
109 (file-name-directory default-file))))))) | |
110 | |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
111 ;;; 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
|
112 ;;; 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
|
113 ;;;###autoload |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
114 (defun rmail-output-to-rmail-file (file-name &optional count stay) |
63 | 115 "Append the current message to an Rmail file named FILE-NAME. |
116 If the file does not exist, ask if it should be created. | |
117 If file is being visited, the message is appended to the Emacs | |
118 buffer visiting that file. | |
19961
be32396bfb04
(rmail-output-to-rmail-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
17631
diff
changeset
|
119 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
|
120 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
|
121 |
7332
e30a34bfc536
(rmail-output-menu): Set rmail-default-rmail-file.
Richard M. Stallman <rms@gnu.org>
parents:
7320
diff
changeset
|
122 The default file name comes from `rmail-default-rmail-file', |
5592 | 123 which is updated to the name you use in this command. |
124 | |
63 | 125 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
|
126 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
|
127 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
128 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
|
129 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
|
130 (interactive |
23986 | 131 (list (rmail-output-read-rmail-file-name) |
132 (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
|
133 (or count (setq count 1)) |
202 | 134 (setq file-name |
135 (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
|
136 (file-name-directory rmail-default-rmail-file))) |
13054
b2df0396fae2
(rmail-file-p): Function moved to mail-utils.el
Richard M. Stallman <rms@gnu.org>
parents:
10101
diff
changeset
|
137 (if (and (file-readable-p file-name) (not (mail-file-babyl-p file-name))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
138 (rmail-output file-name count) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
139 (rmail-maybe-set-message-counters) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
140 (setq file-name (abbreviate-file-name file-name)) |
17268
c945c9845f01
(rmail-output-to-rmail-file):
Richard M. Stallman <rms@gnu.org>
parents:
17267
diff
changeset
|
141 (or (find-buffer-visiting file-name) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
142 (file-exists-p file-name) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
143 (if (yes-or-no-p |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
144 (concat "\"" file-name "\" does not exist, create it? ")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
145 (let ((file-buffer (create-file-buffer file-name))) |
63 | 146 (save-excursion |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
147 (set-buffer file-buffer) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
148 (rmail-insert-rmail-file-header) |
36717
919d4bc1079b
(rmail-output-to-rmail-file): When writing the
Eli Zaretskii <eliz@gnu.org>
parents:
29160
diff
changeset
|
149 (let ((require-final-newline nil) |
919d4bc1079b
(rmail-output-to-rmail-file): When writing the
Eli Zaretskii <eliz@gnu.org>
parents:
29160
diff
changeset
|
150 (coding-system-for-write |
919d4bc1079b
(rmail-output-to-rmail-file): When writing the
Eli Zaretskii <eliz@gnu.org>
parents:
29160
diff
changeset
|
151 (or rmail-file-coding-system |
919d4bc1079b
(rmail-output-to-rmail-file): When writing the
Eli Zaretskii <eliz@gnu.org>
parents:
29160
diff
changeset
|
152 'emacs-mule-unix))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
153 (write-region (point-min) (point-max) file-name t 1))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
154 (kill-buffer file-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
155 (error "Output file does not exist"))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
156 (while (> count 0) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
157 (let (redelete) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
158 (unwind-protect |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
159 (progn |
37613
d5dbe7f1300c
(rmail-output-read-rmail-file-name): Be sure to
Gerd Moellmann <gerd@gnu.org>
parents:
36717
diff
changeset
|
160 (set-buffer rmail-buffer) |
5278
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
161 ;; Temporarily turn off Deleted attribute. |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
162 ;; Do this outside the save-restriction, since it would |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
163 ;; shift the place in the buffer where the visible text starts. |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
164 (if (rmail-message-deleted-p rmail-current-message) |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
165 (progn (setq redelete t) |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
166 (rmail-set-attribute "deleted" nil))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
167 (save-restriction |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
168 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
169 ;; Decide whether to append to a file or to an Emacs buffer. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
170 (save-excursion |
17268
c945c9845f01
(rmail-output-to-rmail-file):
Richard M. Stallman <rms@gnu.org>
parents:
17267
diff
changeset
|
171 (let ((buf (find-buffer-visiting file-name)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
172 (cur (current-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
173 (beg (1+ (rmail-msgbeg rmail-current-message))) |
22259
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
174 (end (1+ (rmail-msgend rmail-current-message))) |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
175 (coding-system-for-write |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
176 (or rmail-file-coding-system |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
177 'emacs-mule-unix))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
178 (if (not buf) |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
179 ;; Output to a file. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
180 (if rmail-fields-not-to-output |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
181 ;; Delete some fields while we output. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
182 (let ((obuf (current-buffer))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
183 (set-buffer (get-buffer-create " rmail-out-temp")) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
184 (insert-buffer-substring obuf beg end) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
185 (rmail-delete-unwanted-fields) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
186 (append-to-file (point-min) (point-max) file-name) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
187 (set-buffer obuf) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
188 (kill-buffer (get-buffer " rmail-out-temp"))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
189 (append-to-file beg end file-name)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
190 (if (eq buf (current-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
191 (error "Can't output message to same file it's already in")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
192 ;; File has been visited, in buffer BUF. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
193 (set-buffer buf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
194 (let ((buffer-read-only nil) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
195 (msg (and (boundp 'rmail-current-message) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
196 rmail-current-message))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
197 ;; If MSG is non-nil, buffer is in RMAIL mode. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
198 (if msg |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
199 (progn |
5331
a74ffe260236
(rmail-output-to-rmail-file): When copying to a buffer,
Richard M. Stallman <rms@gnu.org>
parents:
5278
diff
changeset
|
200 ;; Turn on auto save mode, if it's off in this |
a74ffe260236
(rmail-output-to-rmail-file): When copying to a buffer,
Richard M. Stallman <rms@gnu.org>
parents:
5278
diff
changeset
|
201 ;; buffer but enabled by default. |
a74ffe260236
(rmail-output-to-rmail-file): When copying to a buffer,
Richard M. Stallman <rms@gnu.org>
parents:
5278
diff
changeset
|
202 (and (not buffer-auto-save-file-name) |
a74ffe260236
(rmail-output-to-rmail-file): When copying to a buffer,
Richard M. Stallman <rms@gnu.org>
parents:
5278
diff
changeset
|
203 auto-save-default |
a74ffe260236
(rmail-output-to-rmail-file): When copying to a buffer,
Richard M. Stallman <rms@gnu.org>
parents:
5278
diff
changeset
|
204 (auto-save-mode t)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
205 (rmail-maybe-set-message-counters) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
206 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
207 (narrow-to-region (point-max) (point-max)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
208 (insert-buffer-substring cur beg end) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
209 (goto-char (point-min)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
210 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
211 (search-backward "\n\^_") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
212 (narrow-to-region (point) (point-max)) |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
213 (rmail-delete-unwanted-fields) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
214 (rmail-count-new-messages t) |
5278
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
215 (if (rmail-summary-exists) |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
216 (rmail-select-summary |
92268e08c166
(rmail-output-to-rmail-file): Call rmail-update-summary.
Richard M. Stallman <rms@gnu.org>
parents:
5051
diff
changeset
|
217 (rmail-update-summary))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
218 (rmail-show-message msg)) |
22259
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
219 ;; Output file not in rmail mode => just insert at the end. |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
220 (narrow-to-region (point-min) (1+ (buffer-size))) |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
221 (goto-char (point-max)) |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
222 (insert-buffer-substring cur beg end) |
e7a998137db5
(rmail-output-to-rmail-file): Specify the coding system for writing.
Richard M. Stallman <rms@gnu.org>
parents:
22202
diff
changeset
|
223 (rmail-delete-unwanted-fields))))))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
224 (rmail-set-attribute "filed" t)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
225 (if redelete (rmail-set-attribute "deleted" t)))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
226 (setq count (1- count)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
227 (if rmail-delete-after-output |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
228 (unless |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
229 (if (and (= count 0) stay) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
230 (rmail-delete-message) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
231 (rmail-delete-forward)) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
232 (setq count 0)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
233 (if (> count 0) |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
234 (unless |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
235 (if (not stay) (rmail-next-undeleted-message 1)) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
24838
diff
changeset
|
236 (setq count 0))))))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
237 |
16343
e2b0e3d63822
(rmail-fields-not-to-output): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
16188
diff
changeset
|
238 ;;;###autoload |
17631 | 239 (defcustom rmail-fields-not-to-output nil |
240 "*Regexp describing fields to exclude when outputting a message to a file." | |
241 :type '(choice (const :tag "None" nil) | |
242 regexp) | |
243 :group 'rmail-output) | |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
244 |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
245 ;; 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
|
246 ;; 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
|
247 ;; 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
|
248 (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
|
249 (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
|
250 (save-excursion |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
251 (goto-char (point-min)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
252 ;; Find the end of the header. |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
253 (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
|
254 (search-forward "\n\n" nil t)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
255 (let ((end (point-marker))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
256 (goto-char (point-min)) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
257 (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
|
258 (beginning-of-line) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
259 (delete-region (point) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
260 (progn (forward-line 1) (point))))))))) |
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
261 |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
262 ;;; 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
|
263 ;;; 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
|
264 ;;;###autoload |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
265 (defun rmail-output (file-name &optional count noattribute from-gnus) |
6651 | 266 "Append this message to system-inbox-format mail file named FILE-NAME. |
63 | 267 A prefix argument N says to output N consecutive messages |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
268 starting with the current one. Deleted messages are skipped and don't count. |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
269 When called from lisp code, N may be omitted. |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
270 |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
271 If the pruned message header is shown on the current message, then |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
272 messages will be appended with pruned headers; otherwise, messages |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
273 will be appended with their original headers. |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
274 |
7561
22a4985ddad3
(rmail-output): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7332
diff
changeset
|
275 The default file name comes from `rmail-default-file', |
5592 | 276 which is updated to the name you use in this command. |
277 | |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
278 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
|
279 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
|
280 |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
281 The optional fourth argument FROM-GNUS is set when called from GNUS." |
63 | 282 (interactive |
23986 | 283 (list (rmail-output-read-file-name) |
284 (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
|
285 (or count (setq count 1)) |
202 | 286 (setq file-name |
287 (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
|
288 (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
|
289 (file-name-directory rmail-default-file)))) |
13054
b2df0396fae2
(rmail-file-p): Function moved to mail-utils.el
Richard M. Stallman <rms@gnu.org>
parents:
10101
diff
changeset
|
290 (if (and (file-readable-p file-name) (mail-file-babyl-p file-name)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
291 (rmail-output-to-rmail-file file-name count) |
37613
d5dbe7f1300c
(rmail-output-read-rmail-file-name): Be sure to
Gerd Moellmann <gerd@gnu.org>
parents:
36717
diff
changeset
|
292 (set-buffer rmail-buffer) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
293 (let ((orig-count count) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
294 (rmailbuf (current-buffer)) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
295 (case-fold-search t) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
296 (tembuf (get-buffer-create " rmail-output")) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
297 (original-headers-p |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
298 (and (not from-gnus) |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
299 (save-excursion |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
300 (save-restriction |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
301 (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max)) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
302 (goto-char (point-min)) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
303 (forward-line 1) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
304 (= (following-char) ?0))))) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
305 header-beginning |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
306 mail-from mime-version content-type) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
307 (while (> count 0) |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
308 ;; Preserve the Mail-From and MIME-Version fields |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
309 ;; even if they have been pruned. |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
310 (or from-gnus |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
311 (save-excursion |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
312 (save-restriction |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
313 (widen) |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
314 (goto-char (rmail-msgbeg rmail-current-message)) |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
315 (setq header-beginning (point)) |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
316 (search-forward "\n*** EOOH ***\n") |
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
317 (narrow-to-region header-beginning (point)) |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
318 (setq mail-from (mail-fetch-field "Mail-From")) |
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
319 (unless rmail-enable-mime |
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
320 (setq mime-version (mail-fetch-field "MIME-Version") |
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
321 content-type (mail-fetch-field "Content-type")))))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
322 (save-excursion |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
323 (set-buffer tembuf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
324 (erase-buffer) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
325 (insert-buffer-substring rmailbuf) |
38304
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
326 (when rmail-enable-mime |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
327 (if original-headers-p |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
328 (delete-region (goto-char (point-min)) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
329 (if (search-forward "\n*** EOOH ***\n") |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
330 (match-end 0))) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
331 (goto-char (point-min)) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
332 (forward-line 2) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
333 (delete-region (point-min)(point)) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
334 (search-forward "\n*** EOOH ***\n") |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
335 (delete-region (match-beginning 0) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
336 (if (search-forward "\n\n") |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
337 (1- (match-end 0))))) |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
338 (setq buffer-file-coding-system (or rmail-file-coding-system |
f818b591ff17
(rmail-output): Fix duplicate MIME-Version:
Gerd Moellmann <gerd@gnu.org>
parents:
37613
diff
changeset
|
339 'raw-text))) |
9993
26f63d276d89
(rmail-fields-not-to-output): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8910
diff
changeset
|
340 (rmail-delete-unwanted-fields t) |
23528
3bb7a66a51a8
(rmail-output): Insert newline only if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
23042
diff
changeset
|
341 (or (bolp) (insert "\n")) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
342 (goto-char (point-min)) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
343 (if mail-from |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
344 (insert mail-from "\n") |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
345 (insert "From " |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
346 (mail-strip-quoted-names (or (mail-fetch-field "from") |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
347 (mail-fetch-field "really-from") |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
348 (mail-fetch-field "sender") |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
349 "unknown")) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
350 " " (current-time-string) "\n")) |
23042
4404e3d66e80
(rmail-output): Always preserve MIME-Version field,
Richard M. Stallman <rms@gnu.org>
parents:
22740
diff
changeset
|
351 (if mime-version |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
352 (insert "MIME-Version: " mime-version |
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
353 "\nContent-type: " content-type "\n")) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
354 ;; ``Quote'' "\nFrom " as "\n>From " |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
355 ;; (note that this isn't really quoting, as there is no requirement |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
356 ;; that "\n[>]+From " be quoted in the same transparent way.) |
10101
c0afdaf34c6f
(rmail-output): Don't quote "From " lines unless the capitalization is exact.
Karl Heuer <kwzh@gnu.org>
parents:
9993
diff
changeset
|
357 (let ((case-fold-search nil)) |
c0afdaf34c6f
(rmail-output): Don't quote "From " lines unless the capitalization is exact.
Karl Heuer <kwzh@gnu.org>
parents:
9993
diff
changeset
|
358 (while (search-forward "\nFrom " nil t) |
c0afdaf34c6f
(rmail-output): Don't quote "From " lines unless the capitalization is exact.
Karl Heuer <kwzh@gnu.org>
parents:
9993
diff
changeset
|
359 (forward-char -5) |
c0afdaf34c6f
(rmail-output): Don't quote "From " lines unless the capitalization is exact.
Karl Heuer <kwzh@gnu.org>
parents:
9993
diff
changeset
|
360 (insert ?>))) |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
361 (write-region (point-min) (point-max) file-name t |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
362 (if noattribute 'nomsg))) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
363 (or noattribute |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
364 (if (equal major-mode 'rmail-mode) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
365 (rmail-set-attribute "filed" t))) |
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
366 (setq count (1- count)) |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
367 (or from-gnus |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
368 (let ((next-message-p |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
369 (if rmail-delete-after-output |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
370 (rmail-delete-forward) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
371 (if (> count 0) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
372 (rmail-next-undeleted-message 1)))) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
373 (num-appended (- orig-count count))) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
374 (if (and next-message-p original-headers-p) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
375 (rmail-toggle-header)) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
376 (if (and (> count 0) (not next-message-p)) |
49587
e82b3fe06d4c
(rmail-output): If preserving MIME-version, preserve Content-type too.
Francesco Potortì <pot@gnu.org>
parents:
38412
diff
changeset
|
377 (progn |
5011
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
378 (error |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
379 (save-excursion |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
380 (set-buffer rmailbuf) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
381 (format "Only %d message%s appended" num-appended |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
382 (if (= num-appended 1) "" "s")))) |
22c7b341d536
(rmail-output): New argument FROM-GNUS.
Richard M. Stallman <rms@gnu.org>
parents:
4851
diff
changeset
|
383 (setq count 0)))))) |
4836
38a0f0209707
(rmail-output): If message was shown with full headers,
Richard M. Stallman <rms@gnu.org>
parents:
4265
diff
changeset
|
384 (kill-buffer tembuf)))) |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
385 |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
386 ;;;###autoload |
17305
7a3eb2b72749
(rmail-output-body-to-file): Query if file exists.
Richard M. Stallman <rms@gnu.org>
parents:
17268
diff
changeset
|
387 (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
|
388 "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
|
389 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
|
390 (interactive |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
391 (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
|
392 (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
|
393 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
|
394 (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
|
395 (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
|
396 "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
|
397 (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
|
398 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
|
399 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
|
400 (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
|
401 (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
|
402 (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
|
403 (file-name-directory rmail-default-body-file)))) |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
404 (save-excursion |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
405 (goto-char (point-min)) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
406 (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
|
407 (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
|
408 (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
|
409 (error "Operation aborted")) |
17267
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
410 (write-region (point) (point-max) file-name) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
411 (if (equal major-mode 'rmail-mode) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
412 (rmail-set-attribute "stored" t))) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
413 (if rmail-delete-after-output |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
414 (rmail-delete-forward))) |
958340c8db5e
(rmail-output-body): New command.
Richard M. Stallman <rms@gnu.org>
parents:
16343
diff
changeset
|
415 |
52401 | 416 ;;; arch-tag: 447117c6-1a9a-4b88-aa43-3101b043e3a4 |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
417 ;;; rmailout.el ends here |