Mercurial > emacs
annotate lisp/mail/rmailout.el @ 4624:62564c5e2df7
(x-create-frame-with-faces): Check for `on' or `true'
as reverseVideo resource value.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 14 Aug 1993 09:23:24 +0000 |
parents | 2812d8619305 |
children | 38a0f0209707 |
rev | line source |
---|---|
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
1 ;;; rmailout.el --- "RMAIL" mail reader for Emacs: output message to a file. |
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
2 |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
3 ;; Copyright (C) 1985, 1987, 1993 Free Software Foundation, Inc. |
845 | 4 |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
5 ;; Maintainer: FSF |
814
38b2499cb3e9
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
6 ;; Keywords: mail |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
7 |
63 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
788
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
63 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
22 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
23 | |
788
c8d4eb38ebfc
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
713
diff
changeset
|
24 ;;; Code: |
63 | 25 |
26 ;; Temporary until Emacs always has this variable. | |
27 (defvar rmail-delete-after-output nil | |
28 "*Non-nil means automatically delete a message that is copied to a file.") | |
29 | |
145 | 30 (defvar rmail-output-file-alist nil |
31 "*Alist matching regexps to suggested output Rmail files. | |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
32 This is a list of elements of the form (REGEXP . NAME-EXP). |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
33 NAME-EXP may be a string constant giving the file name to use, |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
34 or more generally it may be any kind of expression that returns |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
35 a file name as a string.") |
145 | 36 |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
37 ;;; There are functions elsewhere in Emacs that use this function; check |
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
38 ;;; them out before you change the calling method. |
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
39 (defun rmail-output-to-rmail-file (file-name &optional count) |
63 | 40 "Append the current message to an Rmail file named FILE-NAME. |
41 If the file does not exist, ask if it should be created. | |
42 If file is being visited, the message is appended to the Emacs | |
43 buffer visiting that file. | |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
44 If the file exists and is not an Rmail file, |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
45 the message is appended in inbox format. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
46 |
63 | 47 A prefix argument N says to output N consecutive messages |
48 starting with the current one. Deleted messages are skipped and don't count." | |
3657
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
49 (interactive |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
50 (let ((default-file |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
51 (let (answer tail) |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
52 (setq tail rmail-output-file-alist) |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
53 ;; Suggest a file based on a pattern match. |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
54 (while (and tail (not answer)) |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
55 (save-excursion |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
56 (goto-char (point-min)) |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
57 (if (re-search-forward (car (car tail)) nil t) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
58 (setq answer (eval (cdr (car tail))))) |
3657
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
59 (setq tail (cdr tail)))) |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
60 ;; If not suggestions, use same file as last time. |
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
61 (or answer rmail-last-rmail-file)))) |
4264
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
62 (list (setq rmail-last-rmail-file |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
63 (read-file-name |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
64 (concat "Output message to Rmail file: (default " |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
65 (file-name-nondirectory default-file) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
66 ") ") |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
67 (file-name-directory default-file) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
68 default-file)) |
3657
7503a402c721
(rmail-output-to-rmail-file): Use the smart default in the prompt.
Richard M. Stallman <rms@gnu.org>
parents:
2717
diff
changeset
|
69 (prefix-numeric-value current-prefix-arg)))) |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
70 (or count (setq count 1)) |
202 | 71 (setq file-name |
72 (expand-file-name file-name | |
73 (file-name-directory rmail-last-rmail-file))) | |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
74 (if (and (file-readable-p file-name) (not (rmail-file-p file-name))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
75 (rmail-output file-name count) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
76 (rmail-maybe-set-message-counters) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
77 (setq file-name (abbreviate-file-name file-name)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
78 (or (get-file-buffer file-name) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
79 (file-exists-p file-name) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
80 (if (yes-or-no-p |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
81 (concat "\"" file-name "\" does not exist, create it? ")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
82 (let ((file-buffer (create-file-buffer file-name))) |
63 | 83 (save-excursion |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
84 (set-buffer file-buffer) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
85 (rmail-insert-rmail-file-header) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
86 (let ((require-final-newline nil)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
87 (write-region (point-min) (point-max) file-name t 1))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
88 (kill-buffer file-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
89 (error "Output file does not exist"))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
90 (while (> count 0) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
91 (let (redelete) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
92 (unwind-protect |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
93 (progn |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
94 (save-restriction |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
95 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
96 (if (rmail-message-deleted-p rmail-current-message) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
97 (progn (setq redelete t) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
98 (rmail-set-attribute "deleted" nil))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
99 ;; Decide whether to append to a file or to an Emacs buffer. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
100 (save-excursion |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
101 (let ((buf (get-file-buffer file-name)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
102 (cur (current-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
103 (beg (1+ (rmail-msgbeg rmail-current-message))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
104 (end (1+ (rmail-msgend rmail-current-message)))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
105 (if (not buf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
106 (append-to-file beg end file-name) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
107 (if (eq buf (current-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
108 (error "Can't output message to same file it's already in")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
109 ;; File has been visited, in buffer BUF. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
110 (set-buffer buf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
111 (let ((buffer-read-only nil) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
112 (msg (and (boundp 'rmail-current-message) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
113 rmail-current-message))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
114 ;; If MSG is non-nil, buffer is in RMAIL mode. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
115 (if msg |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
116 (progn |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
117 (rmail-maybe-set-message-counters) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
118 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
119 (narrow-to-region (point-max) (point-max)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
120 (insert-buffer-substring cur beg end) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
121 (goto-char (point-min)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
122 (widen) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
123 (search-backward "\n\^_") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
124 (narrow-to-region (point) (point-max)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
125 (rmail-count-new-messages t) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
126 (rmail-show-message msg)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
127 ;; Output file not in rmail mode => just insert at the end. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
128 (narrow-to-region (point-min) (1+ (buffer-size))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
129 (goto-char (point-max)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
130 (insert-buffer-substring cur beg end))))))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
131 (rmail-set-attribute "filed" t)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
132 (if redelete (rmail-set-attribute "deleted" t)))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
133 (setq count (1- count)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
134 (if rmail-delete-after-output |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
135 (rmail-delete-forward) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
136 (if (> count 0) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
137 (rmail-next-undeleted-message 1)))))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
138 |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
139 ;; Returns t if file FILE is an Rmail file. |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
140 (defun rmail-file-p (file) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
141 (let ((buf (generate-new-buffer " *rmail-file-p*"))) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
142 (unwind-protect |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
143 (save-excursion |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
144 (set-buffer buf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
145 (insert-file-contents file nil 0 100) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
146 (looking-at "BABYL OPTIONS:")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
147 (kill-buffer buf)))) |
63 | 148 |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
149 ;;; There are functions elsewhere in Emacs that use this function; check |
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
150 ;;; them out before you change the calling method. |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
151 (defun rmail-output (file-name &optional count noattribute) |
63 | 152 "Append this message to Unix mail file named FILE-NAME. |
153 A prefix argument N says to output N consecutive messages | |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
154 starting with the current one. Deleted messages are skipped and don't count. |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
155 When called from lisp code, N may be omitted. |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
156 |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
157 The optional third argument NOATTRIBUTE, if non-nil, says not |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
158 to set the `filed' attribute, and not to display a message." |
63 | 159 (interactive |
4264
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
160 (list (setq rmail-last-file |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
161 (read-file-name |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
162 (concat "Output message to Unix mail file" |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
163 (if rmail-last-file |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
164 (concat " (default " |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
165 (file-name-nondirectory rmail-last-file) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
166 "): " ) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
167 ": ")) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
168 (and rmail-last-file (file-name-directory rmail-last-file)) |
af1bbadc70c7
(rmail-output-to-rmail-file): Set rmail-last-rmail-file
Richard M. Stallman <rms@gnu.org>
parents:
4058
diff
changeset
|
169 rmail-last-file)) |
1866
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
170 (prefix-numeric-value current-prefix-arg))) |
a712cff3b6e7
* rmailout.el (rmail-output, rmail-output-to-mail-file): Reverse
Jim Blandy <jimb@redhat.com>
parents:
1460
diff
changeset
|
171 (or count (setq count 1)) |
202 | 172 (setq file-name |
173 (expand-file-name file-name | |
174 (and rmail-last-file | |
175 (file-name-directory rmail-last-file)))) | |
4058
af785cbe489a
Fix typos in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
4056
diff
changeset
|
176 (if (and (file-readable-p file-name) (rmail-file-p file-name)) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
177 (rmail-output-to-rmail-file file-name count) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
178 (while (> count 0) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
179 (let ((rmailbuf (current-buffer)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
180 (tembuf (get-buffer-create " rmail-output")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
181 (case-fold-search t)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
182 (save-excursion |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
183 (set-buffer tembuf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
184 (erase-buffer) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
185 (insert-buffer-substring rmailbuf) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
186 (insert "\n") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
187 (goto-char (point-min)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
188 (insert "From " |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
189 (mail-strip-quoted-names (or (mail-fetch-field "from") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
190 (mail-fetch-field "really-from") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
191 (mail-fetch-field "sender") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
192 "unknown")) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
193 " " (current-time-string) "\n") |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
194 ;; ``Quote'' "\nFrom " as "\n>From " |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
195 ;; (note that this isn't really quoting, as there is no requirement |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
196 ;; that "\n[>]+From " be quoted in the same transparent way.) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
197 (while (search-forward "\nFrom " nil t) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
198 (forward-char -5) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
199 (insert ?>)) |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
200 (write-region (point-min) (point-max) file-name t |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
201 (if noattribute 'nomsg))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
202 (kill-buffer tembuf)) |
4265
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
203 (or noattribute |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
204 (if (equal major-mode 'rmail-mode) |
2812d8619305
(rmail-output): New arg NOATTRIBUTE.
Richard M. Stallman <rms@gnu.org>
parents:
4264
diff
changeset
|
205 (rmail-set-attribute "filed" t))) |
4056
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
206 (setq count (1- count)) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
207 (if rmail-delete-after-output |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
208 (rmail-delete-forward) |
419e92a78e6f
(rmail-output): If file is an Rmail file,
Richard M. Stallman <rms@gnu.org>
parents:
3832
diff
changeset
|
209 (if (> count 0) |
4058
af785cbe489a
Fix typos in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
4056
diff
changeset
|
210 (rmail-next-undeleted-message 1)))))) |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
211 |
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
202
diff
changeset
|
212 ;;; rmailout.el ends here |