Mercurial > emacs
annotate lisp/mail/rmailout.el @ 107357:0f6a30c8d91a
Additional fix for rfc822-addresses (Bug#5692).
* mail/rfc822.el (rfc822-addresses): Use nested catches to ensure
that all errors are caught, and that the return value is always a
list (Bug#5692).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Mon, 08 Mar 2010 11:17:30 -0500 |
parents | 1d1d5d9bd884 |
children | 280c8ae2476d 376148b31b5e |
rev | line source |
---|---|
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
1 ;;; rmailout.el --- "RMAIL" mail reader for Emacs: output message to a file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
2 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
3 ;; Copyright (C) 1985, 1987, 1993, 1994, 2001, 2002, 2003, 2004, 2005, |
106815 | 4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
5 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
6 ;; Maintainer: FSF |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
7 ;; Keywords: mail |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
8 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
9 ;; This file is part of GNU Emacs. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
10 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
12 ;; it under the terms of the GNU General Public License as published by |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
14 ;; (at your option) any later version. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
15 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
16 ;; GNU Emacs is distributed in the hope that it will be useful, |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
19 ;; GNU General Public License for more details. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
20 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
21 ;; You should have received a copy of the GNU General Public License |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
23 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
24 ;;; Commentary: |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
25 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
26 ;;; Code: |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
27 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
28 (require 'rmail) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
29 (provide 'rmailout) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
30 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
31 (defcustom rmail-output-decode-coding nil |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
32 "If non-nil, do coding system decoding when outputting message as Babyl." |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
33 :type 'boolean |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
34 :group 'rmail-output) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
35 |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
36 ;; FIXME risky? |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
37 (defcustom rmail-output-file-alist nil |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
38 "Alist matching regexps to suggested output Rmail files. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
39 This is a list of elements of the form (REGEXP . NAME-EXP). |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
40 The suggestion is taken if REGEXP matches anywhere in the message buffer. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
41 NAME-EXP may be a string constant giving the file name to use, |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
42 or more generally it may be any kind of expression that returns |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
43 a file name as a string." |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
44 :type '(repeat (cons regexp |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
45 (choice :value "" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
46 (string :tag "File Name") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
47 sexp))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
48 :group 'rmail-output) |
104612
c220a29e75fd
Define risky-local-variable property here rather than in files.el.
Glenn Morris <rgm@gnu.org>
parents:
102913
diff
changeset
|
49 ;;;###autoload(put 'rmail-output-file-alist 'risky-local-variable t) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
50 |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
51 (defcustom rmail-fields-not-to-output nil |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
52 "Regexp describing fields to exclude when outputting a message to a file. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
53 The function `rmail-delete-unwanted-fields' uses this, ignoring case." |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
54 :type '(choice (const :tag "None" nil) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
55 regexp) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
56 :group 'rmail-output) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
57 |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
58 (defun rmail-output-read-file-name () |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
59 "Read the file name to use for `rmail-output'. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
60 Set `rmail-default-file' to this name as well as returning it." |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
61 (let ((default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
62 (let (answer tail) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
63 (setq tail rmail-output-file-alist) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
64 ;; Suggest a file based on a pattern match. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
65 (while (and tail (not answer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
66 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
67 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
68 (if (re-search-forward (car (car tail)) nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
69 (setq answer (eval (cdr (car tail))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
70 (setq tail (cdr tail)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
71 ;; If no suggestion, use same file as last time. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
72 (or answer rmail-default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
73 (let ((read-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
74 (expand-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
75 (read-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
76 (concat "Output message to mail file (default " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
77 (file-name-nondirectory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
78 "): ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
79 (file-name-directory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
80 (abbreviate-file-name default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
81 (file-name-directory default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
82 (setq rmail-default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
83 (if (file-directory-p read-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
84 (expand-file-name (file-name-nondirectory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
85 read-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
86 (expand-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
87 (or read-file (file-name-nondirectory default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
88 (file-name-directory default-file))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
89 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
90 (defun rmail-delete-unwanted-fields (preserve) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
91 "Delete all headers matching `rmail-fields-not-to-output'. |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
92 Retains headers matching the regexp PRESERVE. Ignores case. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
93 The buffer should be narrowed to just the header." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
94 (if rmail-fields-not-to-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
95 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
96 (goto-char (point-min)) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
97 (let ((case-fold-search t)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
98 (while (re-search-forward rmail-fields-not-to-output nil t) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
99 (beginning-of-line) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
100 (unless (looking-at preserve) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
101 (delete-region (point) (line-beginning-position 2)))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
102 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
103 (defun rmail-output-as-babyl (file-name nomsg) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
104 "Convert the current buffer's text to Babyl and output to FILE-NAME. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
105 Alters the current buffer's text, so it should be a temporary buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
106 If a buffer is visiting FILE-NAME, adds the text to that buffer |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
107 rather than saving the file directly. If the buffer is an Rmail buffer, |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
108 updates it accordingly. If no buffer is visiting FILE-NAME, appends |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
109 the text directly to FILE-NAME, and displays a \"Wrote file\" message |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
110 unless NOMSG is a symbol (neither nil nor t)." |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
111 (let ((coding-system-for-write 'emacs-mule-unix)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
112 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
113 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
114 (search-forward "\n\n" nil 'move) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
115 (narrow-to-region (point-min) (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
116 (if rmail-fields-not-to-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
117 (rmail-delete-unwanted-fields nil))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
118 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
119 ;; Convert to Babyl format. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
120 (rmail-convert-to-babyl-format) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
121 ;; Write it into the file, or its buffer. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
122 (let ((buf (find-buffer-visiting file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
123 (tembuf (current-buffer))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
124 (if (null buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
125 (write-region (point-min) (point-max) file-name t nomsg) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
126 (if (eq buf (current-buffer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
127 (error "Can't output message to same file it's already in")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
128 ;; File has been visited, in buffer BUF. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
129 (set-buffer buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
130 (let ((inhibit-read-only t) |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
131 (msg (bound-and-true-p rmail-current-message))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
132 ;; If MSG is non-nil, buffer is in RMAIL mode. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
133 (if msg |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
134 (rmail-output-to-babyl-buffer tembuf msg) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
135 ;; Output file not in rmail mode => just insert at the end. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
136 (narrow-to-region (point-min) (1+ (buffer-size))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
137 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
138 (insert-buffer-substring tembuf))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
139 |
102051
cb3542dc1e2f
(rmail-update-summary): Move declaration earlier in file.
Glenn Morris <rgm@gnu.org>
parents:
102050
diff
changeset
|
140 ;; Called only if rmail-summary-exists, which means rmailsum is loaded. |
cb3542dc1e2f
(rmail-update-summary): Move declaration earlier in file.
Glenn Morris <rgm@gnu.org>
parents:
102050
diff
changeset
|
141 (declare-function rmail-update-summary "rmailsum" (&rest ignore)) |
cb3542dc1e2f
(rmail-update-summary): Move declaration earlier in file.
Glenn Morris <rgm@gnu.org>
parents:
102050
diff
changeset
|
142 |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
143 (defun rmail-output-to-babyl-buffer (tembuf msg) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
144 "Copy message in TEMBUF into the current Babyl Rmail buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
145 Do what is necessary to make Rmail know about the new message, then |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
146 display message number MSG." |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
147 ;; Turn on Auto Save mode, if it's off in this buffer but enabled by default. |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
148 (and (not buffer-auto-save-file-name) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
149 auto-save-default |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
150 (auto-save-mode t)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
151 (rmail-maybe-set-message-counters) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
152 (widen) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
153 (narrow-to-region (point-max) (point-max)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
154 (insert-buffer-substring tembuf) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
155 (goto-char (point-min)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
156 (widen) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
157 (search-backward "\n\^_") |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
158 (narrow-to-region (point) (point-max)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
159 (rmail-count-new-messages t) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
160 (if (rmail-summary-exists) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
161 (rmail-select-summary (rmail-update-summary))) |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
162 (rmail-show-message-1 msg)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
163 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
164 (defun rmail-convert-to-babyl-format () |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
165 "Convert the mbox message in the current buffer to Babyl format." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
166 (let ((count 0) (start (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
167 (case-fold-search nil) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
168 (buffer-undo-list t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
169 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
170 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
171 (unless (looking-at "^From ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
172 (error "Invalid mbox message")) |
102912
45cc1409f5e2
* mail/rmailout.el (rmail-convert-to-babyl-format): Don't set "unseen".
Richard M. Stallman <rms@gnu.org>
parents:
102910
diff
changeset
|
173 (insert "\^L\n0,,\n*** EOOH ***\n") |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
174 (rmail-nuke-pinhead-header) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
175 ;; Decode base64 or quoted printable contents, Rmail style. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
176 (let* ((header-end (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
177 (and (re-search-forward "\n\n" nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
178 (1- (point))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
179 (case-fold-search t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
180 (quoted-printable-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
181 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
182 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
183 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
184 header-end t))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
185 (base64-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
186 (and |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
187 ;; Don't decode non-text data. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
188 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
189 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
190 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
191 header-end t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
192 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
193 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
194 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
195 header-end t))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
196 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
197 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
198 (if quoted-printable-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
199 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
200 (unless (mail-unquote-printable-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
201 header-end (point) nil t t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
202 (message "Malformed MIME quoted-printable message")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
203 ;; Change "quoted-printable" to "8bit", |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
204 ;; to reflect the decoding we just did. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
205 (goto-char quoted-printable-header-field-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
206 (delete-region (point) (search-backward ":")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
207 (insert ": 8bit"))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
208 (if base64-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
209 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
210 (when (condition-case nil |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
211 (progn |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
212 (base64-decode-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
213 (1+ header-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
214 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
215 ;; Prevent base64-decode-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
216 ;; from removing newline characters. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
217 (skip-chars-backward "\n\t ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
218 (point))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
219 t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
220 (error nil)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
221 ;; Change "base64" to "8bit", to reflect the |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
222 ;; decoding we just did. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
223 (goto-char base64-header-field-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
224 (delete-region (point) (search-backward ":")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
225 (insert ": 8bit"))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
226 ;; Transform anything within the message text |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
227 ;; that might appear to be the end of a Babyl-format message. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
228 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
229 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
230 (narrow-to-region start (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
231 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
232 (while (search-forward "\n\^_" nil t) ; single char |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
233 (replace-match "\n^_")))) ; 2 chars: "^" and "_" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
234 ;; This is for malformed messages that don't end in newline. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
235 ;; There shouldn't be any, but some users say occasionally |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
236 ;; there are some. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
237 (or (bolp) (newline)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
238 (insert ?\^_) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
239 (setq last-coding-system-used nil) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
240 ;; Decode coding system, following specs in the message header, |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
241 ;; and record what coding system was decoded. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
242 (if rmail-output-decode-coding |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
243 (let ((mime-charset |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
244 (if (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
245 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
246 (search-forward "\n\n" nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
247 (let ((case-fold-search t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
248 (re-search-backward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
249 rmail-mime-charset-pattern |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
250 start t))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
251 (intern (downcase (match-string 1)))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
252 (rmail-decode-region start (point) mime-charset))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
253 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
254 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
255 (forward-line 3) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
256 (insert "X-Coding-System: " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
257 (symbol-name last-coding-system-used) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
258 "\n"))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
259 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
260 (defun rmail-nuke-pinhead-header () |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
261 "Delete the \"From \" line in the current mbox message. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
262 The variable `rmail-unix-mail-delimiter' specifies the From line format. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
263 Replaces the From line with a \"Mail-from\" header. Adds \"Date\" and |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
264 \"From\" headers if they are not already present." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
265 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
266 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
267 (let ((start (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
268 (end (progn |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
269 (condition-case () |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
270 (search-forward "\n\n") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
271 (error |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
272 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
273 (insert "\n\n"))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
274 (point))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
275 has-from has-date) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
276 (narrow-to-region start end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
277 (let ((case-fold-search t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
278 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
279 (setq has-from (search-forward "\nFrom:" nil t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
280 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
281 (setq has-date (and (search-forward "\nDate:" nil t) (point))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
282 (goto-char start)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
283 (let ((case-fold-search nil)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
284 (if (re-search-forward (concat "^" rmail-unix-mail-delimiter) nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
285 (replace-match |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
286 (concat |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
287 "Mail-from: \\&" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
288 ;; Keep and reformat the date if we don't |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
289 ;; have a Date: field. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
290 (if has-date |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
291 "" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
292 (concat |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
293 "Date: \\2, \\4 \\3 \\9 \\5 " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
294 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
295 ;; The timezone could be matched by group 7 or group 10. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
296 ;; If neither of them matched, assume EST, since only |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
297 ;; Easterners would be so sloppy. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
298 ;; It's a shame the substitution can't use "\\10". |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
299 (cond |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
300 ((/= (match-beginning 7) (match-end 7)) "\\7") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
301 ((/= (match-beginning 10) (match-end 10)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
302 (buffer-substring (match-beginning 10) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
303 (match-end 10))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
304 (t "EST")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
305 "\n")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
306 ;; Keep and reformat the sender if we don't |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
307 ;; have a From: field. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
308 (if has-from |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
309 "" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
310 "From: \\1\n")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
311 t))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
312 |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
313 (autoload 'mail-mbox-from "mail-utils") |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
314 |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
315 (defun rmail-output-as-mbox (file-name nomsg &optional as-seen) |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
316 "Convert the current buffer's text to mbox and output to FILE-NAME. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
317 Alters the current buffer's text, so it should be a temporary buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
318 If a buffer is visiting FILE-NAME, adds the text to that buffer |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
319 rather than saving the file directly. If the buffer is an Rmail buffer, |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
320 updates it accordingly. If no buffer is visiting FILE-NAME, appends |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
321 the text directly to FILE-NAME, and displays a \"Wrote file\" message |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
322 unless NOMSG is a symbol (neither nil nor t). |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
323 AS-SEEN is non-nil if we are copying the message \"as seen\"." |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
324 (let ((case-fold-search t) |
102050
ec7d88c6aa9d
(rmail-output-as-mbox): Start search from point-min. If constructing a
Glenn Morris <rgm@gnu.org>
parents:
102048
diff
changeset
|
325 from date) |
ec7d88c6aa9d
(rmail-output-as-mbox): Start search from point-min. If constructing a
Glenn Morris <rgm@gnu.org>
parents:
102048
diff
changeset
|
326 (goto-char (point-min)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
327 ;; Preserve the Mail-From and MIME-Version fields |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
328 ;; even if they have been pruned. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
329 (search-forward "\n\n" nil 'move) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
330 (narrow-to-region (point-min) (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
331 (rmail-delete-unwanted-fields |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
332 (if rmail-enable-mime "Mail-From" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
333 "Mail-From\\|MIME-Version\\|Content-type")) |
102050
ec7d88c6aa9d
(rmail-output-as-mbox): Start search from point-min. If constructing a
Glenn Morris <rgm@gnu.org>
parents:
102048
diff
changeset
|
334 (goto-char (point-min)) |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
335 (or (looking-at "From ") |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
336 (insert (mail-mbox-from))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
337 (widen) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
338 ;; Make sure message ends with blank line. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
339 (goto-char (point-max)) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
340 (rmail-ensure-blank-line) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
341 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
342 (let ((buf (find-buffer-visiting file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
343 (tembuf (current-buffer))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
344 (if (null buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
345 (let ((coding-system-for-write 'raw-text-unix)) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
346 ;; FIXME should ensure existing file ends with a blank line. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
347 (write-region (point-min) (point-max) file-name t nomsg)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
348 (if (eq buf (current-buffer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
349 (error "Can't output message to same file it's already in")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
350 ;; File has been visited, in buffer BUF. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
351 (set-buffer buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
352 (let ((inhibit-read-only t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
353 (msg (and (boundp 'rmail-current-message) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
354 rmail-current-message))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
355 (and msg as-seen |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
356 (error "Can't output \"as seen\" to a visited Rmail file")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
357 (if msg |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
358 (rmail-output-to-rmail-buffer tembuf msg) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
359 ;; Output file not in Rmail mode => just insert at the end. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
360 (narrow-to-region (point-min) (1+ (buffer-size))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
361 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
362 (insert-buffer-substring tembuf))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
363 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
364 (defun rmail-output-to-rmail-buffer (tembuf msg) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
365 "Copy message in TEMBUF into the current Rmail buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
366 Do what is necessary to make Rmail know about the new message. then |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
367 display message number MSG." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
368 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
369 (rmail-swap-buffers-maybe) |
102910
3d4fe9d9e9e6
Don't query before visiting a Babyl file.
Richard M. Stallman <rms@gnu.org>
parents:
102404
diff
changeset
|
370 (rmail-modify-format) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
371 ;; Turn on Auto Save mode, if it's off in this buffer but enabled |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
372 ;; by default. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
373 (and (not buffer-auto-save-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
374 auto-save-default |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
375 (auto-save-mode t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
376 (rmail-maybe-set-message-counters) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
377 ;; Insert the new message after the last old message. |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
378 (widen) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
379 ;; Make sure the last old message ends with a blank line. |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
380 (goto-char (point-max)) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
381 (rmail-ensure-blank-line) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
382 ;; Insert the new message at the end. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
383 (narrow-to-region (point-max) (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
384 (insert-buffer-substring tembuf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
385 (rmail-count-new-messages t) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
386 ;; FIXME should re-use existing windows. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
387 (if (rmail-summary-exists) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
388 (rmail-select-summary (rmail-update-summary))) |
101993
1bb96ade4801
Update for rmail-show-message -> rmail-show-message-1 name change.
Glenn Morris <rgm@gnu.org>
parents:
101538
diff
changeset
|
389 (rmail-show-message-1 msg))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
390 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
391 ;;; There are functions elsewhere in Emacs that use this function; |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
392 ;;; look at them before you change the calling method. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
393 ;;;###autoload |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
394 (defun rmail-output (file-name &optional count noattribute not-rmail) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
395 "Append this message to mail file FILE-NAME. |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
396 Writes mbox format, unless FILE-NAME exists and is Babyl format, in which |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
397 case it writes Babyl. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
398 |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
399 Interactively, the default file name comes from `rmail-default-file', |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
400 which is updated to the name you use in this command. In all uses, if |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
401 FILE-NAME is not absolute, it is expanded with the directory part of |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
402 `rmail-default-file'. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
403 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
404 If a buffer is visiting FILE-NAME, adds the text to that buffer |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
405 rather than saving the file directly. If the buffer is an Rmail |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
406 buffer, updates it accordingly. |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
407 |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
408 This command always outputs the complete message header, even if |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
409 the header display is currently pruned. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
410 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
411 Optional prefix argument COUNT (default 1) says to output that |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
412 many consecutive messages, starting with the current one (ignoring |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
413 deleted messages). If `rmail-delete-after-output' is non-nil, deletes |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
414 messages after output. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
415 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
416 The optional third argument NOATTRIBUTE, if non-nil, says not to |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
417 set the `filed' attribute, and not to display a \"Wrote file\" |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
418 message (if writing a file directly). |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
419 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
420 Set the optional fourth argument NOT-RMAIL non-nil if you call this |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
421 from a non-Rmail buffer. In this case, COUNT is ignored." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
422 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
423 (list (rmail-output-read-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
424 (prefix-numeric-value current-prefix-arg))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
425 (or count (setq count 1)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
426 (setq file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
427 (expand-file-name file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
428 (and rmail-default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
429 (file-name-directory rmail-default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
430 ;; Warn about creating new file. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
431 (or (find-buffer-visiting file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
432 (file-exists-p file-name) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
433 (yes-or-no-p (concat "\"" file-name "\" does not exist, create it? ")) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
434 (error "Output file does not exist")) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
435 (if noattribute (setq noattribute 'nomsg)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
436 (let ((babyl-format (and (file-readable-p file-name) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
437 (mail-file-babyl-p file-name))) |
102913
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
438 (cur (current-buffer)) |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
439 (buf (find-buffer-visiting file-name))) |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
440 |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
441 ;; If a babyl file is visited in a buffer, is it visited as babyl |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
442 ;; or as mbox? |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
443 (and babyl-format buf |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
444 (with-current-buffer buf |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
445 (save-restriction |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
446 (widen) |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
447 (save-excursion |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
448 (goto-char (point-min)) |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
449 (setq babyl-format |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
450 (looking-at "BABYL OPTIONS:")))))) |
497d7a904c67
* mail/rmailout.el (rmail-output): If file is visited,
Richard M. Stallman <rms@gnu.org>
parents:
102912
diff
changeset
|
451 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
452 (if not-rmail ; eg via message-fcc-handler-function |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
453 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
454 (insert-buffer-substring cur) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
455 ;; Output in the appropriate format. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
456 (if babyl-format |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
457 (progn |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
458 (goto-char (point-min)) |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
459 ;; rmail-convert-to-babyl-format errors if no From line, |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
460 ;; whereas rmail-output-as-mbox inserts one. |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
461 (or (looking-at "From ") |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
462 (insert (mail-mbox-from))) |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
463 (rmail-output-as-babyl file-name noattribute)) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
464 (rmail-output-as-mbox file-name noattribute))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
465 ;; Called from an Rmail buffer. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
466 (if rmail-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
467 (set-buffer rmail-buffer) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
468 (error "There is no Rmail buffer")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
469 (let ((orig-count count) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
470 beg end) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
471 (while (> count 0) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
472 (setq beg (rmail-msgbeg rmail-current-message) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
473 end (rmail-msgend rmail-current-message)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
474 ;; All access to the buffer's local variables is now finished... |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
475 (save-excursion |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
476 ;; ... so it is ok to go to a different buffer. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
477 (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
478 (setq cur (current-buffer)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
479 (save-restriction |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
480 (widen) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
481 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
482 (insert-buffer-substring cur beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
483 (if babyl-format |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
484 (rmail-output-as-babyl file-name noattribute) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
485 (rmail-output-as-mbox file-name noattribute))))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
486 (or noattribute ; mark message as "filed" |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
487 (rmail-set-attribute rmail-filed-attr-index t)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
488 (setq count (1- count)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
489 (let ((next-message-p |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
490 (if rmail-delete-after-output |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
491 (rmail-delete-forward) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
492 (if (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
493 (rmail-next-undeleted-message 1)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
494 (num-appended (- orig-count count))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
495 (if (and (> count 0) (not next-message-p)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
496 (error "Only %d message%s appended" num-appended |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
497 (if (= num-appended 1) "" "s"))))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
498 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
499 ;; FIXME nothing outside uses this, so NOT-RMAIL could be dropped. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
500 ;; FIXME this duplicates code from rmail-output. |
102318
c9c0d0cbf010
(rmail-output-as-seen): Add autoload cookie.
Glenn Morris <rgm@gnu.org>
parents:
102089
diff
changeset
|
501 ;;;###autoload |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
502 (defun rmail-output-as-seen (file-name &optional count noattribute not-rmail) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
503 "Append this message to mbox file named FILE-NAME. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
504 The details are as for `rmail-output', except that: |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
505 i) the header is output as currently seen |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
506 ii) this function cannot write to Babyl files |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
507 iii) an Rmail buffer cannot be visiting FILE-NAME |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
508 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
509 Note that if NOT-RMAIL is non-nil, there is no difference between this |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
510 function and `rmail-output'. This argument may be removed in future, |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
511 so you should call `rmail-output' directly in that case." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
512 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
513 (list (rmail-output-read-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
514 (prefix-numeric-value current-prefix-arg))) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
515 (if not-rmail |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
516 (rmail-output file-name count noattribute not-rmail) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
517 (or count (setq count 1)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
518 (setq file-name |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
519 (expand-file-name file-name |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
520 (and rmail-default-file |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
521 (file-name-directory rmail-default-file)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
522 ;; Warn about creating new file. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
523 (or (find-buffer-visiting file-name) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
524 (file-exists-p file-name) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
525 (yes-or-no-p (concat "\"" file-name "\" does not exist, create it? ")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
526 (error "Output file does not exist")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
527 ;; FIXME why not? |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
528 (if (and (file-readable-p file-name) (mail-file-babyl-p file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
529 (error "Cannot output `as seen' to a Babyl file")) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
530 (if noattribute (setq noattribute 'nomsg)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
531 (if rmail-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
532 (set-buffer rmail-buffer) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
533 (error "There is no Rmail buffer")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
534 (let ((orig-count count) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
535 (cur (current-buffer))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
536 (while (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
537 (let (beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
538 ;; If operating from whole-mbox buffer, get message bounds. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
539 (or (rmail-buffers-swapped-p) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
540 (setq beg (rmail-msgbeg rmail-current-message) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
541 end (rmail-msgend rmail-current-message))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
542 (save-restriction |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
543 (widen) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
544 ;; If operating from the view buffer, get the bounds. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
545 (or beg |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
546 (setq beg (point-min) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
547 end (point-max))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
548 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
549 (insert-buffer-substring cur beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
550 (rmail-output-as-mbox file-name noattribute t)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
551 (or noattribute ; mark message as "filed" |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
552 (rmail-set-attribute rmail-filed-attr-index t)) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
553 (setq count (1- count)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
554 (let ((next-message-p |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
555 (if rmail-delete-after-output |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
556 (rmail-delete-forward) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
557 (if (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
558 (rmail-next-undeleted-message 1)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
559 (num-appended (- orig-count count))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
560 (if (and (> count 0) (not next-message-p)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
561 (error "Only %d message%s appended" num-appended |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
562 (if (= num-appended 1) "" "s")))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
563 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
564 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
565 ;;;###autoload |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
566 (defun rmail-output-body-to-file (file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
567 "Write this message body to the file FILE-NAME. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
568 Interactively, the default file name comes from either the message |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
569 \"Subject\" header, or from `rmail-default-body-file'. Updates the value |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
570 of `rmail-default-body-file' accordingly. In all uses, if FILE-NAME |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
571 is not absolute, it is expanded with the directory part of |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
572 `rmail-default-body-file'. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
573 |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
574 Note that this overwrites FILE-NAME (after confirmation), rather |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
575 than appending to it. Deletes the message after writing if |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
576 `rmail-delete-after-output' is non-nil." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
577 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
578 (let ((default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
579 (or (mail-fetch-field "Subject") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
580 rmail-default-body-file))) |
102014
3c79c5603836
(rmail-output-body-to-file): Avoid space and colon in default file name.
Richard M. Stallman <rms@gnu.org>
parents:
101993
diff
changeset
|
581 (setq default-file |
3c79c5603836
(rmail-output-body-to-file): Avoid space and colon in default file name.
Richard M. Stallman <rms@gnu.org>
parents:
101993
diff
changeset
|
582 (replace-regexp-in-string ":" "-" default-file)) |
3c79c5603836
(rmail-output-body-to-file): Avoid space and colon in default file name.
Richard M. Stallman <rms@gnu.org>
parents:
101993
diff
changeset
|
583 (setq default-file |
3c79c5603836
(rmail-output-body-to-file): Avoid space and colon in default file name.
Richard M. Stallman <rms@gnu.org>
parents:
101993
diff
changeset
|
584 (replace-regexp-in-string " " "-" default-file)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
585 (list (setq rmail-default-body-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
586 (read-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
587 "Output message body to file: " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
588 (and default-file (file-name-directory default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
589 default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
590 nil default-file))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
591 (setq file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
592 (expand-file-name file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
593 (and rmail-default-body-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
594 (file-name-directory rmail-default-body-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
595 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
596 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
597 (search-forward "\n\n") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
598 (and (file-exists-p file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
599 (not (y-or-n-p (format "File %s exists; overwrite? " file-name))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
600 (error "Operation aborted")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
601 (write-region (point) (point-max) file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
602 (if rmail-delete-after-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
603 (rmail-delete-forward))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
604 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
605 ;; arch-tag: 4059abf0-f249-4be4-8e0d-602d370d01d1 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
606 ;;; rmailout.el ends here |