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