Mercurial > emacs
annotate lisp/mail/rmailout.el @ 102476:9191f269c2d9
Fix date in entry.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Wed, 11 Mar 2009 01:04:23 +0000 |
parents | b2bd32bf5b5e |
children | 3d4fe9d9e9e6 |
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, |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
4 ;; 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
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) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
49 |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
50 (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
|
51 "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
|
52 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
|
53 :type '(choice (const :tag "None" nil) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
54 regexp) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
55 :group 'rmail-output) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
56 |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
57 (defun rmail-output-read-file-name () |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
58 "Read the file name to use for `rmail-output'. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
59 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
|
60 (let ((default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
61 (let (answer tail) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
62 (setq tail rmail-output-file-alist) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
63 ;; Suggest a file based on a pattern match. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
64 (while (and tail (not answer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
65 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
66 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
67 (if (re-search-forward (car (car tail)) nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
68 (setq answer (eval (cdr (car tail))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
69 (setq tail (cdr tail)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
70 ;; If no suggestion, use same file as last time. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
71 (or answer rmail-default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
72 (let ((read-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
73 (expand-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
74 (read-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
75 (concat "Output message to mail file (default " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
76 (file-name-nondirectory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
77 "): ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
78 (file-name-directory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
79 (abbreviate-file-name default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
80 (file-name-directory default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
81 (setq rmail-default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
82 (if (file-directory-p read-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
83 (expand-file-name (file-name-nondirectory default-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
84 read-file) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
85 (expand-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
86 (or read-file (file-name-nondirectory default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
87 (file-name-directory default-file))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
88 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
89 (defun rmail-delete-unwanted-fields (preserve) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
90 "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
|
91 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
|
92 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
|
93 (if rmail-fields-not-to-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
94 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
95 (goto-char (point-min)) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
96 (let ((case-fold-search t)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
97 (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
|
98 (beginning-of-line) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
99 (unless (looking-at preserve) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
100 (delete-region (point) (line-beginning-position 2)))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
101 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
102 (defun rmail-output-as-babyl (file-name nomsg) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
103 "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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 unless NOMSG is a symbol (neither nil nor t)." |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
110 (let ((coding-system-for-write 'emacs-mule-unix)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
111 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
112 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
113 (search-forward "\n\n" nil 'move) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
114 (narrow-to-region (point-min) (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
115 (if rmail-fields-not-to-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
116 (rmail-delete-unwanted-fields nil))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
117 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
118 ;; Convert to Babyl format. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
119 (rmail-convert-to-babyl-format) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
120 ;; Write it into the file, or its buffer. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
121 (let ((buf (find-buffer-visiting file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
122 (tembuf (current-buffer))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
123 (if (null buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
124 (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
|
125 (if (eq buf (current-buffer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
126 (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
|
127 ;; File has been visited, in buffer BUF. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
128 (set-buffer buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
129 (let ((inhibit-read-only t) |
102048
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
130 (msg (bound-and-true-p rmail-current-message))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
131 ;; 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
|
132 (if msg |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
133 (rmail-output-to-babyl-buffer tembuf msg) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
134 ;; 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
|
135 (narrow-to-region (point-min) (1+ (buffer-size))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
136 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
137 (insert-buffer-substring tembuf))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
138 |
102051
cb3542dc1e2f
(rmail-update-summary): Move declaration earlier in file.
Glenn Morris <rgm@gnu.org>
parents:
102050
diff
changeset
|
139 ;; 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
|
140 (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
|
141 |
101538
cf5cba9728ee
Remove leading `*' from defcustom docs.
Glenn Morris <rgm@gnu.org>
parents:
101375
diff
changeset
|
142 (defun rmail-output-to-babyl-buffer (tembuf msg) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
143 "Copy message in TEMBUF into the current Babyl Rmail buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
144 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
|
145 display message number MSG." |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
146 ;; 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
|
147 (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
|
148 auto-save-default |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
149 (auto-save-mode t)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
150 (rmail-maybe-set-message-counters) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
151 (widen) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
152 (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
|
153 (insert-buffer-substring tembuf) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
154 (goto-char (point-min)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
155 (widen) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
156 (search-backward "\n\^_") |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
157 (narrow-to-region (point) (point-max)) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
158 (rmail-count-new-messages t) |
24b13226c128
(rmail-output-decode-coding): Fix custom type, group.
Glenn Morris <rgm@gnu.org>
parents:
102014
diff
changeset
|
159 (if (rmail-summary-exists) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
160 (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
|
161 (rmail-show-message-1 msg)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
162 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
163 (defun rmail-convert-to-babyl-format () |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
164 "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
|
165 (let ((count 0) (start (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
166 (case-fold-search nil) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
167 (buffer-undo-list t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
168 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
169 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
170 (unless (looking-at "^From ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
171 (error "Invalid mbox message")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
172 (insert "\^L\n0, unseen,,\n*** EOOH ***\n") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
173 (rmail-nuke-pinhead-header) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
174 ;; Decode base64 or quoted printable contents, Rmail style. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
175 (let* ((header-end (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
176 (and (re-search-forward "\n\n" nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
177 (1- (point))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
178 (case-fold-search t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
179 (quoted-printable-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
180 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
181 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
182 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
183 header-end t))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
184 (base64-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
185 (and |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
186 ;; Don't decode non-text data. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
187 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
188 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
189 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
190 header-end t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
191 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
192 (re-search-forward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
193 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
194 header-end t))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
195 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
196 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
197 (if quoted-printable-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
198 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
199 (unless (mail-unquote-printable-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
200 header-end (point) nil t t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
201 (message "Malformed MIME quoted-printable message")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
202 ;; Change "quoted-printable" to "8bit", |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
203 ;; to reflect the decoding we just did. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
204 (goto-char quoted-printable-header-field-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
205 (delete-region (point) (search-backward ":")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
206 (insert ": 8bit"))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
207 (if base64-header-field-end |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
208 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
209 (when (condition-case nil |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
210 (progn |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
211 (base64-decode-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
212 (1+ header-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
213 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
214 ;; Prevent base64-decode-region |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
215 ;; from removing newline characters. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
216 (skip-chars-backward "\n\t ") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
217 (point))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
218 t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
219 (error nil)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
220 ;; Change "base64" to "8bit", to reflect the |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
221 ;; decoding we just did. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
222 (goto-char base64-header-field-end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
223 (delete-region (point) (search-backward ":")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
224 (insert ": 8bit"))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
225 ;; Transform anything within the message text |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
226 ;; 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
|
227 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
228 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
229 (narrow-to-region start (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
230 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
231 (while (search-forward "\n\^_" nil t) ; single char |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
232 (replace-match "\n^_")))) ; 2 chars: "^" and "_" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
233 ;; 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
|
234 ;; 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
|
235 ;; there are some. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
236 (or (bolp) (newline)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
237 (insert ?\^_) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
238 (setq last-coding-system-used nil) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
239 ;; Decode coding system, following specs in the message header, |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
240 ;; and record what coding system was decoded. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
241 (if rmail-output-decode-coding |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
242 (let ((mime-charset |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
243 (if (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
244 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
245 (search-forward "\n\n" nil t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
246 (let ((case-fold-search t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
247 (re-search-backward |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
248 rmail-mime-charset-pattern |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
249 start t))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
250 (intern (downcase (match-string 1)))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
251 (rmail-decode-region start (point) mime-charset))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
252 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
253 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
254 (forward-line 3) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
255 (insert "X-Coding-System: " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
256 (symbol-name last-coding-system-used) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
257 "\n"))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
258 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
259 (defun rmail-nuke-pinhead-header () |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
260 "Delete the \"From \" line in the current mbox message. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
261 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
|
262 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
|
263 \"From\" headers if they are not already present." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
264 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
265 (save-restriction |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
266 (let ((start (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
267 (end (progn |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
268 (condition-case () |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
269 (search-forward "\n\n") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
270 (error |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
271 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
272 (insert "\n\n"))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
273 (point))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
274 has-from has-date) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
275 (narrow-to-region start end) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
276 (let ((case-fold-search t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
277 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
278 (setq has-from (search-forward "\nFrom:" nil t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
279 (goto-char start) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
280 (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
|
281 (goto-char start)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
282 (let ((case-fold-search nil)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
283 (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
|
284 (replace-match |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
285 (concat |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
286 "Mail-from: \\&" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
287 ;; Keep and reformat the date if we don't |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
288 ;; have a Date: field. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
289 (if has-date |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
290 "" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
291 (concat |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
292 "Date: \\2, \\4 \\3 \\9 \\5 " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
293 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
294 ;; 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
|
295 ;; If neither of them matched, assume EST, since only |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
296 ;; Easterners would be so sloppy. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
297 ;; 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
|
298 (cond |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
299 ((/= (match-beginning 7) (match-end 7)) "\\7") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
300 ((/= (match-beginning 10) (match-end 10)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
301 (buffer-substring (match-beginning 10) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
302 (match-end 10))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
303 (t "EST")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
304 "\n")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
305 ;; Keep and reformat the sender if we don't |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
306 ;; have a From: field. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
307 (if has-from |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
308 "" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
309 "From: \\1\n")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
310 t))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
311 |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
312 (autoload 'mail-mbox-from "mail-utils") |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
313 |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
314 (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
|
315 "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
|
316 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
|
317 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
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 (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
|
324 from date) |
ec7d88c6aa9d
(rmail-output-as-mbox): Start search from point-min. If constructing a
Glenn Morris <rgm@gnu.org>
parents:
102048
diff
changeset
|
325 (goto-char (point-min)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
326 ;; Preserve the Mail-From and MIME-Version fields |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
327 ;; even if they have been pruned. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
328 (search-forward "\n\n" nil 'move) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
329 (narrow-to-region (point-min) (point)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
330 (rmail-delete-unwanted-fields |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
331 (if rmail-enable-mime "Mail-From" |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
332 "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
|
333 (goto-char (point-min)) |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
334 (or (looking-at "From ") |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
335 (insert (mail-mbox-from))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
336 (widen) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
337 ;; Make sure message ends with blank line. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
338 (goto-char (point-max)) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
339 (rmail-ensure-blank-line) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
340 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
341 (let ((buf (find-buffer-visiting file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
342 (tembuf (current-buffer))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
343 (if (null buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
344 (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
|
345 ;; 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
|
346 (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
|
347 (if (eq buf (current-buffer)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
348 (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
|
349 ;; File has been visited, in buffer BUF. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
350 (set-buffer buf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
351 (let ((inhibit-read-only t) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
352 (msg (and (boundp 'rmail-current-message) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
353 rmail-current-message))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
354 (and msg as-seen |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
355 (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
|
356 (if msg |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
357 (rmail-output-to-rmail-buffer tembuf msg) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
358 ;; 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
|
359 (narrow-to-region (point-min) (1+ (buffer-size))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
360 (goto-char (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
361 (insert-buffer-substring tembuf))))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
362 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
363 (defun rmail-output-to-rmail-buffer (tembuf msg) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
364 "Copy message in TEMBUF into the current Rmail buffer. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
365 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
|
366 display message number MSG." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
367 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
368 (rmail-swap-buffers-maybe) |
102404
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
369 ;; 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
|
370 ;; by default. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
371 (and (not buffer-auto-save-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
372 auto-save-default |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
373 (auto-save-mode t)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
374 (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
|
375 ;; 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
|
376 (widen) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
377 ;; 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
|
378 (goto-char (point-max)) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
379 (rmail-ensure-blank-line) |
b2bd32bf5b5e
(rmail-output-as-mbox): Use rmail-ensure-blank-line.
Glenn Morris <rgm@gnu.org>
parents:
102318
diff
changeset
|
380 ;; Insert the new message at the end. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
381 (narrow-to-region (point-max) (point-max)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
382 (insert-buffer-substring tembuf) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
383 (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
|
384 ;; FIXME should re-use existing windows. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
385 (if (rmail-summary-exists) |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
386 (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
|
387 (rmail-show-message-1 msg))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
388 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
389 ;;; 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
|
390 ;;; look at them before you change the calling method. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
391 ;;;###autoload |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
392 (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
|
393 "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
|
394 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
|
395 case it writes Babyl. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
396 |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
397 Interactively, the default file name comes from `rmail-default-file', |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
398 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
|
399 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
|
400 `rmail-default-file'. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
401 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
402 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
|
403 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
|
404 buffer, updates it accordingly. |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
405 |
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
406 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
|
407 the header display is currently pruned. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
408 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
409 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
|
410 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
|
411 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
|
412 messages after output. |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
413 |
102053
20687882f9e1
(rmail-output, rmail-output-as-seen): Further doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
102052
diff
changeset
|
414 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
|
415 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
|
416 message (if writing a file directly). |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
417 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
418 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
|
419 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
|
420 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
421 (list (rmail-output-read-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
422 (prefix-numeric-value current-prefix-arg))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
423 (or count (setq count 1)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
424 (setq file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
425 (expand-file-name file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
426 (and rmail-default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
427 (file-name-directory rmail-default-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
428 ;; Warn about creating new file. |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
429 (or (find-buffer-visiting file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
430 (file-exists-p file-name) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
431 (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
|
432 (error "Output file does not exist")) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
433 (if noattribute (setq noattribute 'nomsg)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
434 (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
|
435 (mail-file-babyl-p file-name))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
436 (cur (current-buffer))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
437 (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
|
438 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
439 (insert-buffer-substring cur) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
440 ;; Output in the appropriate format. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
441 (if babyl-format |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
442 (progn |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
443 (goto-char (point-min)) |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
444 ;; 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
|
445 ;; whereas rmail-output-as-mbox inserts one. |
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
446 (or (looking-at "From ") |
102089
edc57b1b19f0
(rmail-mbox-from): Move to mail-utils.
Glenn Morris <rgm@gnu.org>
parents:
102065
diff
changeset
|
447 (insert (mail-mbox-from))) |
102065
8dfd81b55840
(rmail-mbox-from): New function.
Glenn Morris <rgm@gnu.org>
parents:
102062
diff
changeset
|
448 (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
|
449 (rmail-output-as-mbox file-name noattribute))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
450 ;; Called from an Rmail buffer. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
451 (if rmail-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
452 (set-buffer rmail-buffer) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
453 (error "There is no Rmail buffer")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
454 (let ((orig-count count) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
455 beg end) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
456 (while (> count 0) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
457 (setq beg (rmail-msgbeg rmail-current-message) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
458 end (rmail-msgend rmail-current-message)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
459 ;; 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
|
460 (save-excursion |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
461 ;; ... 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
|
462 (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
|
463 (setq cur (current-buffer)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
464 (save-restriction |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
465 (widen) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
466 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
467 (insert-buffer-substring cur beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
468 (if babyl-format |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
469 (rmail-output-as-babyl file-name noattribute) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
470 (rmail-output-as-mbox file-name noattribute))))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
471 (or noattribute ; mark message as "filed" |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
472 (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
|
473 (setq count (1- count)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
474 (let ((next-message-p |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
475 (if rmail-delete-after-output |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
476 (rmail-delete-forward) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
477 (if (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
478 (rmail-next-undeleted-message 1)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
479 (num-appended (- orig-count count))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
480 (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
|
481 (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
|
482 (if (= num-appended 1) "" "s"))))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
483 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
484 ;; 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
|
485 ;; 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
|
486 ;;;###autoload |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
487 (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
|
488 "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
|
489 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
|
490 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
|
491 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
|
492 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
|
493 |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
494 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
|
495 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
|
496 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
|
497 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
498 (list (rmail-output-read-file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
499 (prefix-numeric-value current-prefix-arg))) |
102062
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
500 (if not-rmail |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
501 (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
|
502 (or count (setq count 1)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
503 (setq file-name |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
504 (expand-file-name file-name |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
505 (and rmail-default-file |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
506 (file-name-directory rmail-default-file)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
507 ;; Warn about creating new file. |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
508 (or (find-buffer-visiting file-name) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
509 (file-exists-p file-name) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
510 (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
|
511 (error "Output file does not exist")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
512 ;; FIXME why not? |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
513 (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
|
514 (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
|
515 (if noattribute (setq noattribute 'nomsg)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
516 (if rmail-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
517 (set-buffer rmail-buffer) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
518 (error "There is no Rmail buffer")) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
519 (let ((orig-count count) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
520 (cur (current-buffer))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
521 (while (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
522 (let (beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
523 ;; 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
|
524 (or (rmail-buffers-swapped-p) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
525 (setq beg (rmail-msgbeg rmail-current-message) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
526 end (rmail-msgend rmail-current-message))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
527 (save-restriction |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
528 (widen) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
529 ;; 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
|
530 (or beg |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
531 (setq beg (point-min) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
532 end (point-max))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
533 (with-temp-buffer |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
534 (insert-buffer-substring cur beg end) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
535 (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
|
536 (or noattribute ; mark message as "filed" |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
537 (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
|
538 (setq count (1- count)) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
539 (let ((next-message-p |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
540 (if rmail-delete-after-output |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
541 (rmail-delete-forward) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
542 (if (> count 0) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
543 (rmail-next-undeleted-message 1)))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
544 (num-appended (- orig-count count))) |
8ddbc5972ea9
(rmail-fields-not-to-output): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
102053
diff
changeset
|
545 (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
|
546 (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
|
547 (if (= num-appended 1) "" "s")))))))) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
548 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
549 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
550 ;;;###autoload |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
551 (defun rmail-output-body-to-file (file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
552 "Write this message body to the file FILE-NAME. |
102052
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
553 Interactively, the default file name comes from either the message |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
554 \"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
|
555 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
|
556 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
|
557 `rmail-default-body-file'. |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
558 |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
559 Note that this overwrites FILE-NAME (after confirmation), rather |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
560 than appending to it. Deletes the message after writing if |
734a66852e68
(rmail-delete-unwanted-fields)
Glenn Morris <rgm@gnu.org>
parents:
102051
diff
changeset
|
561 `rmail-delete-after-output' is non-nil." |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
562 (interactive |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
563 (let ((default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
564 (or (mail-fetch-field "Subject") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
565 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
|
566 (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
|
567 (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
|
568 (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
|
569 (replace-regexp-in-string " " "-" default-file)) |
101360
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
570 (list (setq rmail-default-body-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
571 (read-file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
572 "Output message body to file: " |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
573 (and default-file (file-name-directory default-file)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
574 default-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
575 nil default-file))))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
576 (setq file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
577 (expand-file-name file-name |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
578 (and rmail-default-body-file |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
579 (file-name-directory rmail-default-body-file)))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
580 (save-excursion |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
581 (goto-char (point-min)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
582 (search-forward "\n\n") |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
583 (and (file-exists-p file-name) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
584 (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
|
585 (error "Operation aborted")) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
586 (write-region (point) (point-max) file-name)) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
587 (if rmail-delete-after-output |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
588 (rmail-delete-forward))) |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
589 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
590 ;; arch-tag: 4059abf0-f249-4be4-8e0d-602d370d01d1 |
b10df8502c4a
Renamed all pmail* files to rmail*.
Bastien Guerry <bzg@altern.org>
parents:
diff
changeset
|
591 ;;; rmailout.el ends here |