annotate lisp/mail/pmail.el @ 101077:22a55aabcdba

(pmail-count-screen-lines, pmail-use-collection-buffer) (pmail-use-viewer-buffer): Fns deleted. Other functions reordered but not changed.
author Richard M. Stallman <rms@gnu.org>
date Sat, 10 Jan 2009 21:42:11 +0000
parents cc1abbe3dfe5
children f77a0ad64329
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1 ;;; pmail.el --- main code of "PMAIL" mail reader for Emacs
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3 ;; Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998,
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100800
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
5 ;; Free Software Foundation, Inc.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
6
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
7 ;; Maintainer: FSF
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
8 ;; Keywords: mail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
9
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
11
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
15 ;; (at your option) any later version.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
16
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
21
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
24
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
25 ;;; Commentary:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
26
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
27 ;;; Code:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
28
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
29 ;; Souped up by shane@mit-ajax based on ideas of rlk@athena.mit.edu
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
30 ;; New features include attribute and keyword support, message
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
31 ;; selection by dispatch table, summary by attributes and keywords,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
32 ;; expunging by dispatch table, sticky options for file commands.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
33
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
34 ;; Extended by Bob Weiner of Motorola
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
35 ;; New features include: pmail and pmail-summary buffers remain
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
36 ;; synchronized and key bindings basically operate the same way in both
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
37 ;; buffers, summary by topic or by regular expression, pmail-reply-prefix
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
38 ;; variable, and a bury pmail buffer (wipe) command.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
39 ;;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
40
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
41 (require 'mail-utils)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
42 (eval-when-compile (require 'mule-util)) ; for detect-coding-with-priority
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
43
100800
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
44
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
45 ;; The buffer-swapped-with feature has been moved here temporarily.
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
46 ;; When pmail is merged, this advice must be eliminated and the
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
47 ;; functionality somehow reimplemented.
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
48
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
49 (defvar buffer-swapped-with nil
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
50 "Buffer that this buffer's contents are temporarily swapped with.
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
51 You should only set this variable in file-visiting buffers,
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
52 because it only affects how to save the buffer in its file.")
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
53
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
54 (make-variable-buffer-local 'buffer-swapped-with)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
55
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
56 (defadvice basic-save-buffer
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
57 (around check-swap activate)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
58 "If this buffer's real contents are swapped with some other buffer,
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
59 temporarily unswap in order to save the real contents. This
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
60 advice is temporarily used by pmail until a satisfactory solution
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
61 can be written."
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
62 (if (not buffer-swapped-with)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
63 (progn
101074
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
64 ;;; (if (and (string= "PMAIL" (buffer-name))
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
65 ;;; (< (buffer-size) 1000000))
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
66 ;;; (debug))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
67 ad-do-it)
100800
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
68 (unwind-protect
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
69 (let ((modp (buffer-modified-p)))
101074
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
70 ;;; (save-match-data
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
71 ;;; (let ((case-fold-search nil))
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
72 ;;; (unless (or (string-match "PMAIL" (buffer-name))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
73 ;;; (string-match "xmail" (buffer-name))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
74 ;;; (string-match "mbox" (buffer-name)))
101074
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
75 ;;; (debug))))
100800
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
76 (buffer-swap-text buffer-swapped-with)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
77 (set-buffer-modified-p modp)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
78 ad-do-it)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
79 (buffer-swap-text buffer-swapped-with)
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
80 (set-buffer-modified-p nil))))
e680c5af27d3 (buffer-swapped-with): New var, moved from files.el. Add advice to
Chong Yidong <cyd@stupidchicken.com>
parents: 100756
diff changeset
81
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
82 (defconst pmail-attribute-header "X-RMAIL-ATTRIBUTES"
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
83 "The header that stores the Pmail attribute data.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
84
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
85 (defconst pmail-keyword-header "X-RMAIL-KEYWORDS"
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
86 "The header that stores the Pmail keyword data.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
87
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
88 ;;; Attribute indexes
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
89
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
90 (defconst pmail-answered-attr-index 0
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
91 "The index for the `answered' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
92
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
93 (defconst pmail-deleted-attr-index 1
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
94 "The index for the `deleted' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
95
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
96 (defconst pmail-edited-attr-index 2
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
97 "The index for the `edited' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
98
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
99 (defconst pmail-filed-attr-index 3
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
100 "The index for the `filed' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
101
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
102 (defconst pmail-retried-attr-index 4
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
103 "The index for the `retried' attribute.")
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
104
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
105 (defconst pmail-forwarded-attr-index 5
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
106 "The index for the `forwarded' attribute.")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
107
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
108 (defconst pmail-unseen-attr-index 6
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
109 "The index for the `unseen' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
110
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
111 (defconst pmail-resent-attr-index 6
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
112 "The index for the `resent' attribute.")
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
113
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
114 (defconst pmail-attr-array
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
115 '[(?A "answered")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
116 (?D "deleted")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
117 (?E "edited")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
118 (?F "filed")
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
119 (?R "retried")
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
120 (?S "forwarded")
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
121 (?U "unseen")
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
122 (?r "resent")]
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
123 "An array that provides a mapping between an attribute index,
100584
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
124 its character representation and its display representation.")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
125
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
126 (defvar deleted-head)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
127 (defvar font-lock-fontified)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
128 (defvar mail-abbrev-syntax-table)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
129 (defvar mail-abbrevs)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
130 (defvar messages-head)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
131 (defvar pmail-use-spam-filter)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
132 (defvar rsf-beep)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
133 (defvar rsf-sleep-after-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
134 (defvar total-messages)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
135 (defvar tool-bar-map)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
136
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
137 (defvar pmail-header-style 'normal
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
138 "The current header display style choice, one of
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
139 'normal (selected headers) or 'full (all headers).")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
140
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
141 ; These variables now declared in paths.el.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
142 ;(defvar pmail-spool-directory "/usr/spool/mail/"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
143 ; "This is the name of the directory used by the system mailer for\n\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
144 ;delivering new mail. Its name should end with a slash.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
145 ;(defvar pmail-file-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
146 ; (expand-file-name "~/PMAIL")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
147 ; "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
148
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
149 ;; Temporary support for mbox.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
150 (defcustom pmail-file-name "~/PMAIL"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
151 "*Name of user's primary mail file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
152 :type 'string
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
153 :group 'rmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
154 :version "21.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
155
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
156 (defgroup pmail nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
157 "Mail reader for Emacs."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
158 :group 'mail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
159
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
160 (defgroup pmail-retrieve nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
161 "Pmail retrieval options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
162 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
163 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
164
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
165 (defgroup pmail-files nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
166 "Pmail files."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
167 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
168 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
169
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
170 (defgroup pmail-headers nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
171 "Pmail header options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
172 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
173 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
174
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
175 (defgroup pmail-reply nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
176 "Pmail reply options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
177 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
178 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
179
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
180 (defgroup pmail-summary nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
181 "Pmail summary options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
182 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
183 :prefix "pmail-summary-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
184 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
185
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
186 (defgroup pmail-output nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
187 "Output message to a file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
188 :prefix "pmail-output-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
189 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
190 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
191
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
192 (defgroup pmail-edit nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
193 "Pmail editing."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
194 :prefix "pmail-edit-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
195 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
196
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
197 (defgroup pmail-obsolete nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
198 "Pmail obsolete customization variables."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
199 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
200
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
201 (defcustom pmail-movemail-program nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
202 "If non-nil, the file name of the `movemail' program."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
203 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
204 :type '(choice (const nil) string))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
205
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
206 (defcustom pmail-pop-password nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
207 "*Password to use when reading mail from POP server.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
208 Please use `pmail-remote-password' instead."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
209 :type '(choice (string :tag "Password")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
210 (const :tag "Not Required" nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
211 :group 'pmail-obsolete)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
212
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
213 (defcustom pmail-pop-password-required nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
214 "*Non-nil if a password is required when reading mail from a POP server.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
215 Please use pmail-remote-password-required instead."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
216 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
217 :group 'pmail-obsolete)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
218
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
219 (defcustom pmail-remote-password nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
220 "*Password to use when reading mail from a remote server.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
221 This setting is ignored for mailboxes whose URL already contains a password."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
222 :type '(choice (string :tag "Password")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
223 (const :tag "Not Required" nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
224 :set-after '(pmail-pop-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
225 :set #'(lambda (symbol value)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
226 (set-default symbol
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
227 (if (and (not value)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
228 (boundp 'pmail-pop-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
229 pmail-pop-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
230 pmail-pop-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
231 value))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
232 (setq pmail-pop-password nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
233 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
234 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
235
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
236 (defcustom pmail-remote-password-required nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
237 "*Non-nil if a password is required when reading mail from a remote server."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
238 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
239 :set-after '(pmail-pop-password-required)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
240 :set #'(lambda (symbol value)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
241 (set-default symbol
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
242 (if (and (not value)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
243 (boundp 'pmail-pop-password-required)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
244 pmail-pop-password-required)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
245 pmail-pop-password-required
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
246 value))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
247 (setq pmail-pop-password-required nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
248 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
249 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
250
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
251 (defcustom pmail-movemail-flags nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
252 "*List of flags to pass to movemail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
253 Most commonly used to specify `-g' to enable GSS-API authentication
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
254 or `-k' to enable Kerberos authentication."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
255 :type '(repeat string)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
256 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
257 :version "20.3")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
258
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
259 (defvar pmail-remote-password-error "invalid usercode or password\\|
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
260 unknown user name or bad password\\|Authentication failed\\|MU_ERR_AUTH_FAILURE"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
261 "Regular expression matching incorrect-password POP or IMAP server error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
262 messages.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
263 If you get an incorrect-password error that this expression does not match,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
264 please report it with \\[report-emacs-bug].")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
265
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
266 (defvar pmail-encoded-remote-password nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
267
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
268 (defcustom pmail-preserve-inbox nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
269 "*Non-nil means leave incoming mail in the user's inbox--don't delete it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
270 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
271 :group 'pmail-retrieve)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
272
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
273 (defcustom pmail-movemail-search-path nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
274 "*List of directories to search for movemail (in addition to `exec-path')."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
275 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
276 :type '(repeat (directory)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
277
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
278 (declare-function mail-position-on-field "sendmail" (field &optional soft))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
279 (declare-function mail-text-start "sendmail" ())
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
280 (declare-function rmail-dont-reply-to "mail-utils" (destinations))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
281 (declare-function pmail-update-summary "pmailsum" (&rest ignore))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
282
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
283 (defun pmail-probe (prog)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
284 "Determine what flavor of movemail PROG is.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
285 We do this by executing it with `--version' and analyzing its output."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
286 (with-temp-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
287 (let ((tbuf (current-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
288 (buffer-disable-undo tbuf)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
289 (call-process prog nil tbuf nil "--version")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
290 (if (not (buffer-modified-p tbuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
291 ;; Should not happen...
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
292 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
293 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
294 (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
295 ((looking-at ".*movemail: invalid option")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
296 'emacs) ;; Possibly...
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
297 ((looking-at "movemail (GNU Mailutils .*)")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
298 'mailutils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
299 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
300 ;; FIXME:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
301 'emacs))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
302
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
303 (defun pmail-autodetect ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
304 "Determine the file name of the `movemail' program and return its flavor.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
305 If `pmail-movemail-program' is non-nil, use it.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
306 Otherwise, look for `movemail' in the directories in
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
307 `pmail-movemail-search-path', those in `exec-path', and `exec-directory'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
308 (if pmail-movemail-program
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
309 (pmail-probe pmail-movemail-program)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
310 (catch 'scan
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
311 (dolist (dir (append pmail-movemail-search-path exec-path
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
312 (list exec-directory)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
313 (when (and dir (file-accessible-directory-p dir))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
314 ;; Previously, this didn't have to work on Windows, because
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
315 ;; pmail-insert-inbox-text before r1.439 fell back to using
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
316 ;; (expand-file-name "movemail" exec-directory) and just
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
317 ;; assuming it would work.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
318 ;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-02/msg00087.html
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
319 (let ((progname (expand-file-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
320 (concat "movemail"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
321 (if (memq system-type '(ms-dos windows-nt))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
322 ".exe")) dir)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
323 (when (and (not (file-directory-p progname))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
324 (file-executable-p progname))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
325 (let ((x (pmail-probe progname)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
326 (when x
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
327 (setq pmail-movemail-program progname)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
328 (throw 'scan x))))))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
329
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
330 (defvar pmail-movemail-variant-in-use nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
331 "The movemail variant currently in use. Known variants are:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
332
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
333 `emacs' Means any implementation, compatible with the native Emacs one.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
334 This is the default;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
335 `mailutils' Means GNU mailutils implementation, capable of handling full
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
336 mail URLs as the source mailbox.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
337
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
338 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
339 (defun pmail-movemail-variant-p (&rest variants)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
340 "Return t if the current movemail variant is any of VARIANTS.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
341 Currently known variants are 'emacs and 'mailutils."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
342 (when (not pmail-movemail-variant-in-use)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
343 ;; Autodetect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
344 (setq pmail-movemail-variant-in-use (pmail-autodetect)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
345 (not (null (member pmail-movemail-variant-in-use variants))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
346
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
347 ;; Call for effect, to set pmail-movemail-program (if not set by the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
348 ;; user), and pmail-movemail-variant-in-use. Used by various functions.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
349 ;; I'm not sure if M-x pmail is the only entry point to this package.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
350 ;; If so, this can be moved there.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
351 (pmail-movemail-variant-p)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
352
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
353 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
354 (defcustom pmail-dont-reply-to-names nil "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
355 *A regexp specifying addresses to prune from a reply message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
356 A value of nil means exclude your own email address as an address
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
357 plus whatever is specified by `pmail-default-dont-reply-to-names'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
358 :type '(choice regexp (const :tag "Your Name" nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
359 :group 'pmail-reply)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
360
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
361 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
362 (defvar pmail-default-dont-reply-to-names "\\`info-" "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
363 A regular expression specifying part of the default value of the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
364 variable `pmail-dont-reply-to-names', for when the user does not set
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
365 `pmail-dont-reply-to-names' explicitly. (The other part of the default
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
366 value is the user's email address and name.)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
367 It is useful to set this variable in the site customization file.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
368
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
369 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
370 (defcustom pmail-ignored-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
371 (concat "^via:\\|^mail-from:\\|^origin:\\|^references:\\|^sender:"
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
372 "\\|^status:\\|^received:\\|^x400-originator:\\|^x400-recipients:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
373 "\\|^x400-received:\\|^x400-mts-identifier:\\|^x400-content-type:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
374 "\\|^\\(resent-\\|\\)message-id:\\|^summary-line:\\|^resent-date:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
375 "\\|^nntp-posting-host:\\|^path:\\|^x-char.*:\\|^x-face:\\|^face:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
376 "\\|^x-mailer:\\|^delivered-to:\\|^lines:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
377 "\\|^content-transfer-encoding:\\|^x-coding-system:"
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
378 "\\|^return-path:\\|^errors-to:\\|^return-receipt-to:"
101074
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
379 "\\|^precedence:\\|^mime-version:"
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
380 "\\|^list-owner:\\|^list-help:\\|^list-post:\\|^list-subscribe:"
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
381 "\\|^list-id:\\|^list-unsubscribe:\\|^list-archive:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
382 "\\|^content-length:\\|^nntp-posting-date:\\|^user-agent"
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
383 "\\|^importance:\\|^envelope-to:\\|^delivery-date\\|^openpgp:"
101074
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
384 "\\|^mbox-line:\\|^cancel-lock:"
cc1abbe3dfe5 (pmail-ignored-headers): Hide more fields.
Richard M. Stallman <rms@gnu.org>
parents: 100913
diff changeset
385 "\\|^DomainKey-Signature:\\|^dkim-signature:"
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
386 "\\|^resent-face:\\|^resent-x.*:\\|^resent-organization:\\|^resent-openpgp:"
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
387 "\\|^x-.*:")
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
388 "*Regexp to match header fields that Pmail should normally hide.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
389 \(See also `pmail-nonignored-headers', which overrides this regexp.)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
390 This variable is used for reformatting the message header,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
391 which normally happens once for each message,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
392 when you view the message for the first time in Pmail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
393 To make a change in this variable take effect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
394 for a message that you have already viewed,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
395 go to that message and type \\[pmail-toggle-header] twice."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
396 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
397 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
398
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
399 (defcustom pmail-nonignored-headers "^x-spam-status:"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
400 "*Regexp to match X header fields that Pmail should show.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
401 This regexp overrides `pmail-ignored-headers'; if both this regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
402 and that one match a certain header field, Pmail shows the field.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
403 If this is nil, ignore all header fields in `pmail-ignored-headers'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
404
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
405 This variable is used for reformatting the message header,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
406 which normally happens once for each message,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
407 when you view the message for the first time in Pmail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
408 To make a change in this variable take effect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
409 for a message that you have already viewed,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
410 go to that message and type \\[pmail-toggle-header] twice."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
411 :type '(choice (const nil) (regexp))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
412 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
413
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
414 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
415 (defcustom pmail-displayed-headers nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
416 "*Regexp to match Header fields that Pmail should display.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
417 If nil, display all header fields except those matched by
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
418 `pmail-ignored-headers'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
419 :type '(choice regexp (const :tag "All"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
420 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
421
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
422 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
423 (defcustom pmail-retry-ignored-headers "^x-authentication-warning:" "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
424 *Headers that should be stripped when retrying a failed message."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
425 :type '(choice regexp (const nil :tag "None"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
426 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
427
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
428 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
429 (defcustom pmail-highlighted-headers "^From:\\|^Subject:" "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
430 *Regexp to match Header fields that Pmail should normally highlight.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
431 A value of nil means don't highlight."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
432 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
433 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
434
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
435 (defface pmail-highlight
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
436 '((t (:inherit highlight)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
437 "Face to use for highlighting the most important header fields."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
438 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
439 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
440
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
441 (defface pmail-header-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
442 '((t (:inherit font-lock-function-name-face)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
443 "Face to use for highlighting the header names."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
444 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
445 :version "23.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
446
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
447 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
448 (defcustom pmail-delete-after-output nil "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
449 *Non-nil means automatically delete a message that is copied to a file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
450 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
451 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
452
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
453 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
454 (defcustom pmail-primary-inbox-list nil "\
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
455 *List of files which are inboxes for user's primary mail file `~/PMAIL'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
456 nil means the default, which is (\"/usr/spool/mail/$USER\")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
457 \(the name varies depending on the operating system,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
458 and the value of the environment variable MAIL overrides it)."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
459 ;; Don't use backquote here, because we don't want to need it
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
460 ;; at load time.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
461 :type (list 'choice '(const :tag "Default" nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
462 (list 'repeat ':value (list (or (getenv "MAIL")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
463 (concat "/var/spool/mail/"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
464 (getenv "USER"))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
465 'file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
466 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
467 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
468
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
469 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
470 (defcustom pmail-mail-new-frame nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
471 "*Non-nil means Pmail makes a new frame for composing outgoing mail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
472 This is handy if you want to preserve the window configuration of
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
473 the frame where you have the PMAIL buffer displayed."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
474 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
475 :group 'pmail-reply)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
476
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
477 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
478 (defcustom pmail-secondary-file-directory "~/"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
479 "*Directory for additional secondary Pmail files."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
480 :type 'directory
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
481 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
482 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
483 (defcustom pmail-secondary-file-regexp "\\.xmail$"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
484 "*Regexp for which files are secondary Pmail files."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
485 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
486 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
487
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
488 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
489 (defcustom pmail-confirm-expunge 'y-or-n-p
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
490 "*Whether and how to ask for confirmation before expunging deleted messages."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
491 :type '(choice (const :tag "No confirmation" nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
492 (const :tag "Confirm with y-or-n-p" y-or-n-p)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
493 (const :tag "Confirm with yes-or-no-p" yes-or-no-p))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
494 :version "21.1"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
495 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
496
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
497 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
498 (defvar pmail-mode-hook nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
499 "List of functions to call when Pmail is invoked.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
500
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
501 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
502 (defvar pmail-get-new-mail-hook nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
503 "List of functions to call when Pmail has retrieved new mail.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
504
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
505 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
506 (defcustom pmail-show-message-hook nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
507 "List of functions to call when Pmail displays a message."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
508 :type 'hook
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
509 :options '(goto-address)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
510 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
511
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
512 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
513 (defvar pmail-quit-hook nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
514 "List of functions to call when quitting out of Pmail.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
515
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
516 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
517 (defvar pmail-delete-message-hook nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
518 "List of functions to call when Pmail deletes a message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
519 When the hooks are called, the message has been marked deleted but is
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
520 still the current message in the Pmail buffer.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
521
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
522 ;; These may be altered by site-init.el to match the format of mmdf files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
523 ;; delimiting used on a given host (delim1 and delim2 from the config
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
524 ;; files).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
525
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
526 (defvar pmail-mmdf-delim1 "^\001\001\001\001\n"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
527 "Regexp marking the start of an mmdf message.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
528 (defvar pmail-mmdf-delim2 "^\001\001\001\001\n"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
529 "Regexp marking the end of an mmdf message.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
530
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
531 (defcustom pmail-message-filter nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
532 "If non-nil, a filter function for new messages in PMAIL.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
533 Called with region narrowed to the message, including headers,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
534 before obeying `pmail-ignored-headers'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
535 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
536 :type '(choice (const nil) function))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
537
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
538 (defcustom pmail-automatic-folder-directives nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
539 "List of directives specifying where to put a message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
540 Each element of the list is of the form:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
541
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
542 (FOLDERNAME FIELD REGEXP [ FIELD REGEXP ] ... )
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
543
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
544 Where FOLDERNAME is the name of a BABYL format folder to put the
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
545 message. If any of the field regexp's are nil, then it is ignored.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
546
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
547 If FOLDERNAME is \"/dev/null\", it is deleted.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
548 If FOLDERNAME is nil then it is deleted, and skipped.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
549
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
550 FIELD is the plain text name of a field in the message, such as
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
551 \"subject\" or \"from\". A FIELD of \"to\" will automatically include
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
552 all text from the \"cc\" field as well.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
553
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
554 REGEXP is an expression to match in the preceeding specified FIELD.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
555 FIELD/REGEXP pairs continue in the list.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
556
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
557 examples:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
558 (\"/dev/null\" \"from\" \"@spam.com\") ; delete all mail from spam.com
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
559 (\"RMS\" \"from\" \"rms@\") ; save all mail from RMS."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
560 :group 'pmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
561 :version "21.1"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
562 :type '(repeat (sexp :tag "Directive")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
563
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
564 (defvar pmail-reply-prefix "Re: "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
565 "String to prepend to Subject line when replying to a message.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
566
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
567 ;; Some mailers use "Re(2):" or "Re^2:" or "Re: Re:" or "Re[2]:".
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
568 ;; This pattern should catch all the common variants.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
569 ;; rms: I deleted the change to delete tags in square brackets
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
570 ;; because they mess up RT tags.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
571 (defvar pmail-reply-regexp "\\`\\(Re\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?: *\\)*"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
572 "Regexp to delete from Subject line before inserting `pmail-reply-prefix'.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
573
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
574 (defcustom pmail-display-summary nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
575 "*If non-nil, Pmail always displays the summary buffer."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
576 :group 'pmail-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
577 :type 'boolean)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
578
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
579 (defvar pmail-inbox-list nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
580 (put 'pmail-inbox-list 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
581
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
582 (defvar pmail-buffer nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
583 "The PMAIL buffer related to the current buffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
584 In an PMAIL buffer, this holds the PMAIL buffer itself.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
585 In a summary buffer, this holds the PMAIL buffer it is a summary for.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
586 (put 'pmail-buffer 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
587
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
588 ;; Message counters and markers. Deleted flags.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
589
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
590 (defvar pmail-current-message nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
591 (put 'pmail-current-message 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
592
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
593 (defvar pmail-total-messages nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
594 (put 'pmail-total-messages 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
595
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
596 (defvar pmail-message-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
597 (put 'pmail-message-vector 'permanent-local t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
598
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
599 (defvar pmail-deleted-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
600 (put 'pmail-deleted-vector 'permanent-local t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
601
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
602 (defvar pmail-msgref-vector nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
603 "In an Pmail buffer, a vector whose Nth element is a list (N).
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
604 When expunging renumbers messages, these lists are modified
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
605 by substituting the new message number into the existing list.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
606 (put 'pmail-msgref-vector 'permanent-local t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
607
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
608 (defvar pmail-overlay-list nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
609 (put 'pmail-overlay-list 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
610
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
611 ;; These are used by autoloaded pmail-summary.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
612
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
613 (defvar pmail-summary-buffer nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
614 (put 'pmail-summary-buffer 'permanent-local t)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
615 (defvar pmail-summary-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
616 (put 'pmail-summary-vector 'permanent-local t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
617
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
618 (defvar pmail-view-buffer nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
619 "Buffer which holds PMAIL message for MIME displaying.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
620 (put 'pmail-view-buffer 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
621
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
622 ;; `Sticky' default variables.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
623
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
624 (defvar pmail-last-regexp nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
625 (put 'pmail-last-regexp 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
626
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
627 (defcustom pmail-default-file "~/xmail"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
628 "*Default file name for \\[pmail-output]."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
629 :type 'file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
630 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
631 (defcustom pmail-default-body-file "~/mailout"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
632 "*Default file name for \\[pmail-output-body-to-file]."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
633 :type 'file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
634 :group 'pmail-files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
635 :version "20.3")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
636
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
637 ;; Mule and MIME related variables.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
638
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
639 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
640 (defvar pmail-file-coding-system nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
641 "Coding system used in PMAIL file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
642
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
643 This is set to nil by default.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
644
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
645 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
646 (defcustom pmail-enable-mime nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
647 "*If non-nil, PMAIL uses MIME feature.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
648 If the value is t, PMAIL automatically shows MIME decoded message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
649 If the value is neither t nor nil, PMAIL does not show MIME decoded message
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
650 until a user explicitly requires it.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
651
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
652 Even if the value is non-nil, you can't use MIME feature
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
653 if the feature specified by `pmail-mime-feature' is not available
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
654 in your session."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
655 :type '(choice (const :tag "on" t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
656 (const :tag "off" nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
657 (other :tag "when asked" ask))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
658 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
659
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
660 (defvar pmail-enable-mime-composing nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
661 "*If non-nil, PMAIL uses `pmail-insert-mime-forwarded-message-function' to forward.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
662
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
663 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
664 (defvar pmail-show-mime-function nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
665 "Function to show MIME decoded message of PMAIL file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
666 This function is called when `pmail-enable-mime' is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
667 It is called with no argument.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
668
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
669 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
670 (defvar pmail-insert-mime-forwarded-message-function nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
671 "Function to insert a message in MIME format so it can be forwarded.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
672 This function is called if `pmail-enable-mime' or
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
673 `pmail-enable-mime-composing' is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
674 It is called with one argument FORWARD-BUFFER, which is a
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
675 buffer containing the message to forward. The current buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
676 is the outgoing mail buffer.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
677
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
678 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
679 (defvar pmail-insert-mime-resent-message-function nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
680 "Function to insert a message in MIME format so it can be resent.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
681 This function is called if `pmail-enable-mime' is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
682 It is called with one argument FORWARD-BUFFER, which is a
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
683 buffer containing the message to forward. The current buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
684 is the outgoing mail buffer.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
685
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
686 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
687 (defvar pmail-search-mime-message-function nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
688 "Function to check if a regexp matches a MIME message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
689 This function is called if `pmail-enable-mime' is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
690 It is called with two arguments MSG and REGEXP, where
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
691 MSG is the message number, REGEXP is the regular expression.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
692
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
693 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
694 (defvar pmail-search-mime-header-function nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
695 "Function to check if a regexp matches a header of MIME message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
696 This function is called if `pmail-enable-mime' is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
697 It is called with three arguments MSG, REGEXP, and LIMIT, where
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
698 MSG is the message number,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
699 REGEXP is the regular expression,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
700 LIMIT is the position specifying the end of header.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
701
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
702 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
703 (defvar pmail-mime-feature 'pmail-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
704 "Feature to require to load MIME support in Pmail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
705 When starting Pmail, if `pmail-enable-mime' is non-nil,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
706 this feature is required with `require'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
707
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
708 The default value is `pmail-mime'. This feature is provided by
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
709 the pmail-mime package available at <http://www.m17n.org/pmail-mime/>.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
710
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
711 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
712 (defvar pmail-decode-mime-charset t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
713 "*Non-nil means a message is decoded by MIME's charset specification.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
714 If this variable is nil, or the message has not MIME specification,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
715 the message is decoded as normal way.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
716
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
717 If the variable `pmail-enable-mime' is non-nil, this variables is
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
718 ignored, and all the decoding work is done by a feature specified by
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
719 the variable `pmail-mime-feature'.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
720
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
721 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
722 (defvar pmail-mime-charset-pattern
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
723 (concat "^content-type:[ \t]*text/plain;"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
724 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
725 "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
726 "Regexp to match MIME-charset specification in a header of message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
727 The first parenthesized expression should match the MIME-charset name.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
728
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
729
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
730 ;;; Regexp matching the delimiter of messages in UNIX mail format
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
731 ;;; (UNIX From lines), minus the initial ^. Note that if you change
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
732 ;;; this expression, you must change the code in pmail-nuke-pinhead-header
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
733 ;;; that knows the exact ordering of the \\( \\) subexpressions.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
734 (defvar pmail-unix-mail-delimiter
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
735 (let ((time-zone-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
736 (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
737 "\\|[-+]?[0-9][0-9][0-9][0-9]"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
738 "\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
739 "\\) *")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
740 (concat
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
741 "From "
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
742
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
743 ;; Many things can happen to an RFC 822 mailbox before it is put into
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
744 ;; a `From' line. The leading phrase can be stripped, e.g.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
745 ;; `Joe <@w.x:joe@y.z>' -> `<@w.x:joe@y.z>'. The <> can be stripped, e.g.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
746 ;; `<@x.y:joe@y.z>' -> `@x.y:joe@y.z'. Everything starting with a CRLF
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
747 ;; can be removed, e.g.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
748 ;; From: joe@y.z (Joe K
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
749 ;; User)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
750 ;; can yield `From joe@y.z (Joe K Fri Mar 22 08:11:15 1996', and
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
751 ;; From: Joe User
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
752 ;; <joe@y.z>
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
753 ;; can yield `From Joe User Fri Mar 22 08:11:15 1996'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
754 ;; The mailbox can be removed or be replaced by white space, e.g.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
755 ;; From: "Joe User"{space}{tab}
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
756 ;; <joe@y.z>
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
757 ;; can yield `From {space}{tab} Fri Mar 22 08:11:15 1996',
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
758 ;; where {space} and {tab} represent the Ascii space and tab characters.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
759 ;; We want to match the results of any of these manglings.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
760 ;; The following regexp rejects names whose first characters are
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
761 ;; obviously bogus, but after that anything goes.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
762 "\\([^\0-\b\n-\r\^?].*\\)? "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
763
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
764 ;; The time the message was sent.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
765 "\\([^\0-\r \^?]+\\) +" ; day of the week
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
766 "\\([^\0-\r \^?]+\\) +" ; month
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
767 "\\([0-3]?[0-9]\\) +" ; day of month
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
768 "\\([0-2][0-9]:[0-5][0-9]\\(:[0-6][0-9]\\)?\\) *" ; time of day
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
769
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
770 ;; Perhaps a time zone, specified by an abbreviation, or by a
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
771 ;; numeric offset.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
772 time-zone-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
773
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
774 ;; The year.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
775 " \\([0-9][0-9]+\\) *"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
776
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
777 ;; On some systems the time zone can appear after the year, too.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
778 time-zone-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
779
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
780 ;; Old uucp cruft.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
781 "\\(remote from .*\\)?"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
782
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
783 "\n"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
784 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
785
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
786 (defvar pmail-font-lock-keywords
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
787 ;; These are all matched case-insensitively.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
788 (eval-when-compile
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
789 (let* ((cite-chars "[>|}]")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
790 (cite-prefix "a-z")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
791 (cite-suffix (concat cite-prefix "0-9_.@-`'\"")))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
792 (list '("^\\(From\\|Sender\\|Resent-From\\):"
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
793 . 'pmail-header-name)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
794 '("^Reply-To:.*$" . 'pmail-header-name)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
795 '("^Subject:" . 'pmail-header-name)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
796 '("^X-Spam-Status:" . 'pmail-header-name)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
797 '("^\\(To\\|Apparently-To\\|Cc\\|Newsgroups\\):"
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
798 . 'pmail-header-name)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
799 ;; Use MATCH-ANCHORED to effectively anchor the regexp left side.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
800 `(,cite-chars
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
801 (,(concat "\\=[ \t]*"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
802 "\\(\\(\\([" cite-prefix "]+[" cite-suffix "]*\\)?"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
803 "\\(" cite-chars "[ \t]*\\)\\)+\\)"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
804 "\\(.*\\)")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
805 (beginning-of-line) (end-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
806 (1 font-lock-comment-delimiter-face nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
807 (5 font-lock-comment-face nil t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
808 '("^\\(X-[a-z0-9-]+\\|In-reply-to\\|Date\\):.*\\(\n[ \t]+.*\\)*$"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
809 . 'pmail-header-name))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
810 "Additional expressions to highlight in Pmail mode.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
811
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
812 ;; Perform BODY in the summary buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
813 ;; in such a way that its cursor is properly updated in its own window.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
814 (defmacro pmail-select-summary (&rest body)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
815 `(let ((total pmail-total-messages))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
816 (if (pmail-summary-displayed)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
817 (let ((window (selected-window)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
818 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
819 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
820 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
821 (pop-to-buffer pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
822 ;; pmail-total-messages is a buffer-local var
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
823 ;; in the pmail buffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
824 ;; This way we make it available for the body
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
825 ;; even tho the pmail buffer is not current.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
826 (let ((pmail-total-messages total))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
827 ,@body))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
828 (select-window window))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
829 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
830 (set-buffer pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
831 (let ((pmail-total-messages total))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
832 ,@body)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
833 (pmail-maybe-display-summary)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
834
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
835 ;;;; *** Pmail Mode ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
836
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
837 ;; This variable is dynamically bound. The defvar is here to placate
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
838 ;; the byte compiler.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
839
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
840 (defvar pmail-enable-multibyte nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
841
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
842
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
843 (defun pmail-require-mime-maybe ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
844 "Require `pmail-mime-feature' if that is non-nil.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
845 Signal an error and set `pmail-mime-feature' to nil if the feature
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
846 isn't provided."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
847 (when pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
848 (condition-case err
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
849 (require pmail-mime-feature)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
850 (error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
851 (display-warning
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
852 'pmail
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
853 (format "Although MIME support is requested
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
854 by setting `pmail-enable-mime' to non-nil, the required feature
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
855 `%s' (the value of `pmail-mime-feature')
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
856 is not available in the current session.
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
857 So, the MIME support is turned off for the moment."
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
858 pmail-mime-feature)
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
859 :warning)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
860 (setq pmail-enable-mime nil)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
861
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
862
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
863 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
864 (defun pmail (&optional file-name-arg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
865 "Read and edit incoming mail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
866 Moves messages into file named by `pmail-file-name' (a babyl format file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
867 and edits that file in PMAIL Mode.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
868 Type \\[describe-mode] once editing that file, for a list of PMAIL commands.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
869
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
870 May be called with file name as argument; then performs pmail editing on
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
871 that file, but does not copy any new mail into the file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
872 Interactively, if you supply a prefix argument, then you
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
873 have a chance to specify a file name with the minibuffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
874
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
875 If `pmail-display-summary' is non-nil, make a summary for this PMAIL file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
876 (interactive (if current-prefix-arg
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
877 (list (read-file-name "Run pmail on PMAIL file: "))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
878 (pmail-require-mime-maybe)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
879 (let* ((file-name (expand-file-name (or file-name-arg pmail-file-name)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
880 ;; Use find-buffer-visiting, not get-file-buffer, for those users
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
881 ;; who have find-file-visit-truename set to t.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
882 (existed (find-buffer-visiting file-name))
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
883 run-mail-hook mail-buf msg-shown)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
884 ;; Determine if an existing mail file has been changed behind the
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
885 ;; scene...
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
886 (if (and existed (not (verify-visited-file-modtime existed)))
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
887 ;; The mail file has been changed. Revisit it and reset the
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
888 ;; message state variables when in pmail mode.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
889 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
890 (find-file file-name)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
891 (when (and (verify-visited-file-modtime existed)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
892 (eq major-mode 'pmail-mode))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
893 (pmail-set-message-counters)))
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
894 ;; The mail file is either unchanged or not visited. Visit it.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
895 (switch-to-buffer
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
896 (let ((enable-local-variables nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
897 (find-file-noselect file-name))))
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
898 ;; Insure that the collection and view buffers are in sync and
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
899 ;; insure that a message is not being edited.
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
900 (if (eq major-mode 'pmail-mode)
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
901 (pmail-swap-buffers-maybe))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
902 (if (eq major-mode 'pmail-edit-mode)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
903 (error "Exit Pmail Edit mode before getting new mail"))
100620
65cf390be440 (pmail): Ensure that pmail-mode-hook is run.
Chong Yidong <cyd@stupidchicken.com>
parents: 100584
diff changeset
904 (or (and existed (> (buffer-size) 0))
65cf390be440 (pmail): Ensure that pmail-mode-hook is run.
Chong Yidong <cyd@stupidchicken.com>
parents: 100584
diff changeset
905 (setq run-mail-hook t))
98707
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
906 ;; Insure that the Rmail file is in mbox format, the buffer is in
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
907 ;; Pmail mode and has been scanned to find all the messages
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
908 ;; (setting the global message variables in the process).
98707
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
909 (pmail-convert-file-maybe)
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
910 (unless (eq major-mode 'pmail-mode)
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
911 (pmail-mode-2))
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
912 (goto-char (point-max))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
913 (pmail-maybe-set-message-counters)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
914 (setq mail-buf pmail-buffer)
98707
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
915 ;; Show the first unread message and process summary mode.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
916 (unwind-protect
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
917 ;; Only get new mail when there is not a file name argument.
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
918 (unless file-name-arg
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
919 (pmail-get-new-mail))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
920 (progn
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
921 (set-buffer mail-buf)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
922 (pmail-show-message-maybe (pmail-first-unseen-message))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
923 (if pmail-display-summary (pmail-summary))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
924 (pmail-construct-io-menu)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
925 (if run-mail-hook
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
926 (run-hooks 'pmail-mode-hook))))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
927
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
928 (defun pmail-convert-file-maybe ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
929 "Determine if the file needs to be converted to mbox format."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
930 (widen)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
931 (goto-char (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
932 ;; Detect previous Babyl format files.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
933 (cond ((looking-at "BABYL OPTIONS:")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
934 ;; The file is Babyl version 5. Use unrmail to convert
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
935 ;; it.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
936 (pmail-convert-babyl-to-mbox))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
937 ((looking-at "Version: 5\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
938 ;; Losing babyl file made by old version of Pmail. Fix the
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
939 ;; babyl file header and use unrmail to convert to mbox
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
940 ;; format.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
941 (let ((buffer-read-only nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
942 (insert "BABYL OPTIONS: -*- pmail -*-\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
943 (pmail-convert-babyl-to-mbox)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
944 ((equal (point-min) (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
945 (message "Empty Pmail file."))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
946 ((looking-at "From "))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
947 (t (error "Invalid mbox file"))))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
948
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
949 (defun pmail-error-bad-format (&optional msgnum)
100340
c06b84bf19a5 (pmail-insert-pmail-file-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100337
diff changeset
950 "Report that the buffer is not in the mbox file format.
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
951 MSGNUM, if present, indicates the malformed message."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
952 (if msgnum
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
953 (error "Message %d is not a valid RFC2822 message" msgnum)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
954 (error "Message is not a valid RFC2822 message")))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
955
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
956 (defun pmail-convert-babyl-to-mbox ()
100255
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
957 "Convert the mail file from Babyl version 5 to mbox.
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
958 This function also reinitializes local variables used by Pmail."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
959 (let ((old-file (make-temp-file "pmail"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
960 (new-file (make-temp-file "pmail")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
961 (unwind-protect
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
962 (progn
100255
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
963 (kill-all-local-variables)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
964 (write-region (point-min) (point-max) old-file)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
965 (unrmail old-file new-file)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
966 (message "Replacing BABYL format with mbox format...")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
967 (let ((inhibit-read-only t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
968 (erase-buffer)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
969 (insert-file-contents-literally new-file)
100255
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
970 (pmail-mode-1)
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
971 (pmail-perm-variables)
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
972 (pmail-variables)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
973 (goto-char (point-max))
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
974 (pmail-set-message-counters))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
975 (message "Replacing BABYL format with mbox format...done"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
976 (delete-file old-file)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
977 (delete-file new-file))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
978
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
979 (defun pmail-get-coding-system ()
100340
c06b84bf19a5 (pmail-insert-pmail-file-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100337
diff changeset
980 "Return a suitable coding system to use for the current mail message.
c06b84bf19a5 (pmail-insert-pmail-file-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100337
diff changeset
981 The buffer is expected to be narrowed to just the header of the message."
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
982 (let ((content-type-header (mail-fetch-field "content-type"))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
983 separator)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
984 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
985 (setq separator (search-forward "\n\n")))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
986 (if (and content-type-header
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
987 (string-match pmail-mime-charset-pattern content-type-header))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
988 (substring content-type-header (match-beginning 1) (match-end 1))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
989 'undecided)))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
990
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
991 ;;; Set up Pmail mode keymaps
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
992
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
993 (defvar pmail-mode-map nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
994 (if pmail-mode-map
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
995 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
996 (setq pmail-mode-map (make-keymap))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
997 (suppress-keymap pmail-mode-map)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
998 (define-key pmail-mode-map "a" 'pmail-add-label)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
999 (define-key pmail-mode-map "b" 'pmail-bury)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1000 (define-key pmail-mode-map "c" 'pmail-continue)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1001 (define-key pmail-mode-map "d" 'pmail-delete-forward)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1002 (define-key pmail-mode-map "\C-d" 'pmail-delete-backward)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1003 (define-key pmail-mode-map "e" 'pmail-edit-current-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1004 (define-key pmail-mode-map "f" 'pmail-forward)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1005 (define-key pmail-mode-map "g" 'pmail-get-new-mail)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1006 (define-key pmail-mode-map "h" 'pmail-summary)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1007 (define-key pmail-mode-map "i" 'pmail-input)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1008 (define-key pmail-mode-map "j" 'pmail-show-message-maybe)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1009 (define-key pmail-mode-map "k" 'pmail-kill-label)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1010 (define-key pmail-mode-map "l" 'pmail-summary-by-labels)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1011 (define-key pmail-mode-map "\e\C-h" 'pmail-summary)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1012 (define-key pmail-mode-map "\e\C-l" 'pmail-summary-by-labels)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1013 (define-key pmail-mode-map "\e\C-r" 'pmail-summary-by-recipients)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1014 (define-key pmail-mode-map "\e\C-s" 'pmail-summary-by-regexp)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1015 (define-key pmail-mode-map "\e\C-t" 'pmail-summary-by-topic)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1016 (define-key pmail-mode-map "m" 'pmail-mail)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1017 (define-key pmail-mode-map "\em" 'pmail-retry-failure)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1018 (define-key pmail-mode-map "n" 'pmail-next-undeleted-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1019 (define-key pmail-mode-map "\en" 'pmail-next-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1020 (define-key pmail-mode-map "\e\C-n" 'pmail-next-labeled-message)
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1021 (define-key pmail-mode-map "o" 'pmail-output)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1022 (define-key pmail-mode-map "\C-o" 'pmail-output-as-seen)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1023 (define-key pmail-mode-map "p" 'pmail-previous-undeleted-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1024 (define-key pmail-mode-map "\ep" 'pmail-previous-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1025 (define-key pmail-mode-map "\e\C-p" 'pmail-previous-labeled-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1026 (define-key pmail-mode-map "q" 'pmail-quit)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1027 (define-key pmail-mode-map "r" 'pmail-reply)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1028 ;; I find I can't live without the default M-r command -- rms.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1029 ;; (define-key pmail-mode-map "\er" 'pmail-search-backwards)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1030 (define-key pmail-mode-map "s" 'pmail-expunge-and-save)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1031 (define-key pmail-mode-map "\es" 'pmail-search)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1032 (define-key pmail-mode-map "t" 'pmail-toggle-header)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1033 (define-key pmail-mode-map "u" 'pmail-undelete-previous-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1034 (define-key pmail-mode-map "w" 'pmail-output-body-to-file)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1035 (define-key pmail-mode-map "\C-c\C-w" 'pmail-widen)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1036 (define-key pmail-mode-map "x" 'pmail-expunge)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1037 (define-key pmail-mode-map "." 'pmail-beginning-of-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1038 (define-key pmail-mode-map "/" 'pmail-end-of-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1039 (define-key pmail-mode-map "<" 'pmail-first-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1040 (define-key pmail-mode-map ">" 'pmail-last-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1041 (define-key pmail-mode-map " " 'scroll-up)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1042 (define-key pmail-mode-map "\177" 'scroll-down)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1043 (define-key pmail-mode-map "?" 'describe-mode)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1044 (define-key pmail-mode-map "\C-c\C-s\C-d" 'pmail-sort-by-date)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1045 (define-key pmail-mode-map "\C-c\C-s\C-s" 'pmail-sort-by-subject)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1046 (define-key pmail-mode-map "\C-c\C-s\C-a" 'pmail-sort-by-author)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1047 (define-key pmail-mode-map "\C-c\C-s\C-r" 'pmail-sort-by-recipient)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1048 (define-key pmail-mode-map "\C-c\C-s\C-c" 'pmail-sort-by-correspondent)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1049 (define-key pmail-mode-map "\C-c\C-s\C-l" 'pmail-sort-by-lines)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1050 (define-key pmail-mode-map "\C-c\C-s\C-k" 'pmail-sort-by-labels)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1051 (define-key pmail-mode-map "\C-c\C-n" 'pmail-next-same-subject)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1052 (define-key pmail-mode-map "\C-c\C-p" 'pmail-previous-same-subject)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1053 )
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1054
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1055 (define-key pmail-mode-map [menu-bar] (make-sparse-keymap))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1056
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1057 (define-key pmail-mode-map [menu-bar classify]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1058 (cons "Classify" (make-sparse-keymap "Classify")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1059
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1060 (define-key pmail-mode-map [menu-bar classify input-menu]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1061 nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1062
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1063 (define-key pmail-mode-map [menu-bar classify output-menu]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1064 nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1065
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1066 (define-key pmail-mode-map [menu-bar classify output-body]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1067 '("Output body to file..." . pmail-output-body-to-file))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1068
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1069 (define-key pmail-mode-map [menu-bar classify output-inbox]
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1070 '("Output..." . pmail-output))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1071
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1072 (define-key pmail-mode-map [menu-bar classify output]
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1073 '("Output as seen..." . pmail-output-as-seen))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1074
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1075 (define-key pmail-mode-map [menu-bar classify kill-label]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1076 '("Kill Label..." . pmail-kill-label))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1077
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1078 (define-key pmail-mode-map [menu-bar classify add-label]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1079 '("Add Label..." . pmail-add-label))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1080
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1081 (define-key pmail-mode-map [menu-bar summary]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1082 (cons "Summary" (make-sparse-keymap "Summary")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1083
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1084 (define-key pmail-mode-map [menu-bar summary senders]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1085 '("By Senders..." . pmail-summary-by-senders))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1086
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1087 (define-key pmail-mode-map [menu-bar summary labels]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1088 '("By Labels..." . pmail-summary-by-labels))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1089
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1090 (define-key pmail-mode-map [menu-bar summary recipients]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1091 '("By Recipients..." . pmail-summary-by-recipients))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1092
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1093 (define-key pmail-mode-map [menu-bar summary topic]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1094 '("By Topic..." . pmail-summary-by-topic))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1095
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1096 (define-key pmail-mode-map [menu-bar summary regexp]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1097 '("By Regexp..." . pmail-summary-by-regexp))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1098
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1099 (define-key pmail-mode-map [menu-bar summary all]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1100 '("All" . pmail-summary))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1101
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1102 (define-key pmail-mode-map [menu-bar mail]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1103 (cons "Mail" (make-sparse-keymap "Mail")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1104
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1105 (define-key pmail-mode-map [menu-bar mail pmail-get-new-mail]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1106 '("Get New Mail" . pmail-get-new-mail))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1107
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1108 (define-key pmail-mode-map [menu-bar mail lambda]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1109 '("----"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1110
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1111 (define-key pmail-mode-map [menu-bar mail continue]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1112 '("Continue" . pmail-continue))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1113
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1114 (define-key pmail-mode-map [menu-bar mail resend]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1115 '("Re-send..." . pmail-resend))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1116
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1117 (define-key pmail-mode-map [menu-bar mail forward]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1118 '("Forward" . pmail-forward))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1119
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1120 (define-key pmail-mode-map [menu-bar mail retry]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1121 '("Retry" . pmail-retry-failure))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1122
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1123 (define-key pmail-mode-map [menu-bar mail reply]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1124 '("Reply" . pmail-reply))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1125
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1126 (define-key pmail-mode-map [menu-bar mail mail]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1127 '("Mail" . pmail-mail))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1128
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1129 (define-key pmail-mode-map [menu-bar delete]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1130 (cons "Delete" (make-sparse-keymap "Delete")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1131
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1132 (define-key pmail-mode-map [menu-bar delete expunge/save]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1133 '("Expunge/Save" . pmail-expunge-and-save))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1134
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1135 (define-key pmail-mode-map [menu-bar delete expunge]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1136 '("Expunge" . pmail-expunge))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1137
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1138 (define-key pmail-mode-map [menu-bar delete undelete]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1139 '("Undelete" . pmail-undelete-previous-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1140
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1141 (define-key pmail-mode-map [menu-bar delete delete]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1142 '("Delete" . pmail-delete-forward))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1143
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1144 (define-key pmail-mode-map [menu-bar move]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1145 (cons "Move" (make-sparse-keymap "Move")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1146
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1147 (define-key pmail-mode-map [menu-bar move search-back]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1148 '("Search Back..." . pmail-search-backwards))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1149
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1150 (define-key pmail-mode-map [menu-bar move search]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1151 '("Search..." . pmail-search))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1152
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1153 (define-key pmail-mode-map [menu-bar move previous]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1154 '("Previous Nondeleted" . pmail-previous-undeleted-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1155
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1156 (define-key pmail-mode-map [menu-bar move next]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1157 '("Next Nondeleted" . pmail-next-undeleted-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1158
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1159 (define-key pmail-mode-map [menu-bar move last]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1160 '("Last" . pmail-last-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1161
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1162 (define-key pmail-mode-map [menu-bar move first]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1163 '("First" . pmail-first-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1164
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1165 (define-key pmail-mode-map [menu-bar move previous]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1166 '("Previous" . pmail-previous-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1167
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1168 (define-key pmail-mode-map [menu-bar move next]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1169 '("Next" . pmail-next-message))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1170
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1171 ;; Pmail toolbar
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1172 (defvar pmail-tool-bar-map
98625
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1173 (let ((map (make-sparse-keymap)))
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1174 (tool-bar-local-item-from-menu 'pmail-get-new-mail "mail/inbox"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1175 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1176 (tool-bar-local-item-from-menu 'pmail-next-undeleted-message "right-arrow"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1177 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1178 (tool-bar-local-item-from-menu 'pmail-previous-undeleted-message "left-arrow"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1179 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1180 (tool-bar-local-item-from-menu 'pmail-search "search"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1181 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1182 (tool-bar-local-item-from-menu 'pmail-input "open"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1183 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1184 (tool-bar-local-item-from-menu 'pmail-mail "mail/compose"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1185 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1186 (tool-bar-local-item-from-menu 'pmail-reply "mail/reply-all"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1187 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1188 (tool-bar-local-item-from-menu 'pmail-forward "mail/forward"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1189 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1190 (tool-bar-local-item-from-menu 'pmail-delete-forward "close"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1191 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1192 (tool-bar-local-item-from-menu 'pmail-output "mail/move"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1193 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1194 (tool-bar-local-item-from-menu 'pmail-output-body-to-file "mail/save"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1195 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1196 (tool-bar-local-item-from-menu 'pmail-expunge "delete"
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1197 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1198 map))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1199
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1200
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1201
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1202 ;; Pmail mode is suitable only for specially formatted data.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1203 (put 'pmail-mode 'mode-class 'special)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1204
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1205 (defun pmail-mode-kill-summary ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1206 (if pmail-summary-buffer (kill-buffer pmail-summary-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1207
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1208 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1209 (defun pmail-mode ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1210 "Pmail Mode is used by \\<pmail-mode-map>\\[pmail] for editing Pmail files.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1211 All normal editing commands are turned off.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1212 Instead, these commands are available:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1213
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1214 \\[pmail-beginning-of-message] Move point to front of this message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1215 \\[pmail-end-of-message] Move point to bottom of this message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1216 \\[scroll-up] Scroll to next screen of this message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1217 \\[scroll-down] Scroll to previous screen of this message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1218 \\[pmail-next-undeleted-message] Move to Next non-deleted message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1219 \\[pmail-previous-undeleted-message] Move to Previous non-deleted message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1220 \\[pmail-next-message] Move to Next message whether deleted or not.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1221 \\[pmail-previous-message] Move to Previous message whether deleted or not.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1222 \\[pmail-first-message] Move to the first message in Pmail file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1223 \\[pmail-last-message] Move to the last message in Pmail file.
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1224 \\[pmail-show-message-maybe] Jump to message specified by numeric position in file.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1225 \\[pmail-search] Search for string and show message it is found in.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1226 \\[pmail-delete-forward] Delete this message, move to next nondeleted.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1227 \\[pmail-delete-backward] Delete this message, move to previous nondeleted.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1228 \\[pmail-undelete-previous-message] Undelete message. Tries current message, then earlier messages
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1229 till a deleted message is found.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1230 \\[pmail-edit-current-message] Edit the current message. \\[pmail-cease-edit] to return to Pmail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1231 \\[pmail-expunge] Expunge deleted messages.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1232 \\[pmail-expunge-and-save] Expunge and save the file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1233 \\[pmail-quit] Quit Pmail: expunge, save, then switch to another buffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1234 \\[save-buffer] Save without expunging.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1235 \\[pmail-get-new-mail] Move new mail from system spool directory into this file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1236 \\[pmail-mail] Mail a message (same as \\[mail-other-window]).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1237 \\[pmail-continue] Continue composing outgoing message started before.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1238 \\[pmail-reply] Reply to this message. Like \\[pmail-mail] but initializes some fields.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1239 \\[pmail-retry-failure] Send this message again. Used on a mailer failure message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1240 \\[pmail-forward] Forward this message to another user.
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1241 \\[pmail-output] Output (append) this message to another mail file.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1242 \\[pmail-output-as-seen] Output (append) this message to file as it's displayed.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1243 \\[pmail-output-body-to-file] Save message body to a file. Default filename comes from Subject line.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1244 \\[pmail-input] Input Pmail file. Run Pmail on that file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1245 \\[pmail-add-label] Add label to message. It will be displayed in the mode line.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1246 \\[pmail-kill-label] Kill label. Remove a label from current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1247 \\[pmail-next-labeled-message] Move to Next message with specified label
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1248 (label defaults to last one specified).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1249 Standard labels: filed, unseen, answered, forwarded, deleted.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1250 Any other label is present only if you add it with \\[pmail-add-label].
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1251 \\[pmail-previous-labeled-message] Move to Previous message with specified label
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1252 \\[pmail-summary] Show headers buffer, with a one line summary of each message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1253 \\[pmail-summary-by-labels] Summarize only messages with particular label(s).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1254 \\[pmail-summary-by-recipients] Summarize only messages with particular recipient(s).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1255 \\[pmail-summary-by-regexp] Summarize only messages with particular regexp(s).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1256 \\[pmail-summary-by-topic] Summarize only messages with subject line regexp(s).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1257 \\[pmail-toggle-header] Toggle display of complete header."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1258 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1259 (let ((finding-pmail-file (not (eq major-mode 'pmail-mode))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1260 (pmail-mode-2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1261 (when (and finding-pmail-file
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1262 (null coding-system-for-read)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1263 default-enable-multibyte-characters)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1264 (let ((pmail-enable-multibyte t))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1265 (pmail-require-mime-maybe)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1266 (pmail-convert-file-maybe)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1267 (goto-char (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1268 (set-buffer-multibyte t)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1269 (pmail-set-message-counters)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1270 (pmail-show-message-maybe pmail-total-messages)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1271 (when finding-pmail-file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1272 (when pmail-display-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1273 (pmail-summary))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1274 (pmail-construct-io-menu))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1275 (run-mode-hooks 'pmail-mode-hook)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1276
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1277 (defun pmail-mode-2 ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1278 (kill-all-local-variables)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1279 (pmail-mode-1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1280 (pmail-perm-variables)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1281 (pmail-variables))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1282
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1283 (defun pmail-mode-1 ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1284 (setq major-mode 'pmail-mode)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1285 (setq mode-name "PMAIL")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1286 (setq buffer-read-only t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1287 ;; No need to auto save PMAIL files in normal circumstances
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1288 ;; because they contain no info except attribute changes
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1289 ;; and deletion of messages.
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1290 ;; The one exception is when messages are copied into another mbox buffer.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1291 ;; pmail-output enables auto save when you do that.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1292 (setq buffer-auto-save-file-name nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1293 (use-local-map pmail-mode-map)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1294 (set-syntax-table text-mode-syntax-table)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1295 (setq local-abbrev-table text-mode-abbrev-table)
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1296 ;; First attempt at adding hook functions to support buffer swapping...
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1297 (add-hook 'kill-buffer-hook 'pmail-mode-kill-buffer-hook nil t)
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1298 (add-hook 'change-major-mode-hook 'pmail-change-major-mode-hook nil t))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1299
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1300 (defun pmail-generate-viewer-buffer ()
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1301 "Return a reusable buffer suitable for viewing messages.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1302 Create the buffer if necessary."
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1303 (let* ((suffix (file-name-nondirectory (or buffer-file-name (buffer-name))))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1304 (name (format " *message-viewer %s*" suffix))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1305 (buf (get-buffer name)))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1306 (unless buf
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1307 (generate-new-buffer name))))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1308
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1309 (defun pmail-change-major-mode-hook ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1310 ;; Bring the actual Pmail messages back into the main buffer.
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1311 (if buffer-swapped-with
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1312 (when (pmail-buffers-swapped-p)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1313 (setq buffer-swapped-with nil)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1314 (let ((modp (buffer-modified-p)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1315 (buffer-swap-text pmail-view-buffer)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1316 (set-buffer-modified-p modp)))))
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1317 ;; Throw away the summary.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1318 ;;(when (buffer-live-p pmail-view-buffer) (kill-buffer pmail-view-buffer)))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1319
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1320 (defun pmail-buffers-swapped-p ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1321 "Return non-nil if the message collection is in `pmail-view-buffer'."
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1322 ;; We need to be careful to keep track of which buffer holds the
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1323 ;; message collection, since we swap the collection the view of the
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1324 ;; current message back and forth. This model is based on Stefan
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1325 ;; Monnier's solution for tar-mode.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1326 (and (buffer-live-p pmail-view-buffer)
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1327 (> (buffer-size pmail-view-buffer) (buffer-size))))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1328
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1329 (defun pmail-swap-buffers-maybe ()
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1330 "Determine if the Pmail buffer is showing a message.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1331 If so restore the actual mbox message collection."
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1332 (with-current-buffer pmail-buffer
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1333 (when (pmail-buffers-swapped-p)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1334 (let ((modp (buffer-modified-p)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1335 (buffer-swap-text pmail-view-buffer)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1336 (set-buffer-modified-p modp))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1337 (setq buffer-swapped-with nil))))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1338
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1339 (defun pmail-mode-kill-buffer-hook ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1340 (if (buffer-live-p pmail-view-buffer) (kill-buffer pmail-view-buffer)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1341
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1342 ;; Set up the permanent locals associated with an Pmail file.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1343 (defun pmail-perm-variables ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1344 (make-local-variable 'pmail-last-regexp)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1345 (make-local-variable 'pmail-deleted-vector)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1346 (make-local-variable 'pmail-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1347 (setq pmail-buffer (current-buffer))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1348 (set-buffer-multibyte nil)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1349 (make-local-variable 'pmail-view-buffer)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1350 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1351 (setq pmail-view-buffer (pmail-generate-viewer-buffer))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1352 (set-buffer pmail-view-buffer)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1353 (setq buffer-undo-list t)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1354 (set-buffer-multibyte t))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1355 (make-local-variable 'pmail-summary-buffer)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1356 (make-local-variable 'pmail-summary-vector)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1357 (make-local-variable 'pmail-current-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1358 (make-local-variable 'pmail-total-messages)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1359 (setq pmail-total-messages 0)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1360 (make-local-variable 'pmail-overlay-list)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1361 (setq pmail-overlay-list nil)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1362 (make-local-variable 'pmail-message-vector)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1363 (make-local-variable 'pmail-msgref-vector)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1364 (make-local-variable 'pmail-inbox-list)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1365 ;; Provide default set of inboxes for primary mail file ~/PMAIL.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1366 (and (null pmail-inbox-list)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1367 (or (equal buffer-file-name (expand-file-name pmail-file-name))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1368 (equal buffer-file-truename
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1369 (abbreviate-file-name (file-truename pmail-file-name))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1370 (setq pmail-inbox-list
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1371 (or pmail-primary-inbox-list
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1372 (list (or (getenv "MAIL")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1373 (concat rmail-spool-directory
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1374 (user-login-name)))))))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1375 (set (make-local-variable 'tool-bar-map) pmail-tool-bar-map))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1376
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1377 ;; Set up the non-permanent locals associated with Pmail mode.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1378 (defun pmail-variables ()
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1379 ;; Turn off undo. We turn it back on in pmail-edit.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1380 (setq buffer-undo-list t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1381 ;; Don't let a local variables list in a message cause confusion.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1382 (make-local-variable 'local-enable-local-variables)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1383 (setq local-enable-local-variables nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1384 (make-local-variable 'revert-buffer-function)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1385 (setq revert-buffer-function 'pmail-revert)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1386 (make-local-variable 'font-lock-defaults)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1387 (setq font-lock-defaults
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1388 '(pmail-font-lock-keywords
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1389 t t nil nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1390 (font-lock-maximum-size . nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1391 (font-lock-fontify-buffer-function . pmail-fontify-buffer-function)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1392 (font-lock-unfontify-buffer-function . pmail-unfontify-buffer-function)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1393 (font-lock-inhibit-thing-lock . (lazy-lock-mode fast-lock-mode))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1394 (make-local-variable 'require-final-newline)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1395 (setq require-final-newline nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1396 (make-local-variable 'version-control)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1397 (setq version-control 'never)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1398 (make-local-variable 'kill-buffer-hook)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1399 (add-hook 'kill-buffer-hook 'pmail-mode-kill-summary)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1400 (make-local-variable 'file-precious-flag)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1401 (setq file-precious-flag t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1402 (make-local-variable 'desktop-save-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1403 (setq desktop-save-buffer t))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1404
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1405 ;; Handle M-x revert-buffer done in an pmail-mode buffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1406 (defun pmail-revert (arg noconfirm)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1407 (set-buffer pmail-buffer)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1408 (let* ((revert-buffer-function (default-value 'revert-buffer-function))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1409 (pmail-enable-multibyte enable-multibyte-characters)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1410 ;; See similar code in `pmail'.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1411 (coding-system-for-read (and pmail-enable-multibyte 'raw-text)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1412 ;; Call our caller again, but this time it does the default thing.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1413 (when (revert-buffer arg noconfirm)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1414 ;; If the user said "yes", and we changed something,
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1415 ;; reparse the messages.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1416 (set-buffer pmail-buffer)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1417 (pmail-mode-2)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1418 ;; Convert all or part to Babyl file if possible.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1419 (pmail-convert-file-maybe)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1420 ;; We have read the file as raw-text, so the buffer is set to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1421 ;; unibyte. Make it multibyte if necessary.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1422 (if (and pmail-enable-multibyte
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1423 (not enable-multibyte-characters))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1424 (set-buffer-multibyte t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1425 (goto-char (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1426 (pmail-set-message-counters)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1427 (pmail-show-message-maybe pmail-total-messages)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1428 (run-hooks 'pmail-mode-hook))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1429
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1430 (defun pmail-expunge-and-save ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1431 "Expunge and save PMAIL file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1432 (interactive)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1433 (set-buffer pmail-buffer)
100297
0a269d00caef (pmail-expunge): Pass new optional arg to pmail-only-expunge.
Chong Yidong <cyd@stupidchicken.com>
parents: 100290
diff changeset
1434 (pmail-expunge t)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1435 (pmail-swap-buffers-maybe)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1436 (save-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1437 (if (pmail-summary-exists)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1438 (pmail-select-summary (set-buffer-modified-p nil))
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1439 (pmail-show-message)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1440
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1441 (defun pmail-quit ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1442 "Quit out of PMAIL.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1443 Hook `pmail-quit-hook' is run after expunging."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1444 (interactive)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1445 (set-buffer pmail-buffer)
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1446 (pmail-expunge t)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1447 (pmail-swap-buffers-maybe)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1448 (save-buffer)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1449 (when (boundp 'pmail-quit-hook)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1450 (run-hooks 'pmail-quit-hook))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1451 ;; Don't switch to the summary buffer even if it was recently visible.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1452 (when pmail-summary-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1453 (replace-buffer-in-windows pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1454 (bury-buffer pmail-summary-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1455 (if pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1456 (let ((obuf pmail-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1457 (ovbuf pmail-view-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1458 (set-buffer pmail-view-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1459 (quit-window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1460 (replace-buffer-in-windows ovbuf)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1461 (replace-buffer-in-windows obuf)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1462 (bury-buffer obuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1463 (let ((obuf (current-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1464 (quit-window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1465 (replace-buffer-in-windows obuf))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1466
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1467 (defun pmail-bury ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1468 "Bury current Pmail buffer and its summary buffer."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1469 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1470 ;; This let var was called pmail-buffer, but that interfered
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1471 ;; with the buffer-local var used in summary buffers.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1472 (let ((buffer-to-bury (current-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1473 (if (pmail-summary-exists)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1474 (let (window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1475 (while (setq window (get-buffer-window pmail-summary-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1476 (quit-window nil window))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1477 (bury-buffer pmail-summary-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1478 (quit-window)))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1479
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1480 (defun pmail-duplicate-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1481 "Create a duplicated copy of the current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1482 The duplicate copy goes into the Pmail file just after the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1483 original copy."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1484 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1485 (widen)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1486 (let ((buffer-read-only nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1487 (number pmail-current-message)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1488 (string (buffer-substring (pmail-msgbeg pmail-current-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1489 (pmail-msgend pmail-current-message))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1490 (goto-char (pmail-msgend pmail-current-message))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1491 (insert string)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1492 (pmail-forget-messages)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1493 (pmail-show-message-maybe number)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1494 (message "Message duplicated")))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
1495
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1496 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1497 (defun pmail-input (filename)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1498 "Run Pmail on file FILENAME."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1499 (interactive "FRun pmail on PMAIL file: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1500 (pmail filename))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1501
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1502 ;; This used to scan subdirectories recursively, but someone pointed out
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1503 ;; that if the user wants that, person can put all the files in one dir.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1504 ;; And the recursive scan was slow. So I took it out.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1505 ;; rms, Sep 1996.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1506 (defun pmail-find-all-files (start)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1507 "Return list of file in dir START that match `pmail-secondary-file-regexp'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1508 (if (file-accessible-directory-p start)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1509 ;; Don't sort here.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1510 (let* ((case-fold-search t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1511 (files (directory-files start t pmail-secondary-file-regexp)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1512 ;; Sort here instead of in directory-files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1513 ;; because this list is usually much shorter.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1514 (sort files 'string<))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1515
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1516 (defun pmail-list-to-menu (menu-name l action &optional full-name)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1517 (let ((menu (make-sparse-keymap menu-name)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1518 (mapc
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1519 (lambda (item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1520 (let (command)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1521 (if (consp item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1522 (setq command
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1523 (pmail-list-to-menu
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1524 (car item) (cdr item) action
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1525 (if full-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1526 (concat full-name "/"
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1527 (car item))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1528 (car item)))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1529 name (car item))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1530 (setq name item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1531 (setq command
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1532 (list 'lambda () '(interactive)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1533 (list action
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1534 (expand-file-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1535 (if full-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1536 (concat full-name "/" item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1537 item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1538 pmail-secondary-file-directory)))))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1539 (define-key menu (vector (intern name))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1540 (cons name command))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1541 (reverse l))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1542 menu))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1543
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1544 ;; This command is always "disabled" when it appears in a menu.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1545 (put 'pmail-disable-menu 'menu-enable ''nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1546
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1547 (defun pmail-construct-io-menu ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1548 (let ((files (pmail-find-all-files pmail-secondary-file-directory)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1549 (if files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1550 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1551 (define-key pmail-mode-map [menu-bar classify input-menu]
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1552 (cons "Input Pmail File"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1553 (pmail-list-to-menu "Input Pmail File"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1554 files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1555 'pmail-input)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1556 (define-key pmail-mode-map [menu-bar classify output-menu]
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1557 (cons "Output Pmail File"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1558 (pmail-list-to-menu "Output Pmail File"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1559 files
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
1560 'pmail-output))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1561
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1562 (define-key pmail-mode-map [menu-bar classify input-menu]
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1563 '("Input Pmail File" . pmail-disable-menu))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1564 (define-key pmail-mode-map [menu-bar classify output-menu]
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1565 '("Output Pmail File" . pmail-disable-menu)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1566
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1567
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1568 ;;;; *** Pmail input ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1569
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1570 (declare-function rmail-spam-filter "rmail-spam-filter" (msg))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1571 (declare-function pmail-summary-goto-msg "pmailsum" (&optional n nowarn skip-pmail))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1572 (declare-function pmail-summary-mark-undeleted "pmailsum" (n))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1573 (declare-function pmail-summary-mark-deleted "pmailsum" (&optional n undel))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1574 (declare-function rfc822-addresses "rfc822" (header-text))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1575 (declare-function mail-abbrev-make-syntax-table "mailabbrev.el" ())
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1576 (declare-function mail-sendmail-delimit-header "sendmail" ())
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1577 (declare-function mail-header-end "sendmail" ())
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1578
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1579 ;; RLK feature not added in this version:
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1580 ;; argument specifies inbox file or files in various ways.
98051
c4cf87cdb0a4 (rmail-spam-filter): Autoload it.
Glenn Morris <rgm@gnu.org>
parents: 98048
diff changeset
1581
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1582 (defun pmail-get-new-mail (&optional file-name)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1583 "Move any new mail from this PMAIL file's inbox files.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1584 The inbox files can be specified with the file's Mail: option. The
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1585 variable `pmail-primary-inbox-list' specifies the inboxes for your
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1586 primary PMAIL file if it has no Mail: option. By default, this is
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1587 your /usr/spool/mail/$USER.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1588
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1589 You can also specify the file to get new mail from. In this case, the
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1590 file of new mail is not changed or deleted. Noninteractively, you can
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1591 pass the inbox file name as an argument. Interactively, a prefix
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1592 argument causes us to read a file name and use that file as the inbox.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1593
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1594 If the variable `pmail-preserve-inbox' is non-nil, new mail will
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1595 always be left in inbox files rather than deleted.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1596
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1597 This function runs `pmail-get-new-mail-hook' before saving the updated file.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1598 It returns t if it got any new messages."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1599 (interactive
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1600 (list (if current-prefix-arg
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1601 (read-file-name "Get new mail from file: "))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1602 (run-hooks 'pmail-before-get-new-mail-hook)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1603 ;; If the disk file has been changed from under us,
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1604 ;; revert to it before we get new mail.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1605 (or (verify-visited-file-modtime (current-buffer))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1606 (find-file (buffer-file-name)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1607 (set-buffer pmail-buffer)
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1608 (pmail-swap-buffers-maybe)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1609 (pmail-maybe-set-message-counters)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1610 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1611 ;; Get rid of all undo records for this buffer.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1612 (or (eq buffer-undo-list t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1613 (setq buffer-undo-list nil))
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1614 (let ((all-files (if file-name (list file-name) pmail-inbox-list))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1615 (pmail-enable-multibyte (default-value 'enable-multibyte-characters))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1616 found)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1617 (unwind-protect
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1618 (when all-files
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1619 (let ((opoint (point))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1620 ;; If buffer has not changed yet, and has not been
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1621 ;; saved yet, don't replace the old backup file now.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1622 (make-backup-files (and make-backup-files (buffer-modified-p)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1623 (buffer-read-only nil)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1624 ;; Don't make undo records while getting mail.
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1625 (buffer-undo-list t)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1626 delete-files success files file-last-names)
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1627 ;; Pull files off all-files onto files as long as there is
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1628 ;; no name conflict. A conflict happens when two inbox
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1629 ;; file names have the same last component.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1630 (while (and all-files
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1631 (not (member (file-name-nondirectory (car all-files))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1632 file-last-names)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1633 (setq files (cons (car all-files) files)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1634 file-last-names
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1635 (cons (file-name-nondirectory (car all-files)) files))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1636 (setq all-files (cdr all-files)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1637 ;; Put them back in their original order.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1638 (setq files (nreverse files))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1639 (goto-char (point-max))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1640 (skip-chars-backward " \t\n") ; just in case of brain damage
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1641 (delete-region (point) (point-max)) ; caused by require-final-newline
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1642 (setq found (pmail-get-new-mail-1 file-name files delete-files))))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1643 found)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1644 ;; Don't leave the buffer screwed up if we get a disk-full error.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1645 (or found (pmail-show-message-maybe))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1646
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1647 (defun pmail-get-new-mail-1 (file-name files delete-files)
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1648 "Return t if new messages are detected without error, nil otherwise."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1649 (save-excursion
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1650 (save-restriction
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1651 (let ((new-messages 0)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1652 (spam-filter-p (and (featurep 'rmail-spam-filter)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1653 pmail-use-spam-filter))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1654 (blurb "")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1655 result success suffix)
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1656 (narrow-to-region (point) (point))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1657 ;; Read in the contents of the inbox files, renaming them as
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1658 ;; necessary, and adding to the list of files to delete
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1659 ;; eventually.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1660 (if file-name
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1661 (pmail-insert-inbox-text files nil)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1662 (setq delete-files (pmail-insert-inbox-text files t)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1663 ;; Scan the new text and convert each message to
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1664 ;; Pmail/mbox format.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1665 (goto-char (point-min))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1666 (skip-chars-forward " \n")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1667 (narrow-to-region (point) (point-max))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1668 (unwind-protect
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1669 (setq new-messages (pmail-add-mbox-headers)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1670 success t)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1671 ;; Try to delete the garbage just inserted.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1672 (or success (delete-region (point-min) (point-max)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1673 ;; If we could not convert the file's inboxes, rename the
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1674 ;; files we tried to read so we won't over and over again.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1675 (if (and (not file-name) (not success))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1676 (let ((delfiles delete-files)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1677 (count 0))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1678 (while delfiles
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1679 (while (file-exists-p (format "PMAILOSE.%d" count))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1680 (setq count (1+ count)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1681 (rename-file (car delfiles) (format "PMAILOSE.%d" count))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1682 (setq delfiles (cdr delfiles))))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1683 ;; Determine if there are messages.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1684 (unless (zerop new-messages)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1685 ;; There are. Process them.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1686 (goto-char (point-min))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1687 (pmail-count-new-messages)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1688 (run-hooks 'pmail-get-new-mail-hook)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1689 (save-buffer))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1690 ;; Delete the old files, now that the Pmail file is saved.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1691 (while delete-files
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1692 (condition-case ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1693 ;; First, try deleting.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1694 (condition-case ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1695 (delete-file (car delete-files))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1696 (file-error
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1697 ;; If we can't delete it, truncate it.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1698 (write-region (point) (point) (car delete-files))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1699 (file-error nil))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1700 (setq delete-files (cdr delete-files)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1701 (if (zerop new-messages)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1702 (when (or file-name pmail-inbox-list)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1703 (message "(No new mail has arrived)"))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1704 ;; Generate the spam message.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1705 (setq blurb (if spam-filter-p
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1706 (pmail-get-new-mail-filter-spam new-messages)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1707 "")))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1708 (if (pmail-summary-exists)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1709 (pmail-select-summary (pmail-update-summary)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1710 (setq suffix (if (= 1 new-messages) "" "s"))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1711 (message "%d new message%s read%s" new-messages suffix blurb)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1712 (when spam-filter-p
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1713 (if rsf-beep (beep t))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1714 (sleep-for rsf-sleep-after-message))
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
1715
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1716 ;; Establish the return value and move to the first new
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1717 ;; message unless we have other unseen messages before it.
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1718 (setq result (> new-messages 0))
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1719 (when result
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1720 (pmail-show-message-maybe (pmail-first-unseen-message)))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1721 (run-hooks 'pmail-after-get-new-mail-hook)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1722 result))))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1723
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1724 (defun pmail-get-new-mail-filter-spam (new-message-count)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1725 "Process new messages for spam."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1726 (let* ((old-messages (- pmail-total-messages new-message-count))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1727 (rsf-number-of-spam 0)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1728 (rsf-scanned-message-number (1+ old-messages))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1729 ;; save deletion flags of old messages: vector starts at zero
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1730 ;; (is one longer that no of messages), therefore take 1+
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1731 ;; old-messages
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1732 (save-deleted (substring pmail-deleted-vector 0 (1+ old-messages)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1733 blurb)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1734 ;; set all messages to undeleted
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1735 (setq pmail-deleted-vector (make-string (1+ pmail-total-messages) ?\ ))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1736 (while (<= rsf-scanned-message-number pmail-total-messages)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1737 (progn
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1738 (if (not (rmail-spam-filter rsf-scanned-message-number))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1739 (progn (setq rsf-number-of-spam (1+ rsf-number-of-spam))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1740 (setq rsf-scanned-message-number (1+ rsf-scanned-message-number))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1741 (if (> rsf-number-of-spam 0)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1742 (progn
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1743 (when (pmail-expunge-confirmed)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1744 (pmail-only-expunge t))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1745 (setq pmail-deleted-vector
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1746 (concat save-deleted
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1747 (make-string (- pmail-total-messages old-messages) ?\ )))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1748 ;; Generate a return value message based on the number of spam
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1749 ;; messages found.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1750 (cond
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1751 ((zerop rsf-number-of-spam) "")
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1752 ((= 1 new-message-count) ", and appears to be spam")
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1753 ((= rsf-number-of-spam new-message-count) ", and all appear to be spam")
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1754 ((> rsf-number-of-spam 1)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1755 (format ", and %d appear to be spam" rsf-number-of-spam))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1756 (t ", and 1 appears to be spam"))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1757
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1758 (defun pmail-parse-url (file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1759 "Parse the supplied URL. Return (list MAILBOX-NAME REMOTE PASSWORD GOT-PASSWORD)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1760 WHERE MAILBOX-NAME is the name of the mailbox suitable as argument to the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1761 actual version of `movemail', REMOTE is non-nil if MAILBOX-NAME refers to
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1762 a remote mailbox, PASSWORD is the password if it should be
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1763 supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1764 is non-nil if the user has supplied the password interactively.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1765 "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1766 (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1767 ((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1768 (let (got-password supplied-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1769 (proto (match-string 1 file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1770 (user (match-string 3 file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1771 (pass (match-string 5 file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1772 (host (substring file (or (match-end 2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1773 (+ 3 (match-end 1))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1774
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1775 (if (not pass)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1776 (when pmail-remote-password-required
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1777 (setq got-password (not (pmail-have-password)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1778 (setq supplied-password (pmail-get-remote-password
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1779 (string-equal proto "imap"))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1780 ;; The password is embedded. Strip it out since movemail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1781 ;; does not really like it, in spite of the movemail spec.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1782 (setq file (concat proto "://" user "@" host)))
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
1783
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1784 (if (pmail-movemail-variant-p 'emacs)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1785 (if (string-equal proto "pop")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1786 (list (concat "po:" user ":" host)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1787 t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1788 (or pass supplied-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1789 got-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1790 (error "Emacs movemail does not support %s protocol" proto))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1791 (list file
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1792 (or (string-equal proto "pop") (string-equal proto "imap"))
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1793 (or supplied-password pass)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1794 got-password))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1795
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1796 ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1797 (let (got-password supplied-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1798 (proto "pop")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1799 (user (match-string 1 file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1800 (host (match-string 3 file)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1801
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1802 (when pmail-remote-password-required
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1803 (setq got-password (not (pmail-have-password)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1804 (setq supplied-password (pmail-get-remote-password nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1805
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1806 (list file "pop" supplied-password got-password)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1807
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1808 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1809 (list file nil nil nil))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1810
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1811 (defun pmail-insert-inbox-text (files renamep)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1812 ;; Detect a locked file now, so that we avoid moving mail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1813 ;; out of the real inbox file. (That could scare people.)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1814 (or (memq (file-locked-p buffer-file-name) '(nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1815 (error "PMAIL file %s is locked"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1816 (file-name-nondirectory buffer-file-name)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1817 (let (file tofile delete-files movemail popmail got-password password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1818 (while files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1819 ;; Handle remote mailbox names specially; don't expand as filenames
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1820 ;; in case the userid contains a directory separator.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1821 (setq file (car files))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1822 (let ((url-data (pmail-parse-url file)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1823 (setq file (nth 0 url-data))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1824 (setq popmail (nth 1 url-data))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1825 (setq password (nth 2 url-data))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1826 (setq got-password (nth 3 url-data)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1827
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1828 (if popmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1829 (setq renamep t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1830 (setq file (file-truename
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1831 (substitute-in-file-name (expand-file-name file)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1832 (setq tofile (expand-file-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1833 ;; Generate name to move to from inbox name,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1834 ;; in case of multiple inboxes that need moving.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1835 (concat ".newmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1836 (file-name-nondirectory
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1837 (if (memq system-type '(windows-nt cygwin ms-dos))
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1838 ;; cannot have colons in file name
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1839 (replace-regexp-in-string ":" "-" file)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1840 file)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1841 ;; Use the directory of this pmail file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1842 ;; because it's a nuisance to use the homedir
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1843 ;; if that is on a full disk and this pmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1844 ;; file isn't.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1845 (file-name-directory
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1846 (expand-file-name buffer-file-name))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1847 ;; Always use movemail to rename the file,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1848 ;; since there can be mailboxes in various directories.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1849 (when (not popmail)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1850 ;; On some systems, /usr/spool/mail/foo is a directory
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1851 ;; and the actual inbox is /usr/spool/mail/foo/foo.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1852 (if (file-directory-p file)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1853 (setq file (expand-file-name (user-login-name)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1854 file))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1855 (cond (popmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1856 (message "Getting mail from the remote server ..."))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1857 ((and (file-exists-p tofile)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1858 (/= 0 (nth 7 (file-attributes tofile))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1859 (message "Getting mail from %s..." tofile))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1860 ((and (file-exists-p file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1861 (/= 0 (nth 7 (file-attributes file))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1862 (message "Getting mail from %s..." file)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1863 ;; Set TOFILE if have not already done so, and
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1864 ;; rename or copy the file FILE to TOFILE if and as appropriate.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1865 (cond ((not renamep)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1866 (setq tofile file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1867 ((or (file-exists-p tofile) (and (not popmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1868 (not (file-exists-p file))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1869 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1870 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1871 (with-temp-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1872 (let ((errors (current-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1873 (buffer-disable-undo errors)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1874 (let ((args
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1875 (append
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1876 (list (or pmail-movemail-program "movemail") nil errors nil)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1877 (if pmail-preserve-inbox
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1878 (list "-p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1879 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1880 (if (pmail-movemail-variant-p 'mailutils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1881 (append (list "--emacs") pmail-movemail-flags)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1882 pmail-movemail-flags)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1883 (list file tofile)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1884 (if password (list password) nil))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1885 (apply 'call-process args))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1886 (if (not (buffer-modified-p errors))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1887 ;; No output => movemail won
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1888 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1889 (set-buffer errors)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1890 (subst-char-in-region (point-min) (point-max)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1891 ?\n ?\ )
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1892 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1893 (skip-chars-backward " \t")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1894 (delete-region (point) (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1895 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1896 (if (looking-at "movemail: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1897 (delete-region (point-min) (match-end 0)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1898 (beep t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1899 ;; If we just read the password, most likely it is
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1900 ;; wrong. Otherwise, see if there is a specific
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1901 ;; reason to think that the problem is a wrong passwd.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1902 (if (or got-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1903 (re-search-forward pmail-remote-password-error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1904 nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1905 (pmail-set-remote-password nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1906
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1907 ;; If using Mailutils, remove initial error code
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1908 ;; abbreviation
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1909 (when (pmail-movemail-variant-p 'mailutils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1910 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1911 (when (looking-at "[A-Z][A-Z0-9_]*:")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1912 (delete-region (point-min) (match-end 0))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1913
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1914 (message "movemail: %s"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1915 (buffer-substring (point-min)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1916 (point-max)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1917
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1918 (sit-for 3)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1919 nil)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1920
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1921 ;; At this point, TOFILE contains the name to read:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1922 ;; Either the alternate name (if we renamed)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1923 ;; or the actual inbox (if not renaming).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1924 (if (file-exists-p tofile)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1925 (let ((coding-system-for-read 'no-conversion)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1926 size)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1927 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1928 (setq size (nth 1 (insert-file-contents tofile)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1929 ;; Determine if a pair of newline message separators need
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1930 ;; to be added to the new collection of messages. This is
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1931 ;; the case for all new message collections added to a
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1932 ;; non-empty mail file.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1933 (unless (zerop size)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1934 (save-restriction
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1935 (let ((start (point-min)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1936 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1937 (unless (eq start (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1938 (goto-char start)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1939 (insert "\n\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1940 (setq size (+ 2 size))))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1941 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1942 (or (= (preceding-char) ?\n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1943 (zerop size)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1944 (insert ?\n))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1945 (if (not (and pmail-preserve-inbox (string= file tofile)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1946 (setq delete-files (cons tofile delete-files)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1947 (message "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1948 (setq files (cdr files)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1949 delete-files))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1950
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1951 ;; Decode the region specified by FROM and TO by CODING.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1952 ;; If CODING is nil or an invalid coding system, decode by `undecided'.
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1953 (defun pmail-decode-region (from to coding &optional destination)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1954 (if (or (not coding) (not (coding-system-p coding)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1955 (setq coding 'undecided))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1956 ;; Use -dos decoding, to remove ^M characters left from base64 or
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1957 ;; rogue qp-encoded text.
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1958 (decode-coding-region
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1959 from to (coding-system-change-eol-conversion coding 1) destination)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1960 ;; Don't reveal the fact we used -dos decoding, as users generally
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1961 ;; will not expect the PMAIL buffer to use DOS EOL format.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1962 (setq buffer-file-coding-system
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1963 (setq last-coding-system-used
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1964 (coding-system-change-eol-conversion coding 0))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1965
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1966 (defun pmail-add-mbox-headers ()
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1967 "Validate the RFC2822 format for the new messages.
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1968 Point should be at the first new message.
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1969 An error is signalled if the new messages are not RFC2822
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1970 compliant.
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1971 Unless an Rmail attribute header already exists, add it to the
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1972 new messages. Return the number of new messages."
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1973 (save-excursion
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1974 (save-restriction
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1975 (let ((count 0)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1976 (start (point))
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
1977 (value "------U-")
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1978 limit)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1979 ;; Detect an empty inbox file.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1980 (unless (= start (point-max))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1981 ;; Scan the new messages to establish a count and to insure that
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1982 ;; an attribute header is present.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1983 (while (looking-at "From ")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1984 ;; Determine if a new attribute header needs to be added to
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1985 ;; the message.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1986 (if (search-forward "\n\n" nil t)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1987 (progn
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1988 (setq count (1+ count))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1989 (narrow-to-region start (point))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1990 (unless (mail-fetch-field pmail-attribute-header)
100584
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
1991 (backward-char 1)
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
1992 (insert pmail-attribute-header ": " value "\n"))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1993 (widen))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1994 (pmail-error-bad-format))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1995 ;; Move to the next message.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1996 (if (search-forward "\n\nFrom " nil 'move)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1997 (forward-char -5))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1998 (setq start (point))))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1999 count))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2000
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2001 (defun pmail-get-header (name &optional msgnum)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2002 "Return the value of message header NAME, nil if it has none.
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2003 MSGNUM specifies the message number to get it from.
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2004 If MSGNUM is nil, use the current message."
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2005 (with-current-buffer pmail-buffer
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2006 (or msgnum (setq msgnum pmail-current-message))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2007 (when (> msgnum 0)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2008 (let (msgbeg end)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2009 (setq msgbeg (pmail-msgbeg msgnum))
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2010 ;; All access to the buffer's local variables is now finished...
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2011 (save-excursion
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2012 ;; ... so it is ok to go to a different buffer.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2013 (if (pmail-buffers-swapped-p) (set-buffer pmail-view-buffer))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2014 (save-restriction
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2015 (widen)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2016 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2017 (goto-char msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2018 (setq end (search-forward "\n\n" nil t))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2019 (if end
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2020 (progn
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2021 (narrow-to-region msgbeg end)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2022 (mail-fetch-field name))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2023 (pmail-error-bad-format msgnum)))))))))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2024
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2025 (defun pmail-set-header (name &optional msgnum value)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2026 "Store VALUE in message header NAME, nil if it has none.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2027 MSGNUM specifies the message number to operate on.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2028 If MSGNUM is nil, use the current message."
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2029 (with-current-buffer pmail-buffer
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2030 (or msgnum (setq msgnum pmail-current-message))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2031 (when (> msgnum 0)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2032 (let (msgbeg end)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2033 (setq msgbeg (pmail-msgbeg msgnum))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2034 ;; All access to the buffer's local variables is now finished...
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2035 (save-excursion
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2036 ;; ... so it is ok to go to a different buffer.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2037 (if (pmail-buffers-swapped-p) (set-buffer pmail-view-buffer))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2038 (save-restriction
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2039 (widen)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2040 (save-excursion
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2041 (goto-char msgbeg)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2042 (setq end (search-forward "\n\n" nil t))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2043 (if end (setq end (1- end)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2044 (if end
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2045 (progn
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2046 (narrow-to-region msgbeg end)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2047 (goto-char msgbeg)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2048 (if (re-search-forward (concat "^"
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2049 (regexp-quote name)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2050 ":")
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2051 nil t)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2052 (progn
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2053 (delete-region (point) (line-end-position))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2054 (insert " " value))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2055 (goto-char end)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2056 (insert name ": " value "\n")))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2057 (pmail-error-bad-format msgnum)))))))))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2058
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2059 ;;;; *** Pmail Attributes and Keywords ***
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
2060
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2061 (defun pmail-get-attr-names (&optional msg)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2062 "Return the message attributes in a comma separated string.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2063 MSG specifies the message number to get it from.
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2064 If MSG is nil, use the current message."
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2065 (let ((value (pmail-get-header pmail-attribute-header msg))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2066 result temp)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2067 (dotimes (index (length value))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2068 (setq temp (and (not (= ?- (aref value index)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2069 (nth 1 (aref pmail-attr-array index)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2070 result
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2071 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2072 ((and temp result) (format "%s, %s" result temp))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2073 (temp temp)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2074 (t result))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2075 result))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2076
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2077 (defun pmail-get-keywords (&optional msg)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2078 "Return the message keywords in a comma separated string.
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2079 MSG, if non-nil, identifies the message number to use.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2080 If nil, that means the current message."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2081 (pmail-get-header pmail-keyword-header msg))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2082
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2083 (defun pmail-get-labels (&optional msg)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2084 "Return a string with the labels (attributes and keywords) of msg MSG.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2085 It is put in comma-separated form.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2086 MSG, if non-nil, identifies the message number to use.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2087 If nil, that means the current message."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2088 (let (blurb attr-names keywords)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2089 ;; Combine the message attributes and keywords
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2090 ;; into a comma-separated list.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2091 (setq attr-names (pmail-get-attr-names pmail-current-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2092 keywords (pmail-get-keywords pmail-current-message))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2093 (if (string= keywords "")
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2094 (setq keywords nil))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2095 (cond
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2096 ((and attr-names keywords) (concat " " attr-names ", " keywords))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2097 (attr-names (concat " " attr-names))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2098 (keywords (concat " " keywords))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2099 (t ""))))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2100
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2101 (defun pmail-display-labels ()
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2102 "Update the current messages's attributes and keywords in mode line."
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2103 (let ((blurb (pmail-get-labels)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2104 (setq mode-line-process
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2105 (format " %d/%d%s"
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2106 pmail-current-message pmail-total-messages blurb))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2107 ;; If pmail-enable-mime is non-nil, we may have to update
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2108 ;; `mode-line-process' of pmail-view-buffer too.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2109 (if (and pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2110 (not (eq (current-buffer) pmail-view-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2111 (buffer-live-p pmail-view-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2112 (let ((mlp mode-line-process))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2113 (with-current-buffer pmail-view-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2114 (setq mode-line-process mlp))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2115
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2116 (defun pmail-get-attr-value (attr state)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2117 "Return the character value for ATTR.
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2118 ATTR is a (numeric) index, an offset into the mbox attribute
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2119 header value. STATE is one of nil, t, or a character value."
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2120 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2121 ((numberp state) state)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2122 ((not state) ?-)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2123 (t (nth 0 (aref pmail-attr-array attr)))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2124
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2125 (defun pmail-set-attribute (attr state &optional msgnum)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2126 "Turn an attribute of a message on or off according to STATE.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2127 STATE is either nil or the character (numeric) value associated
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2128 with the state (nil represents off and non-nil represents on).
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2129 ATTR is the index of the attribute. MSGNUM is message number to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2130 change; nil means current message."
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2131 (with-current-buffer pmail-buffer
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2132 (let ((value (pmail-get-attr-value attr state))
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2133 (inhibit-read-only t)
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2134 limit
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2135 altered
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2136 msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2137 (or msgnum (setq msgnum pmail-current-message))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2138 (when (> msgnum 0)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2139 ;; The "deleted" attribute is also stored in a special vector
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2140 ;; so update that too.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2141 (if (= attr pmail-deleted-attr-index)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2142 (pmail-set-message-deleted-p msgnum state))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2143 (setq msgbeg (pmail-msgbeg msgnum))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2144
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2145 ;; All access to the buffer's local variables is now finished...
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2146 (unwind-protect
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2147 (save-excursion
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2148 ;; ... so it is ok to go to a different buffer.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2149 (if (pmail-buffers-swapped-p) (set-buffer pmail-view-buffer))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2150 (save-restriction
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2151 (widen)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2152 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2153 ;; Determine if the current state is the desired state.
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2154 (goto-char msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2155 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2156 (setq limit (search-forward "\n\n" nil t)))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2157 (if (search-forward (concat pmail-attribute-header ": ") limit t)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2158 ;; If this message already records attributes,
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2159 ;; just change the value for this one.
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2160 (let ((missing (- (+ (point) attr) (line-end-position))))
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2161 ;; Position point at this attribute,
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2162 ;; adding attributes if necessary.
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2163 (if (> missing 0)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2164 (progn
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2165 (end-of-line)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2166 (insert-char ?- missing)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2167 (backward-char 1))
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2168 (forward-char attr))
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2169 ;; Change this attribute.
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2170 (when (/= value (char-after))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2171 (setq altered t)
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2172 (delete-char 1)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2173 (insert value)))
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2174 ;; Otherwise add a header line to record the attributes
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2175 ;; and set all but this one to no.
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2176 (let ((header-value "--------"))
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2177 (aset header-value attr value)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2178 (goto-char (if limit (- limit 1) (point-max)))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2179 (setq altered (/= value ?-))
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2180 (insert pmail-attribute-header ": " header-value "\n"))))))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2181 (if (= msgnum pmail-current-message)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2182 (pmail-display-labels))))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2183 ;; If we made a significant change in an attribute,
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2184 ;; mark pmail-buffer modified, so it will be (1) saved
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2185 ;; and (2) displayed in the mode line.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2186 (if altered
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2187 (set-buffer-modified-p t)))))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2188
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2189 (defun pmail-message-attr-p (msg attrs)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2190 "Return t if the attributes header for message MSG matches regexp ATTRS.
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2191 This function assumes the Pmail buffer is unswapped."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2192 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2193 (save-restriction
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2194 (let ((start (pmail-msgbeg msg))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2195 limit)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2196 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2197 (goto-char start)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2198 (setq limit (search-forward "\n\n" (pmail-msgend msg) t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2199 (goto-char start)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2200 (and limit
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2201 (search-forward (concat pmail-attribute-header ": ") limit t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2202 (looking-at attrs))))))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2203
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2204 (defun pmail-message-unseen-p (msgnum)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2205 "Test the unseen attribute for message MSGNUM.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2206 Return non-nil if the unseen attribute is set, nil otherwise."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2207 (pmail-message-attr-p msgnum "......U"))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2208
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2209 ;;;; *** Pmail Message Selection And Support ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2210
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2211 (defun pmail-msgend (n)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2212 (marker-position (aref pmail-message-vector (1+ n))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2213
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2214 (defun pmail-msgbeg (n)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2215 (marker-position (aref pmail-message-vector n)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2216
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2217 (defun pmail-apply-in-message (msgnum function &rest args)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2218 "Call FUNCTION on ARGS while narrowed to message MSGNUM.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2219 Point is at the start of the message.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2220 This returns what the call to FUNCTION returns.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2221 If MSGNUM is nil, use the current message."
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2222 (with-current-buffer pmail-buffer
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2223 (or msgnum (setq msgnum pmail-current-message))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2224 (when (> msgnum 0)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2225 (let (msgbeg msgend)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2226 (setq msgbeg (pmail-msgbeg msgnum))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2227 (setq msgend (pmail-msgend msgnum))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2228 ;; All access to the pmail-buffer's local variables is now finished...
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2229 (save-excursion
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2230 ;; ... so it is ok to go to a different buffer.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2231 (if (pmail-buffers-swapped-p) (set-buffer pmail-view-buffer))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2232 (save-restriction
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2233 (widen)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2234 (save-excursion
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2235 (goto-char msgbeg)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2236 (save-restriction
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2237 (narrow-to-region msgbeg msgend)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2238 (apply function args)))))))))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2239
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2240 (defun pmail-widen-to-current-msgbeg (function)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2241 "Call FUNCTION with point at start of internal data of current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2242 Assumes that bounds were previously narrowed to display the message in Pmail.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2243 The bounds are widened enough to move point where desired, then narrowed
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2244 again afterward.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2245
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2246 FUNCTION may not change the visible text of the message, but it may
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2247 change the invisible header text."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2248 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2249 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2250 (progn
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2251 (narrow-to-region (pmail-msgbeg pmail-current-message)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2252 (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2253 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2254 (funcall function))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2255 ;; Note: we don't use save-restriction because that does not work right
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2256 ;; if changes are made outside the saved restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2257 ;; before that restriction is restored.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2258 (narrow-to-region (pmail-msgbeg pmail-current-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2259 (pmail-msgend pmail-current-message)))))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2260
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2261 ;; Manage the message vectors and counters.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2262
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2263 (defun pmail-forget-messages ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2264 (unwind-protect
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2265 (if (vectorp pmail-message-vector)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2266 (let* ((i 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2267 (v pmail-message-vector)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2268 (n (length v)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2269 (while (< i n)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2270 (move-marker (aref v i) nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2271 (setq i (1+ i)))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2272 (setq pmail-message-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2273 (setq pmail-msgref-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2274 (setq pmail-deleted-vector nil)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2275
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2276 (defun pmail-maybe-set-message-counters ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2277 (if (not (and pmail-deleted-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2278 pmail-message-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2279 pmail-current-message
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2280 pmail-total-messages))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2281 (pmail-set-message-counters)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2282
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2283 (defun pmail-count-new-messages (&optional nomsg)
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
2284 "Count the number of new messages.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
2285 The buffer should be narrowed to include only the new messages.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2286 Output a helpful message unless NOMSG is non-nil."
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2287 (let* ((case-fold-search nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2288 (total-messages 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2289 (messages-head nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2290 (deleted-head nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2291 (or nomsg (message "Counting new messages..."))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2292 (goto-char (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2293 ;; Put at the end of messages-head
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2294 ;; the entry for message N+1, which marks
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2295 ;; the end of message N. (N = number of messages).
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2296 (setq messages-head (list (point-marker)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2297 (pmail-set-message-counters-counter (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2298 (setq pmail-current-message (1+ pmail-total-messages))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2299 (setq pmail-total-messages
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2300 (+ pmail-total-messages total-messages))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2301 (setq pmail-message-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2302 (vconcat pmail-message-vector (cdr messages-head)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2303 (aset pmail-message-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2304 pmail-current-message (car messages-head))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2305 (setq pmail-deleted-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2306 (concat pmail-deleted-vector deleted-head))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2307 (setq pmail-summary-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2308 (vconcat pmail-summary-vector (make-vector total-messages nil)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2309 (setq pmail-msgref-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2310 (vconcat pmail-msgref-vector (make-vector total-messages nil)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2311 ;; Fill in the new elements of pmail-msgref-vector.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2312 (let ((i (1+ (- pmail-total-messages total-messages))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2313 (while (<= i pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2314 (aset pmail-msgref-vector i (list i))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2315 (setq i (1+ i))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2316 (goto-char (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2317 (or nomsg (message "Counting new messages...done (%d)" total-messages))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2318
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2319 (defun pmail-set-message-counters ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2320 (pmail-forget-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2321 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2322 (save-restriction
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2323 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2324 (let* ((point-save (point))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2325 (total-messages 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2326 (messages-after-point)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2327 (case-fold-search nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2328 (messages-head nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2329 (deleted-head nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2330 ;; Determine how many messages follow point.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2331 (message "Counting messages...")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2332 (goto-char (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2333 ;; Put at the end of messages-head
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2334 ;; the entry for message N+1, which marks
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2335 ;; the end of message N. (N = number of messages).
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2336 (setq messages-head (list (point-marker)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2337 (pmail-set-message-counters-counter (min (point) point-save))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2338 (setq messages-after-point total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2339
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2340 ;; Determine how many precede point.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2341 (pmail-set-message-counters-counter)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2342 (setq pmail-total-messages total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2343 (setq pmail-current-message
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2344 (min total-messages
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2345 (max 1 (- total-messages messages-after-point))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2346 (setq pmail-message-vector
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2347 (apply 'vector (cons (point-min-marker) messages-head))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2348 pmail-deleted-vector (concat "0" deleted-head)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2349 pmail-summary-vector (make-vector pmail-total-messages nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2350 pmail-msgref-vector (make-vector (1+ pmail-total-messages) nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2351 (let ((i 0))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2352 (while (<= i pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2353 (aset pmail-msgref-vector i (list i))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2354 (setq i (1+ i))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2355 (message "Counting messages...done")))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2356
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2357
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2358 (defsubst pmail-collect-deleted (message-end)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2359 "Collect the message deletion flags for each message.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2360 MESSAGE-END is the buffer position corresponding to the end of
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2361 the message. Point is at the beginning of the message."
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2362 ;; NOTE: This piece of code will be executed on a per-message basis.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2363 ;; In the face of thousands of messages, it has to be as fast as
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2364 ;; possible, hence some brute force constant use is employed in
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2365 ;; addition to inlining.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2366 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2367 (setq deleted-head
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2368 (cons (if (and (search-forward (concat pmail-attribute-header ": ") message-end t)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2369 (looking-at "?D"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2370 ?D
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2371 ?\ ) deleted-head))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2372
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2373 (defun pmail-set-message-counters-counter (&optional stop)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2374 ;; Collect the start position for each message into 'messages-head.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2375 (let ((start (point)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2376 (while (search-backward "\n\nFrom " stop t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2377 (forward-char 2)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2378 (pmail-collect-deleted start)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2379 (setq messages-head (cons (point-marker) messages-head)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2380 total-messages (1+ total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2381 start (point))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
2382 ;; Show progress after every 20 messages or so.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2383 (if (zerop (% total-messages 20))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2384 (message "Counting messages...%d" total-messages)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2385 ;; Handle the first message, maybe.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2386 (if stop
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2387 (goto-char stop)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2388 (goto-char (point-min)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2389 (unless (not (looking-at "From "))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2390 (pmail-collect-deleted start)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2391 (setq messages-head (cons (point-marker) messages-head)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2392 total-messages (1+ total-messages)))))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2393
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2394 ;; Display a message.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2395
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2396 ;;;; *** Pmail Message Formatting and Header Manipulation ***
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2397
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2398 (defun pmail-toggle-header (&optional arg)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2399 "Show original message header if pruned header currently shown, or vice versa.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2400 With argument ARG, show the message header pruned if ARG is greater than zero;
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2401 otherwise, show it in full."
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2402 (interactive "P")
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2403 (setq pmail-header-style
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2404 (cond
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2405 ((and (numberp arg) (> arg 0)) 'normal)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2406 ((eq pmail-header-style 'full) 'normal)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2407 (t 'full)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2408 (pmail-show-message-maybe))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2409
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2410 (defun pmail-beginning-of-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2411 "Show current message starting from the beginning."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2412 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2413 (let ((pmail-show-message-hook
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2414 (list (function (lambda ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2415 (goto-char (point-min)))))))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2416 (pmail-show-message-maybe pmail-current-message)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2417
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2418 (defun pmail-end-of-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2419 "Show bottom of current message."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2420 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2421 (let ((pmail-show-message-hook
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2422 (list (function (lambda ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2423 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2424 (recenter (1- (window-height))))))))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2425 (pmail-show-message-maybe pmail-current-message)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2426
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2427 (defun pmail-unknown-mail-followup-to ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2428 "Handle a \"Mail-Followup-To\" header field with an unknown mailing list.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2429 Ask the user whether to add that list name to `mail-mailing-lists'."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2430 (save-restriction
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2431 (let ((mail-followup-to (mail-fetch-field "mail-followup-to" nil t)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2432 (when mail-followup-to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2433 (let ((addresses
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2434 (split-string
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2435 (mail-strip-quoted-names mail-followup-to)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2436 ",[[:space:]]+" t)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2437 (dolist (addr addresses)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2438 (when (and (not (member addr mail-mailing-lists))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2439 (not
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2440 ;; taken from pmailsum.el
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2441 (string-match
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2442 (or pmail-user-mail-address-regexp
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2443 (concat "^\\("
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2444 (regexp-quote (user-login-name))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2445 "\\($\\|@\\)\\|"
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2446 (regexp-quote
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2447 (or user-mail-address
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2448 (concat (user-login-name) "@"
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2449 (or mail-host-address
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2450 (system-name)))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2451 "\\>\\)"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2452 addr))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2453 (y-or-n-p
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2454 (format "Add `%s' to `mail-mailing-lists'? "
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2455 addr)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2456 (customize-save-variable 'mail-mailing-lists
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2457 (cons addr mail-mailing-lists)))))))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2458
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2459 (defun pmail-widen ()
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2460 "Display the entire mailbox file."
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2461 (interactive)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2462 (pmail-swap-buffers-maybe)
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2463 (widen))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2464
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2465 (defun pmail-show-message-maybe (&optional n no-summary)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2466 "Show message number N (prefix argument), counting from start of file.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2467 If summary buffer is currently displayed, update current message there also."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2468 (interactive "p")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2469 (or (eq major-mode 'pmail-mode)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2470 (switch-to-buffer pmail-buffer))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2471 (pmail-swap-buffers-maybe)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2472 (pmail-maybe-set-message-counters)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2473 (widen)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
2474 (let ((msgnum (or n pmail-current-message))
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
2475 blurb)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2476 (if (zerop pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2477 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2478 (with-current-buffer pmail-view-buffer
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2479 (erase-buffer)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2480 (setq blurb "No mail.")))
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
2481 (setq blurb (pmail-show-message msgnum))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2482 (when mail-mailing-lists
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2483 (pmail-unknown-mail-followup-to))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2484 (if transient-mark-mode (deactivate-mark))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2485 ;; If there is a summary buffer, try to move to this message
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2486 ;; in that buffer. But don't complain if this message
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2487 ;; is not mentioned in the summary.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2488 ;; Don't do this at all if we were called on behalf
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2489 ;; of cursor motion in the summary buffer.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2490 (and (pmail-summary-exists) (not no-summary)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2491 (let ((curr-msg pmail-current-message))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2492 (pmail-select-summary
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2493 (pmail-summary-goto-msg curr-msg t t))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2494 (with-current-buffer pmail-buffer
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2495 (pmail-auto-file)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2496 (if blurb
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2497 (message blurb))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2498
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2499 (defun pmail-is-text-p ()
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2500 "Return t if the region contains a text message, nil otherwise."
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2501 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2502 (let ((text-regexp "\\(text\\|message\\)/")
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2503 (content-type-header (mail-fetch-field "content-type")))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2504 ;; The message is text if either there is no content type header
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2505 ;; (a default of "text/plain; charset=US-ASCII" is assumed) or
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2506 ;; the base content type is either text or message.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2507 (or (not content-type-header)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2508 (string-match text-regexp content-type-header)))))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2509
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2510 (defun pmail-show-message (&optional msg)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2511 "Show message MSG using a special view buffer.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2512 Return text to display in the minibuffer if MSG is out of
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2513 range (displaying a reasonable choice as well), nil otherwise.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2514 The current mail message becomes the message displayed."
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2515 (let ((mbox-buf pmail-buffer)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2516 (view-buf pmail-view-buffer)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2517 blurb beg end body-start coding-system character-coding is-text-message)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2518 (if (not msg)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2519 (setq msg pmail-current-message))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2520 (cond ((<= msg 0)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2521 (setq msg 1
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2522 pmail-current-message 1
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2523 blurb "No previous message"))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2524 ((> msg pmail-total-messages)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2525 (setq msg pmail-total-messages
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2526 pmail-current-message pmail-total-messages
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2527 blurb "No following message"))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2528 (t (setq pmail-current-message msg)))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2529 (with-current-buffer pmail-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2530 ;; Mark the message as seen, bracket the message in the mail
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2531 ;; buffer and determine the coding system the transfer encoding.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2532 (pmail-set-attribute pmail-unseen-attr-index nil)
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2533 (pmail-swap-buffers-maybe)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2534 (setq beg (pmail-msgbeg msg)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2535 end (pmail-msgend msg))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2536 (narrow-to-region beg end)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2537 (goto-char beg)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2538 (setq body-start (search-forward "\n\n" nil t))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2539 (narrow-to-region beg (point))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2540 (goto-char beg)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2541 (setq character-coding (mail-fetch-field "content-transfer-encoding")
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2542 is-text-message (pmail-is-text-p)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2543 coding-system (pmail-get-coding-system))
100756
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2544 (if character-coding
d9d23e4f6b00 (pmail-forwarded-attr-index): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100657
diff changeset
2545 (setq character-coding (downcase character-coding)))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2546 (narrow-to-region beg end)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2547 ;; Decode the message body into an empty view buffer using a
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2548 ;; unibyte temporary buffer where the character decoding takes
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2549 ;; place.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2550 (with-current-buffer pmail-view-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2551 (erase-buffer))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2552 (if (null character-coding)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2553 ;; Do it directly since that is fast.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2554 (pmail-decode-region body-start end coding-system view-buf)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2555 ;; Can this be done directly, skipping the temp buffer?
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2556 (with-temp-buffer
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2557 (set-buffer-multibyte nil)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2558 (insert-buffer-substring mbox-buf body-start end)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2559 (cond
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2560 ((string= character-coding "quoted-printable")
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2561 (mail-unquote-printable-region (point-min) (point-max)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2562 ((and (string= character-coding "base64") is-text-message)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2563 (base64-decode-region (point-min) (point-max)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2564 ((eq character-coding 'uuencode)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2565 (error "Not supported yet"))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2566 (t))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2567 (pmail-decode-region (point-min) (point-max)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2568 coding-system view-buf)))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2569 ;; Copy the headers to the front of the message view buffer.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2570 (with-current-buffer pmail-view-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2571 (goto-char (point-min)))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2572 (pmail-copy-headers beg end)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2573 ;; Add the separator (blank line) between headers and body;
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2574 ;; highlight the message, activate any URL like text and add
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2575 ;; special highlighting for and quoted material.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2576 (with-current-buffer pmail-view-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2577 (insert "\n")
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2578 (goto-char (point-min))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2579 (pmail-highlight-headers)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2580 ;(pmail-activate-urls)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2581 ;(pmail-process-quoted-material)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2582 )
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2583 ;; Update the mode-line with message status information and swap
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2584 ;; the view buffer/mail buffer contents.
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2585 (pmail-display-labels)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2586 (let ((modp (buffer-modified-p)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2587 (buffer-swap-text pmail-view-buffer)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2588 (set-buffer-modified-p modp))
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2589 (setq buffer-swapped-with pmail-view-buffer)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2590 (run-hooks 'pmail-show-message-hook))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2591 blurb))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2592
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2593 (defun pmail-copy-headers (beg end &optional ignored-headers)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2594 "Copy displayed header fields to the message viewer buffer.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2595 BEG and END marks the start and end positions of the message in
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2596 the mbox buffer. If the optional argument IGNORED-HEADERS is
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2597 non-nil, ignore all header fields whose names match that regexp.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2598 Otherwise, if `rmail-displayed-headers' is non-nil, copy only
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2599 those header fields whose names match that regexp. Otherwise,
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2600 copy all header fields whose names do not match
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2601 `rmail-ignored-headers' (unless they also match
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2602 `rmail-nonignored-headers')."
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2603 (let ((header-start-regexp "\n[^ \t]")
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2604 lim)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2605 (with-current-buffer pmail-buffer
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2606 (when (search-forward "\n\n" nil t)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2607 (forward-char -1)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2608 (save-restriction
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2609 ;; Put point right after the From header line.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2610 (narrow-to-region beg (point))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2611 (goto-char (point-min))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2612 (unless (re-search-forward header-start-regexp nil t)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2613 (pmail-error-bad-format))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2614 (forward-char -1)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2615 (cond
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2616 ;; Handle the case where all headers should be copied.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2617 ((eq pmail-header-style 'full)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2618 (prepend-to-buffer pmail-view-buffer beg (point-max)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2619 ;; Handle the case where the headers matching the diplayed
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2620 ;; headers regexp should be copied.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2621 ((and pmail-displayed-headers (null ignored-headers))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2622 (while (not (eobp))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2623 (save-excursion
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2624 (setq lim (if (re-search-forward header-start-regexp nil t)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2625 (1+ (match-beginning 0))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2626 (point-max))))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2627 (when (looking-at pmail-displayed-headers)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2628 (append-to-buffer pmail-view-buffer (point) lim))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2629 (goto-char lim)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2630 ;; Handle the ignored headers.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2631 ((or ignored-headers (setq ignored-headers pmail-ignored-headers))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2632 (while (and ignored-headers (not (eobp)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2633 (save-excursion
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2634 (setq lim (if (re-search-forward header-start-regexp nil t)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2635 (1+ (match-beginning 0))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2636 (point-max))))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2637 (if (and (looking-at ignored-headers)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2638 (not (looking-at pmail-nonignored-headers)))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2639 (goto-char lim)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2640 (append-to-buffer pmail-view-buffer (point) lim)
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2641 (goto-char lim))))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2642 (t (error "No headers selected for display!"))))))))
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2643
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2644 ;; Find all occurrences of certain fields, and highlight them.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2645 (defun pmail-highlight-headers ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2646 ;; Do this only if the system supports faces.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2647 (if (and (fboundp 'internal-find-face)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2648 pmail-highlighted-headers)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2649 (save-excursion
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2650 (search-forward "\n\n" nil 'move)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2651 (save-restriction
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2652 (narrow-to-region (point-min) (point))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2653 (let ((case-fold-search t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2654 (inhibit-read-only t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2655 ;; Highlight with boldface if that is available.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2656 ;; Otherwise use the `highlight' face.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2657 (face (or 'pmail-highlight
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2658 (if (face-differs-from-default-p 'bold)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2659 'bold 'highlight)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2660 ;; List of overlays to reuse.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2661 (overlays pmail-overlay-list))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2662 (goto-char (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2663 (while (re-search-forward pmail-highlighted-headers nil t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2664 (skip-chars-forward " \t")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2665 (let ((beg (point))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2666 overlay)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2667 (while (progn (forward-line 1)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2668 (looking-at "[ \t]")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2669 ;; Back up over newline, then trailing spaces or tabs
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2670 (forward-char -1)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2671 (while (member (preceding-char) '(? ?\t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2672 (forward-char -1))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2673 (if overlays
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2674 ;; Reuse an overlay we already have.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2675 (progn
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2676 (setq overlay (car overlays)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2677 overlays (cdr overlays))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2678 (overlay-put overlay 'face face)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2679 (move-overlay overlay beg (point)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2680 ;; Make a new overlay and add it to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2681 ;; pmail-overlay-list.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2682 (setq overlay (make-overlay beg (point)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2683 (overlay-put overlay 'face face)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2684 (setq pmail-overlay-list
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2685 (cons overlay pmail-overlay-list))))))))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2686
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2687 (defun pmail-auto-file ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2688 "Automatically move a message into a sub-folder based on criteria.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2689 Called when a new message is displayed."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2690 (if (or (zerop pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2691 (pmail-message-attr-p pmail-current-message "...F...")
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2692 (not (string= (buffer-file-name)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2693 (expand-file-name pmail-file-name))))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2694 ;; Do nothing if the message has already been filed or if there
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2695 ;; are no messages.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2696 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2697 ;; Find out some basics (common fields)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2698 (let ((from (mail-fetch-field "from"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2699 (subj (mail-fetch-field "subject"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2700 (to (concat (mail-fetch-field "to") "," (mail-fetch-field "cc")))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2701 (d pmail-automatic-folder-directives)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2702 (directive-loop nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2703 (folder nil))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2704 (while d
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2705 (setq folder (car (car d))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2706 directive-loop (cdr (car d)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2707 (while (and (car directive-loop)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2708 (let ((f (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2709 ((string= (car directive-loop) "from") from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2710 ((string= (car directive-loop) "to") to)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2711 ((string= (car directive-loop) "subject") subj)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2712 (t (mail-fetch-field (car directive-loop))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2713 (and f (string-match (car (cdr directive-loop)) f))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2714 (setq directive-loop (cdr (cdr directive-loop))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2715 ;; If there are no directives left, then it was a complete match.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2716 (if (null directive-loop)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2717 (if (null folder)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2718 (pmail-delete-forward)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2719 (if (string= "/dev/null" folder)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2720 (pmail-delete-message)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2721 (pmail-output folder 1 t)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2722 (setq d nil))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2723 (setq d (cdr d))))))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2724
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2725 ;; Simple message motion commands.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2726
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2727 (defun pmail-next-message (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2728 "Show following message whether deleted or not.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2729 With prefix arg N, moves forward N messages, or backward if N is negative."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2730 (interactive "p")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2731 (set-buffer pmail-buffer)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2732 (pmail-maybe-set-message-counters)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2733 (pmail-show-message-maybe (+ pmail-current-message n)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2734
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2735 (defun pmail-previous-message (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2736 "Show previous message whether deleted or not.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2737 With prefix arg N, moves backward N messages, or forward if N is negative."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2738 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2739 (pmail-next-message (- n)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2740
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2741 (defun pmail-next-undeleted-message (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2742 "Show following non-deleted message.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2743 With prefix arg N, moves forward N non-deleted messages,
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2744 or backward if N is negative.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2745
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2746 Returns t if a new message is being shown, nil otherwise."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2747 (interactive "p")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2748 (set-buffer pmail-buffer)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2749 (pmail-maybe-set-message-counters)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2750 (let ((lastwin pmail-current-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2751 (current pmail-current-message))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2752 (while (and (> n 0) (< current pmail-total-messages))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2753 (setq current (1+ current))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2754 (if (not (pmail-message-deleted-p current))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2755 (setq lastwin current n (1- n))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2756 (while (and (< n 0) (> current 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2757 (setq current (1- current))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2758 (if (not (pmail-message-deleted-p current))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2759 (setq lastwin current n (1+ n))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2760 (if (/= lastwin pmail-current-message)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2761 (progn (pmail-show-message-maybe lastwin)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2762 t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2763 (if (< n 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2764 (message "No previous nondeleted message"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2765 (if (> n 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2766 (message "No following nondeleted message"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2767 nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2768
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2769 (defun pmail-previous-undeleted-message (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2770 "Show previous non-deleted message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2771 With prefix argument N, moves backward N non-deleted messages,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2772 or forward if N is negative."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2773 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2774 (pmail-next-undeleted-message (- n)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2775
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2776 (defun pmail-first-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2777 "Show first message in file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2778 (interactive)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2779 (pmail-maybe-set-message-counters)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2780 (pmail-show-message-maybe (< 1 pmail-total-messages)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2781
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2782 (defun pmail-last-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2783 "Show last message in file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2784 (interactive)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2785 (pmail-maybe-set-message-counters)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2786 (pmail-show-message-maybe pmail-total-messages))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2787
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2788 (defun pmail-what-message ()
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2789 "For debugging Pmail: find the message number that point is in."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2790 (let ((where (point))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2791 (low 1)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2792 (high pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2793 (mid (/ pmail-total-messages 2)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2794 (while (> (- high low) 1)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2795 (if (>= where (pmail-msgbeg mid))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2796 (setq low mid)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2797 (setq high mid))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2798 (setq mid (+ low (/ (- high low) 2))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2799 (if (>= where (pmail-msgbeg high)) high low)))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2800
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2801 ;; Searching in Pmail file.
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2802
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2803 (defun pmail-search-message (msg regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2804 "Return non-nil, if for message number MSG, regexp REGEXP matches."
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2805 ;; This is adequate because its only caller, pmail-search,
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2806 ;; unswaps the buffers.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2807 (goto-char (pmail-msgbeg msg))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2808 (if pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2809 (funcall pmail-search-mime-message-function msg regexp)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2810 (re-search-forward regexp (pmail-msgend msg) t)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2811
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2812 (defvar pmail-search-last-regexp nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2813 (defun pmail-search (regexp &optional n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2814 "Show message containing next match for REGEXP (but not the current msg).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2815 Prefix argument gives repeat count; negative argument means search
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2816 backwards (through earlier messages).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2817 Interactively, empty argument means use same regexp used last time."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2818 (interactive
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2819 (let* ((reversep (< (prefix-numeric-value current-prefix-arg) 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2820 (prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2821 (concat (if reversep "Reverse " "") "Pmail search (regexp"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2822 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2823 (setq prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2824 (concat prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2825 (if pmail-search-last-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2826 (concat ", default "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2827 pmail-search-last-regexp "): ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2828 "): ")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2829 (setq regexp (read-string prompt))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2830 (cond ((not (equal regexp ""))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2831 (setq pmail-search-last-regexp regexp))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2832 ((not pmail-search-last-regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2833 (error "No previous Pmail search string")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2834 (list pmail-search-last-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2835 (prefix-numeric-value current-prefix-arg))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2836 (or n (setq n 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2837 (message "%sPmail search for %s..."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2838 (if (< n 0) "Reverse " "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2839 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2840 (set-buffer pmail-buffer)
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2841 (let ((orig-message pmail-current-message)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2842 (msg pmail-current-message)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2843 (reversep (< n 0))
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2844 (opoint (if (pmail-buffers-swapped-p) (point)))
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2845 found)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2846 (pmail-swap-buffers-maybe)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2847 (pmail-maybe-set-message-counters)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2848 (widen)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2849 (unwind-protect
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2850 (while (/= n 0)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2851 ;; Check messages one by one, advancing message number up or
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2852 ;; down but searching forward through each message.
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2853 (if reversep
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2854 (while (and (null found) (> msg 1))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2855 (setq msg (1- msg)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2856 found (pmail-search-message msg regexp)))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2857 (while (and (null found) (< msg pmail-total-messages))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2858 (setq msg (1+ msg)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2859 found (pmail-search-message msg regexp))))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2860 (setq n (+ n (if reversep 1 -1))))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2861 (if found
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2862 (progn
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2863 (pmail-show-message-maybe msg)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2864 ;; Search forward (if this is a normal search) or backward
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2865 ;; (if this is a reverse search) through this message to
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2866 ;; position point. This search may fail because REGEXP
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2867 ;; was found in the hidden portion of this message. In
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2868 ;; that case, move point to the beginning of visible
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2869 ;; portion.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2870 (if reversep
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2871 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2872 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2873 (re-search-backward regexp nil 'move))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2874 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2875 (re-search-forward regexp nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2876 (message "%sPmail search for %s...done"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2877 (if reversep "Reverse " "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2878 regexp))
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2879 (pmail-show-message-maybe orig-message)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2880 (if opoint (goto-char opoint))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2881 (ding)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2882 (message "Search failed: %s" regexp)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2883
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2884 (defun pmail-search-backwards (regexp &optional n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2885 "Show message containing previous match for REGEXP.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2886 Prefix argument gives repeat count; negative argument means search
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2887 forward (through later messages).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2888 Interactively, empty argument means use same regexp used last time."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2889 (interactive
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2890 (let* ((reversep (>= (prefix-numeric-value current-prefix-arg) 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2891 (prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2892 (concat (if reversep "Reverse " "") "Pmail search (regexp"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2893 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2894 (setq prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2895 (concat prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2896 (if pmail-search-last-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2897 (concat ", default "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2898 pmail-search-last-regexp "): ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2899 "): ")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2900 (setq regexp (read-string prompt))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2901 (cond ((not (equal regexp ""))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2902 (setq pmail-search-last-regexp regexp))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2903 ((not pmail-search-last-regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2904 (error "No previous Pmail search string")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2905 (list pmail-search-last-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2906 (prefix-numeric-value current-prefix-arg))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2907 (pmail-search regexp (- (or n 1))))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2908
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2909 ;; Scan for attributes, and compare subjects.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2910
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2911 (defun pmail-first-unseen-message ()
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
2912 "Return message number of first message which has `unseen' attribute."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2913 (pmail-maybe-set-message-counters)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2914 (let ((current 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2915 found)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2916 (save-restriction
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2917 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2918 (while (and (not found) (<= current pmail-total-messages))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2919 (if (pmail-message-attr-p current "......U")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2920 (setq found current))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2921 (setq current (1+ current))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2922 found))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2923
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2924 (defun pmail-simplified-subject (&optional msgnum)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2925 "Return the simplified subject of message MSGNUM (or current message).
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2926 Simplifying the subject means stripping leading and trailing whitespace,
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2927 and typical reply prefixes such as Re:."
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2928 (let ((subject (or (pmail-get-header "Subject" msgnum) "")))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2929 (if (string-match "\\`[ \t]+" subject)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2930 (setq subject (substring subject (match-end 0))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2931 (if (string-match pmail-reply-regexp subject)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2932 (setq subject (substring subject (match-end 0))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2933 (if (string-match "[ \t]+\\'" subject)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2934 (setq subject (substring subject 0 (match-beginning 0))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2935 subject))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2936
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2937 (defun pmail-simplified-subject-regexp ()
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2938 "Return a regular expression matching the current simplified subject.
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2939 The idea is to match it against simplified subjects of other messages."
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2940 (let ((subject (pmail-simplified-subject)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2941 (setq subject (regexp-quote subject))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2942 ;; Hide commas so it will work ok if parsed as a comma-separated list
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2943 ;; of regexps.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2944 (setq subject
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2945 (replace-regexp-in-string "," "\054" subject t t))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2946 (concat "\\`" subject "\\'")))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2947
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2948 (defun pmail-next-same-subject (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2949 "Go to the next mail message having the same subject header.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2950 With prefix argument N, do this N times.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2951 If N is negative, go backwards instead."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2952 (interactive "p")
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2953 (let ((subject (pmail-simplified-subject))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2954 (forward (> n 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2955 (i pmail-current-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2956 found)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2957 (while (and (/= n 0)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2958 (if forward
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2959 (< i pmail-total-messages)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2960 (> i 1)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2961 (let (done)
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2962 (while (and (not done)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2963 (if forward
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2964 (< i pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2965 (> i 1)))
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2966 (setq i (if forward (1+ i) (1- i)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2967 (setq done (string-equal subject (pmail-simplified-subject i))))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2968 (if done (setq found i)))
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
2969 (setq n (if forward (1- n) (1+ n))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2970 (if found
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2971 (pmail-show-message-maybe found)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2972 (error "No %s message with same subject"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2973 (if forward "following" "previous")))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2974
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2975 (defun pmail-previous-same-subject (n)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2976 "Go to the previous mail message having the same subject header.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2977 With prefix argument N, do this N times.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2978 If N is negative, go forwards instead."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2979 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2980 (pmail-next-same-subject (- n)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2981
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2982 ;;;; *** Pmail Message Deletion Commands ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2983
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2984 (defun pmail-message-deleted-p (n)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2985 (= (aref pmail-deleted-vector n) ?D))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2986
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2987 (defun pmail-set-message-deleted-p (n state)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2988 (aset pmail-deleted-vector n (if state ?D ?\ )))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2989
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2990 (defun pmail-delete-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2991 "Delete this message and stay on it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2992 (interactive)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2993 (pmail-set-attribute pmail-deleted-attr-index t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2994 (run-hooks 'pmail-delete-message-hook))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2995
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2996 (defun pmail-undelete-previous-message ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2997 "Back up to deleted message, select it, and undelete it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2998 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2999 (set-buffer pmail-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3000 (let ((msg pmail-current-message))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3001 (while (and (> msg 0)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3002 (not (pmail-message-deleted-p msg)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3003 (setq msg (1- msg)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3004 (if (= msg 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3005 (error "No previous deleted message")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3006 (if (/= msg pmail-current-message)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
3007 (pmail-show-message-maybe msg))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3008 (pmail-set-attribute pmail-deleted-attr-index nil)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3009 (if (pmail-summary-exists)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3010 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3011 (set-buffer pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3012 (pmail-summary-mark-undeleted msg)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3013 (pmail-maybe-display-summary))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3014
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3015 (defun pmail-delete-forward (&optional backward)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3016 "Delete this message and move to next nondeleted one.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3017 Deleted messages stay in the file until the \\[pmail-expunge] command is given.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3018 With prefix argument, delete and move backward.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3019
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3020 Returns t if a new message is displayed after the delete, or nil otherwise."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3021 (interactive "P")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3022 (pmail-set-attribute pmail-deleted-attr-index t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3023 (run-hooks 'pmail-delete-message-hook)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3024 (let ((del-msg pmail-current-message))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3025 (if (pmail-summary-exists)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3026 (pmail-select-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3027 (pmail-summary-mark-deleted del-msg)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3028 (prog1 (pmail-next-undeleted-message (if backward -1 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3029 (pmail-maybe-display-summary))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3030
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3031 (defun pmail-delete-backward ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3032 "Delete this message and move to previous nondeleted one.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3033 Deleted messages stay in the file until the \\[pmail-expunge] command is given."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3034 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3035 (pmail-delete-forward t))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
3036
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
3037 ;; Expunging.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3038
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3039 ;; Compute the message number a given message would have after expunging.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3040 ;; The present number of the message is OLDNUM.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3041 ;; DELETEDVEC should be pmail-deleted-vector.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3042 ;; The value is nil for a message that would be deleted.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3043 (defun pmail-msg-number-after-expunge (deletedvec oldnum)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3044 (if (or (null oldnum) (= (aref deletedvec oldnum) ?D))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3045 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3046 (let ((i 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3047 (newnum 0))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3048 (while (< i oldnum)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3049 (if (/= (aref deletedvec i) ?D)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3050 (setq newnum (1+ newnum)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3051 (setq i (1+ i)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3052 newnum)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3053
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3054 (defun pmail-expunge-confirmed ()
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3055 "Return t if deleted message should be expunged. If necessary, ask the user.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3056 See also user-option `pmail-confirm-expunge'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3057 (set-buffer pmail-buffer)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3058 (or (not (stringp pmail-deleted-vector))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3059 (not (string-match "D" pmail-deleted-vector))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3060 (null pmail-confirm-expunge)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3061 (funcall pmail-confirm-expunge
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3062 "Erase deleted messages from Pmail file? ")))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3063
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3064 (defun pmail-only-expunge (&optional dont-show)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3065 "Actually erase all deleted messages in the file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3066 (interactive)
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3067 (pmail-swap-buffers-maybe)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3068 (set-buffer pmail-buffer)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3069 (message "Expunging deleted messages...")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3070 ;; Discard all undo records for this buffer.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3071 (or (eq buffer-undo-list t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3072 (setq buffer-undo-list nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3073 (pmail-maybe-set-message-counters)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3074 (let* ((omax (- (buffer-size) (point-max)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3075 (omin (- (buffer-size) (point-min)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3076 (opoint (if (and (> pmail-current-message 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3077 (pmail-message-deleted-p pmail-current-message))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3078 0
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3079 (if pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3080 (with-current-buffer pmail-view-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3081 (- (point)(point-min)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3082 (- (point) (point-min)))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3083 (messages-head (cons (aref pmail-message-vector 0) nil))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3084 (messages-tail messages-head)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3085 ;; Don't make any undo records for the expunging.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3086 (buffer-undo-list t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3087 (win))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3088 (unwind-protect
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3089 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3090 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3091 (goto-char (point-min))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3092 (let ((counter 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3093 (number 1)
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3094 new-summary
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3095 (new-msgref (list (list 0)))
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3096 (buffer-read-only nil)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3097 (total pmail-total-messages)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3098 (new-message-number pmail-current-message)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3099 (messages pmail-message-vector)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3100 (deleted pmail-deleted-vector)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3101 (summary pmail-summary-vector))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3102 (setq pmail-total-messages nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3103 pmail-current-message nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3104 pmail-message-vector nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3105 pmail-deleted-vector nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3106 pmail-summary-vector nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3107
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3108 (while (<= number total)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3109 (if (= (aref deleted number) ?D)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3110 (progn
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3111 (delete-region (aref messages number)
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3112 (aref messages (1+ number)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3113 (move-marker (aref messages number) nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3114 (if (> new-message-number counter)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3115 (setq new-message-number (1- new-message-number))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3116 (setq counter (1+ counter))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3117 (setq messages-tail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3118 (setcdr messages-tail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3119 (cons (aref messages number) nil)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3120 (setq new-summary
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3121 (cons (if (= counter number) (aref summary (1- number)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3122 new-summary))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3123 (setq new-msgref
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3124 (cons (aref pmail-msgref-vector number)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3125 new-msgref))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3126 (setcar (car new-msgref) counter))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3127 (if (zerop (% (setq number (1+ number)) 20))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3128 (message "Expunging deleted messages...%d" number)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3129 (setq messages-tail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3130 (setcdr messages-tail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3131 (cons (aref messages number) nil)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3132 (setq pmail-current-message new-message-number
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3133 pmail-total-messages counter
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3134 pmail-message-vector (apply 'vector messages-head)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3135 pmail-deleted-vector (make-string (1+ counter) ?\ )
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3136 pmail-summary-vector (vconcat (nreverse new-summary))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3137 pmail-msgref-vector (apply 'vector (nreverse new-msgref))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3138 win t)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3139 (message "Expunging deleted messages...done")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3140 (if (not win)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3141 (narrow-to-region (- (buffer-size) omin) (- (buffer-size) omax)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3142 (if (not dont-show)
100119
bc5e659c237c (pmail-only-expunge): Pass correct arg to pmail-show-message-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 99528
diff changeset
3143 (pmail-show-message-maybe (min pmail-current-message pmail-total-messages)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3144 (if pmail-enable-mime
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3145 (goto-char (+ (point-min) opoint))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3146 (goto-char (+ (point) opoint))))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3147
100297
0a269d00caef (pmail-expunge): Pass new optional arg to pmail-only-expunge.
Chong Yidong <cyd@stupidchicken.com>
parents: 100290
diff changeset
3148 (defun pmail-expunge (&optional dont-show)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3149 "Erase deleted messages from Pmail file and summary buffer."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3150 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3151 (when (pmail-expunge-confirmed)
100435
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3152 (let ((old-total pmail-total-messages)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3153 (opoint (with-current-buffer pmail-buffer
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
3154 (when (pmail-buffers-swapped-p)
100435
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3155 (point)))))
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3156 (pmail-only-expunge dont-show)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3157 (if (pmail-summary-exists)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3158 (pmail-select-summary (pmail-update-summary))
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3159 (pmail-show-message pmail-current-message)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3160 (if (and (eq old-total pmail-total-messages) opoint)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3161 (goto-char opoint))))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3162
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3163 ;;;; *** Pmail Mailing Commands ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3164
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3165 (defun pmail-start-mail (&optional noerase to subject in-reply-to cc
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3166 replybuffer sendactions same-window others)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3167 (let (yank-action)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3168 (if replybuffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3169 (setq yank-action (list 'insert-buffer replybuffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3170 (setq others (cons (cons "cc" cc) others))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3171 (setq others (cons (cons "in-reply-to" in-reply-to) others))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3172 (if same-window
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3173 (compose-mail to subject others
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3174 noerase nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3175 yank-action sendactions)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3176 (if pmail-mail-new-frame
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3177 (prog1
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3178 (compose-mail to subject others
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3179 noerase 'switch-to-buffer-other-frame
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3180 yank-action sendactions)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3181 ;; This is not a standard frame parameter;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3182 ;; nothing except sendmail.el looks at it.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3183 (modify-frame-parameters (selected-frame)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3184 '((mail-dedicated-frame . t))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3185 (compose-mail to subject others
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3186 noerase 'switch-to-buffer-other-window
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3187 yank-action sendactions)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3188
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3189 (defun pmail-mail ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3190 "Send mail in another window.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3191 While composing the message, use \\[mail-yank-original] to yank the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3192 original message into it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3193 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3194 (pmail-start-mail nil nil nil nil nil pmail-view-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3195
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3196 (defun pmail-continue ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3197 "Continue composing outgoing message previously being composed."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3198 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3199 (pmail-start-mail t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3200
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3201 (defun pmail-reply (just-sender)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3202 "Reply to the current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3203 Normally include CC: to all other recipients of original message;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3204 prefix argument means ignore them. While composing the reply,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3205 use \\[mail-yank-original] to yank the original message into it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3206 (interactive "P")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3207 (let (from reply-to cc subject date to message-id references
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3208 resent-to resent-cc resent-reply-to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3209 (msgnum pmail-current-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3210 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3211 (save-restriction
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3212 (widen)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
3213 (if (pmail-buffers-swapped-p)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3214 (narrow-to-region
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3215 (goto-char (point-min))
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3216 (search-forward "\n\n" nil 'move))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3217 (goto-char (pmail-msgbeg pmail-current-message))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3218 (forward-line 1)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3219 (narrow-to-region
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3220 (point)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3221 (search-forward "\n\n"
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3222 (pmail-msgend pmail-current-message)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3223 'move)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3224 (setq from (mail-fetch-field "from")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3225 reply-to (or (mail-fetch-field "mail-reply-to" nil t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3226 (mail-fetch-field "reply-to" nil t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3227 from)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3228 subject (mail-fetch-field "subject")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3229 date (mail-fetch-field "date")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3230 message-id (mail-fetch-field "message-id")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3231 references (mail-fetch-field "references" nil nil t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3232 resent-reply-to (mail-fetch-field "resent-reply-to" nil t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3233 resent-cc (and (not just-sender)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3234 (mail-fetch-field "resent-cc" nil t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3235 resent-to (or (mail-fetch-field "resent-to" nil t) "")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3236 ;;; resent-subject (mail-fetch-field "resent-subject")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3237 ;;; resent-date (mail-fetch-field "resent-date")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3238 ;;; resent-message-id (mail-fetch-field "resent-message-id")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3239 )
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3240 (unless just-sender
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3241 (if (mail-fetch-field "mail-followup-to" nil t)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3242 ;; If this header field is present, use it instead of
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3243 ;; the To and CC fields.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3244 (setq to (mail-fetch-field "mail-followup-to" nil t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3245 (setq cc (or (mail-fetch-field "cc" nil t) "")
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3246 to (or (mail-fetch-field "to" nil t) ""))))))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3247
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3248 ;; Merge the resent-to and resent-cc into the to and cc.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3249 (if (and resent-to (not (equal resent-to "")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3250 (if (not (equal to ""))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3251 (setq to (concat to ", " resent-to))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3252 (setq to resent-to)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3253 (if (and resent-cc (not (equal resent-cc "")))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3254 (if (not (equal cc ""))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3255 (setq cc (concat cc ", " resent-cc))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3256 (setq cc resent-cc)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3257 ;; Add `Re: ' to subject if not there already.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3258 (and (stringp subject)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3259 (setq subject
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3260 (concat pmail-reply-prefix
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3261 (if (let ((case-fold-search t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3262 (string-match pmail-reply-regexp subject))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3263 (substring subject (match-end 0))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3264 subject))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3265 (pmail-start-mail
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3266 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3267 ;; Using mail-strip-quoted-names is undesirable with newer mailers
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3268 ;; since they can handle the names unstripped.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3269 ;; I don't know whether there are other mailers that still
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3270 ;; need the names to be stripped.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3271 ;;; (mail-strip-quoted-names reply-to)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3272 ;; Remove unwanted names from reply-to, since Mail-Followup-To
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3273 ;; header causes all the names in it to wind up in reply-to, not
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3274 ;; in cc. But if what's left is an empty list, use the original.
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3275 (let* ((reply-to-list (rmail-dont-reply-to reply-to)))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3276 (if (string= reply-to-list "") reply-to reply-to-list))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3277 subject
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3278 (pmail-make-in-reply-to-field from date message-id)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3279 (if just-sender
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3280 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3281 ;; mail-strip-quoted-names is NOT necessary for pmail-dont-reply-to
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3282 ;; to do its job.
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3283 (let* ((cc-list (rmail-dont-reply-to
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3284 (mail-strip-quoted-names
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3285 (if (null cc) to (concat to ", " cc))))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3286 (if (string= cc-list "") nil cc-list)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3287 pmail-view-buffer
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3288 (list (list 'pmail-mark-message
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3289 pmail-buffer
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3290 (with-current-buffer pmail-buffer
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3291 (aref pmail-msgref-vector msgnum))
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
3292 pmail-answered-attr-index))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3293 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3294 (list (cons "References" (concat (mapconcat 'identity references " ")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3295 " " message-id))))))
101077
22a55aabcdba (pmail-count-screen-lines, pmail-use-collection-buffer)
Richard M. Stallman <rms@gnu.org>
parents: 101074
diff changeset
3296
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3297 (defun pmail-mark-message (buffer msgnum-list attribute)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3298 "Give BUFFER's message number in MSGNUM-LIST the attribute ATTRIBUTE.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3299 This is use in the send-actions for message buffers.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3300 MSGNUM-LIST is a list of the form (MSGNUM)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3301 which is an element of pmail-msgref-vector."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3302 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3303 (set-buffer buffer)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3304 (if (car msgnum-list)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3305 (pmail-set-attribute attribute t (car msgnum-list)))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3306
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3307 (defun pmail-make-in-reply-to-field (from date message-id)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3308 (cond ((not from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3309 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3310 message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3311 nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3312 (mail-use-rfc822
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3313 (require 'rfc822)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3314 (let ((tem (car (rfc822-addresses from))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3315 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3316 (if (or (not tem)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3317 (string-match
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3318 (regexp-quote (if (string-match "@[^@]*\\'" tem)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3319 (substring tem 0
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3320 (match-beginning 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3321 tem))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3322 message-id))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3323 ;; missing From, or Message-ID is sufficiently informative
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3324 message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3325 (concat message-id " (" tem ")"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3326 ;; Copy TEM, discarding text properties.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3327 (setq tem (copy-sequence tem))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3328 (set-text-properties 0 (length tem) nil tem)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3329 (setq tem (copy-sequence tem))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3330 ;; Use prin1 to fake RFC822 quoting
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3331 (let ((field (prin1-to-string tem)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3332 (if date
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3333 (concat field "'s message of " date)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3334 field)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3335 ((let* ((foo "[^][\000-\037()<>@,;:\\\" ]+")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3336 (bar "[^][\000-\037()<>@,;:\\\"]+"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3337 ;; These strings both match all non-ASCII characters.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3338 (or (string-match (concat "\\`[ \t]*\\(" bar
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3339 "\\)\\(<" foo "@" foo ">\\)?[ \t]*\\'")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3340 ;; "Unix Loser <Foo@bar.edu>" => "Unix Loser"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3341 from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3342 (string-match (concat "\\`[ \t]*<" foo "@" foo ">[ \t]*(\\("
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3343 bar "\\))[ \t]*\\'")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3344 ;; "<Bugs@bar.edu>" (Losing Unix) => "Losing Unix"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3345 from)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3346 (let ((start (match-beginning 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3347 (end (match-end 1)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3348 ;; Trim whitespace which above regexp match allows
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3349 (while (and (< start end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3350 (memq (aref from start) '(?\t ?\ )))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3351 (setq start (1+ start)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3352 (while (and (< start end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3353 (memq (aref from (1- end)) '(?\t ?\ )))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3354 (setq end (1- end)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3355 (let ((field (substring from start end)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3356 (if date (setq field (concat "message from " field " on " date)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3357 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3358 ;; "<AA259@bar.edu> (message from Unix Loser on 1-Apr-89)"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3359 (concat message-id " (" field ")")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3360 field))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3361 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3362 ;; If we can't kludge it simply, do it correctly
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3363 (let ((mail-use-rfc822 t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3364 (pmail-make-in-reply-to-field from date message-id)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3365
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3366 (defun pmail-forward (resend)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3367 "Forward the current message to another user.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3368 With prefix argument, \"resend\" the message instead of forwarding it;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3369 see the documentation of `pmail-resend'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3370 (interactive "P")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3371 (if resend
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3372 (call-interactively 'pmail-resend)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3373 (let ((forward-buffer pmail-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3374 (msgnum pmail-current-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3375 (subject (concat "["
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3376 (let ((from (or (mail-fetch-field "From")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3377 (mail-fetch-field ">From"))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3378 (if from
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3379 (concat (mail-strip-quoted-names from) ": ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3380 ""))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3381 (or (mail-fetch-field "Subject") "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3382 "]")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3383 (if (pmail-start-mail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3384 nil nil subject nil nil nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3385 (list (list 'pmail-mark-message
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3386 forward-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3387 (with-current-buffer pmail-buffer
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3388 (aref pmail-msgref-vector msgnum))
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
3389 pmail-forwarded-attr-index))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3390 ;; If only one window, use it for the mail buffer.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3391 ;; Otherwise, use another window for the mail buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3392 ;; so that the Pmail buffer remains visible
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3393 ;; and sending the mail will get back to it.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3394 (and (not pmail-mail-new-frame) (one-window-p t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3395 ;; The mail buffer is now current.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3396 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3397 ;; Insert after header separator--before signature if any.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3398 (goto-char (mail-text-start))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3399 (if (or pmail-enable-mime pmail-enable-mime-composing)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3400 (funcall pmail-insert-mime-forwarded-message-function
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3401 forward-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3402 (insert "------- Start of forwarded message -------\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3403 ;; Quote lines with `- ' if they start with `-'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3404 (let ((beg (point)) end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3405 (setq end (point-marker))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3406 (set-marker-insertion-type end t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3407 (insert-buffer-substring forward-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3408 (goto-char beg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3409 (while (re-search-forward "^-" end t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3410 (beginning-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3411 (insert "- ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3412 (forward-line 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3413 (goto-char end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3414 (skip-chars-backward "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3415 (if (< (point) end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3416 (forward-char 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3417 (delete-region (point) end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3418 (set-marker end nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3419 (insert "------- End of forwarded message -------\n"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3420 (push-mark))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3421
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3422 (defun pmail-resend (address &optional from comment mail-alias-file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3423 "Resend current message to ADDRESSES.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3424 ADDRESSES should be a single address, a string consisting of several
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3425 addresses separated by commas, or a list of addresses.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3426
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3427 Optional FROM is the address to resend the message from, and
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3428 defaults from the value of `user-mail-address'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3429 Optional COMMENT is a string to insert as a comment in the resent message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3430 Optional ALIAS-FILE is alternate aliases file to be used by sendmail,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3431 typically for purposes of moderating a list."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3432 (interactive "sResend to: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3433 (require 'sendmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3434 (require 'mailalias)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3435 (unless (or (eq pmail-view-buffer (current-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3436 (eq pmail-buffer (current-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3437 (error "Not an Pmail buffer"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3438 (if (not from) (setq from user-mail-address))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3439 (let ((tembuf (generate-new-buffer " sendmail temp"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3440 (case-fold-search nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3441 (mail-personal-alias-file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3442 (or mail-alias-file mail-personal-alias-file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3443 (mailbuf pmail-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3444 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3445 (with-current-buffer tembuf
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3446 ;;>> Copy message into temp buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3447 (if pmail-enable-mime
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3448 (funcall pmail-insert-mime-resent-message-function mailbuf)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3449 (insert-buffer-substring mailbuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3450 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3451 ;; Delete any Sender field, since that's not specifiable.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3452 ; Only delete Sender fields in the actual header.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3453 (re-search-forward "^$" nil 'move)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3454 ; Using "while" here rather than "if" because some buggy mail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3455 ; software may have inserted multiple Sender fields.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3456 (while (re-search-backward "^Sender:" nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3457 (let (beg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3458 (setq beg (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3459 (forward-line 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3460 (while (looking-at "[ \t]")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3461 (forward-line 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3462 (delete-region beg (point))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3463 ; Go back to the beginning of the buffer so the Resent- fields
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3464 ; are inserted there.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3465 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3466 ;;>> Insert resent-from:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3467 (insert "Resent-From: " from "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3468 (insert "Resent-Date: " (mail-rfc822-date) "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3469 ;;>> Insert resent-to: and bcc if need be.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3470 (let ((before (point)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3471 (if mail-self-blind
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3472 (insert "Resent-Bcc: " (user-login-name) "\n"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3473 (insert "Resent-To: " (if (stringp address)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3474 address
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3475 (mapconcat 'identity address ",\n\t"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3476 "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3477 ;; Expand abbrevs in the recipients.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3478 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3479 (if (featurep 'mailabbrev)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3480 (let ((end (point-marker))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3481 (local-abbrev-table mail-abbrevs)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3482 (old-syntax-table (syntax-table)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3483 (if (and (not (vectorp mail-abbrevs))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3484 (file-exists-p mail-personal-alias-file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3485 (build-mail-abbrevs))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3486 (unless mail-abbrev-syntax-table
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3487 (mail-abbrev-make-syntax-table))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3488 (set-syntax-table mail-abbrev-syntax-table)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3489 (goto-char before)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3490 (while (and (< (point) end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3491 (progn (forward-word 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3492 (<= (point) end)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3493 (expand-abbrev))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3494 (set-syntax-table old-syntax-table))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3495 (expand-mail-aliases before (point)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3496 ;;>> Set up comment, if any.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3497 (if (and (sequencep comment) (not (zerop (length comment))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3498 (let ((before (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3499 after)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3500 (insert comment)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3501 (or (eolp) (insert "\n"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3502 (setq after (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3503 (goto-char before)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3504 (while (< (point) after)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3505 (insert "Resent-Comment: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3506 (forward-line 1))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3507 ;; Don't expand aliases in the destination fields
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3508 ;; of the original message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3509 (let (mail-aliases)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3510 (funcall send-mail-function)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3511 (kill-buffer tembuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3512 (with-current-buffer pmail-buffer
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3513 (pmail-set-attribute pmail-resent-attr-index t pmail-current-message))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3514
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3515 (defvar mail-unsent-separator
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3516 (concat "^ *---+ +Unsent message follows +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3517 "^ *---+ +Returned message +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3518 "^ *---+ *Returned mail follows *---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3519 "^Start of returned message$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3520 "^---+ Below this line is a copy of the message.$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3521 "^ *---+ +Original message +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3522 "^ *--+ +begin message +--+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3523 "^ *---+ +Original message follows +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3524 "^ *---+ +Your message follows +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3525 "^|? *---+ +Message text follows: +---+ *|?$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3526 "^ *---+ +This is a copy of \\w+ message, including all the headers.*---+ *$")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3527 "A regexp that matches the separator before the text of a failed message.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3529 (defvar mail-mime-unsent-header "^Content-Type: message/rfc822 *$"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3530 "A regexp that matches the header of a MIME body part with a failed message.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3531
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3532 (defun pmail-retry-failure ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3533 "Edit a mail message which is based on the contents of the current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3534 For a message rejected by the mail system, extract the interesting headers and
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3535 the body of the original message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3536 If the failed message is a MIME multipart message, it is searched for a
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3537 body part with a header which matches the variable `mail-mime-unsent-header'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3538 Otherwise, the variable `mail-unsent-separator' should match the string that
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3539 delimits the returned original message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3540 The variable `pmail-retry-ignored-headers' is a regular expression
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3541 specifying headers which should not be copied into the new message."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3542 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3543 (require 'mail-utils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3544 (let ((pmail-this-buffer (current-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3545 (msgnum pmail-current-message)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3546 bounce-start bounce-end bounce-indent resending
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3547 ;; Fetch any content-type header in current message
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3548 ;; Must search thru the whole unpruned header.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3549 (content-type
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3550 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3551 (save-restriction
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3552 (mail-fetch-field "Content-Type") ))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3553 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3554 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3555 (let ((case-fold-search t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3556 (if (and content-type
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3557 (string-match
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3558 ";[\n\t ]*boundary=\"?\\([-0-9a-z'()+_,./:=? ]+\\)\"?"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3559 content-type))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3560 ;; Handle a MIME multipart bounce message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3561 (let ((codestring
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3562 (concat "\n--"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3563 (substring content-type (match-beginning 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3564 (match-end 1)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3565 (unless (re-search-forward mail-mime-unsent-header nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3566 (error "Cannot find beginning of header in failed message"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3567 (unless (search-forward "\n\n" nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3568 (error "Cannot find start of Mime data in failed message"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3569 (setq bounce-start (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3570 (if (search-forward codestring nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3571 (setq bounce-end (match-beginning 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3572 (setq bounce-end (point-max))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3573 ;; Non-MIME bounce.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3574 (or (re-search-forward mail-unsent-separator nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3575 (error "Cannot parse this as a failure message"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3576 (skip-chars-forward "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3577 ;; Support a style of failure message in which the original
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3578 ;; message is indented, and included within lines saying
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3579 ;; `Start of returned message' and `End of returned message'.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3580 (if (looking-at " +Received:")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3581 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3582 (setq bounce-start (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3583 (skip-chars-forward " ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3584 (setq bounce-indent (- (current-column)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3585 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3586 (re-search-backward "^End of returned message$" nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3587 (setq bounce-end (point)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3588 ;; One message contained a few random lines before
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3589 ;; the old message header. The first line of the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3590 ;; message started with two hyphens. A blank line
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3591 ;; followed these random lines. The same line
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3592 ;; beginning with two hyphens was possibly marking
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3593 ;; the end of the message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3594 (if (looking-at "^--")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3595 (let ((boundary (buffer-substring-no-properties
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3596 (point)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3597 (progn (end-of-line) (point)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3598 (search-forward "\n\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3599 (skip-chars-forward "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3600 (setq bounce-start (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3601 (goto-char (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3602 (search-backward (concat "\n\n" boundary) bounce-start t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3603 (setq bounce-end (point)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3604 (setq bounce-start (point)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3605 bounce-end (point-max)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3606 (unless (search-forward "\n\n" nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3607 (error "Cannot find end of header in failed message"))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3608 ;; We have found the message that bounced, within the current message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3609 ;; Now start sending new message; default header fields from original.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3610 ;; Turn off the usual actions for initializing the message body
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3611 ;; because we want to get only the text from the failure message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3612 (let (mail-signature mail-setup-hook)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3613 (if (pmail-start-mail nil nil nil nil nil pmail-this-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3614 (list (list 'pmail-mark-message
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3615 pmail-this-buffer
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3616 (aref pmail-msgref-vector msgnum)
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
3617 pmail-retried-attr-index)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3618 ;; Insert original text as initial text of new draft message.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3619 ;; Bind inhibit-read-only since the header delimiter
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3620 ;; of the previous message was probably read-only.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3621 (let ((inhibit-read-only t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3622 pmail-displayed-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3623 pmail-ignored-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3624 (erase-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3625 (insert-buffer-substring pmail-this-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3626 bounce-start bounce-end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3627 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3628 (if bounce-indent
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3629 (indent-rigidly (point-min) (point-max) bounce-indent))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3630 (mail-sendmail-delimit-header)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3631 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3632 (narrow-to-region (point-min) (mail-header-end))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3633 (setq resending (mail-fetch-field "resent-to"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3634 (if mail-self-blind
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3635 (if resending
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3636 (insert "Resent-Bcc: " (user-login-name) "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3637 (insert "BCC: " (user-login-name) "\n"))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3638 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3639 (mail-position-on-field (if resending "Resent-To" "To") t))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3640
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3641 (defun pmail-summary-exists ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3642 "Non-nil if in an PMAIL buffer and an associated summary buffer exists.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3643 In fact, the non-nil value returned is the summary buffer itself."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3644 (and pmail-summary-buffer (buffer-name pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3645 pmail-summary-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3646
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3647 (defun pmail-summary-displayed ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3648 "t if in PMAIL buffer and an associated summary buffer is displayed."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3649 (and pmail-summary-buffer (get-buffer-window pmail-summary-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3650
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3651 (defcustom pmail-redisplay-summary nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3652 "*Non-nil means Pmail should show the summary when it changes.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3653 This has an effect only if a summary buffer exists."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3654 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3655 :group 'pmail-summary)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3656
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3657 (defcustom pmail-summary-window-size nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3658 "*Non-nil means specify the height for an Pmail summary window."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3659 :type '(choice (const :tag "Disabled" nil) integer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3660 :group 'pmail-summary)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3661
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3662 ;; Put the summary buffer back on the screen, if user wants that.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3663 (defun pmail-maybe-display-summary ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3664 (let ((selected (selected-window))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3665 window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3666 ;; If requested, make sure the summary is displayed.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3667 (and pmail-summary-buffer (buffer-name pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3668 pmail-redisplay-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3669 (if (get-buffer-window pmail-summary-buffer 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3670 ;; It's already in some frame; show that one.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3671 (let ((frame (window-frame
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3672 (get-buffer-window pmail-summary-buffer 0))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3673 (make-frame-visible frame)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3674 (raise-frame frame))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3675 (display-buffer pmail-summary-buffer)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3676 ;; If requested, set the height of the summary window.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3677 (and pmail-summary-buffer (buffer-name pmail-summary-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3678 pmail-summary-window-size
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3679 (setq window (get-buffer-window pmail-summary-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3680 ;; Don't try to change the size if just one window in frame.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3681 (not (eq window (frame-root-window (window-frame window))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3682 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3683 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3684 (select-window window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3685 (enlarge-window (- pmail-summary-window-size (window-height))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3686 (select-window selected)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3687
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3688 ;;;; *** Pmail Local Fontification ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3689
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3690 (defun pmail-fontify-buffer-function ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3691 ;; This function's symbol is bound to font-lock-fontify-buffer-function.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3692 (add-hook 'pmail-show-message-hook 'pmail-fontify-message nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3693 ;; If we're already showing a message, fontify it now.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3694 (if pmail-current-message (pmail-fontify-message))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3695 ;; Prevent Font Lock mode from kicking in.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3696 (setq font-lock-fontified t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3697
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3698 (defun pmail-unfontify-buffer-function ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3699 ;; This function's symbol is bound to font-lock-fontify-unbuffer-function.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3700 (let ((modified (buffer-modified-p))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3701 (buffer-undo-list t) (inhibit-read-only t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3702 before-change-functions after-change-functions
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3703 buffer-file-name buffer-file-truename)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3704 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3705 (widen)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3706 (remove-hook 'pmail-show-message-hook 'pmail-fontify-message t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3707 (remove-text-properties (point-min) (point-max) '(pmail-fontified nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3708 (font-lock-default-unfontify-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3709 (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3710
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3711 (defun pmail-fontify-message ()
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3712 ;; Fontify the current message if it is not already fontified.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3713 (if (text-property-any (point-min) (point-max) 'pmail-fontified nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3714 (let ((modified (buffer-modified-p))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3715 (buffer-undo-list t) (inhibit-read-only t)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3716 before-change-functions after-change-functions
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3717 buffer-file-name buffer-file-truename)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3718 (save-excursion
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3719 (save-match-data
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3720 (add-text-properties (point-min) (point-max) '(pmail-fontified t))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3721 (font-lock-fontify-region (point-min) (point-max))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3722 (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil)))))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3723
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3724 ;;; Speedbar support for PMAIL files.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3725 (eval-when-compile (require 'speedbar))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3726
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3727 (defvar pmail-speedbar-match-folder-regexp "^[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?$"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3728 "*This regex is used to match folder names to be displayed in speedbar.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3729 Enabling this will permit speedbar to display your folders for easy
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3730 browsing, and moving of messages.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3731
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3732 (defvar pmail-speedbar-last-user nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3733 "The last user to be displayed in the speedbar.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3734
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3735 (defvar pmail-speedbar-key-map nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3736 "Keymap used when in pmail display mode.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3737
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3738 (defun pmail-install-speedbar-variables ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3739 "Install those variables used by speedbar to enhance pmail."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3740 (if pmail-speedbar-key-map
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3741 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3742 (setq pmail-speedbar-key-map (speedbar-make-specialized-keymap))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3743
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3744 (define-key pmail-speedbar-key-map "e" 'speedbar-edit-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3745 (define-key pmail-speedbar-key-map "r" 'speedbar-edit-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3746 (define-key pmail-speedbar-key-map "\C-m" 'speedbar-edit-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3747 (define-key pmail-speedbar-key-map "M"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3748 'pmail-speedbar-move-message-to-folder-on-line)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3749
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3750 (defvar pmail-speedbar-menu-items
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3751 '(["Read Folder" speedbar-edit-line t]
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3752 ["Move message to folder" pmail-speedbar-move-message-to-folder-on-line
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3753 (save-excursion (beginning-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3754 (looking-at "<M> "))])
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3755 "Additional menu-items to add to speedbar frame.")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3756
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3757 ;; Make sure our special speedbar major mode is loaded
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3758 (if (featurep 'speedbar)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3759 (pmail-install-speedbar-variables)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3760 (add-hook 'speedbar-load-hook 'pmail-install-speedbar-variables))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3761
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3762 (defun pmail-speedbar-buttons (buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3763 "Create buttons for BUFFER containing pmail messages.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3764 Click on the address under Reply to: to reply to this person.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3765 Under Folders: Click a name to read it, or on the <M> to move the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3766 current message into that PMAIL folder."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3767 (let ((from nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3768 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3769 (set-buffer buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3770 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3771 (if (not (re-search-forward "^Reply-To: " nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3772 (if (not (re-search-forward "^From:? " nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3773 (setq from t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3774 (if from
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3775 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3776 (setq from (buffer-substring (point) (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3777 (end-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3778 (point))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3779 (goto-char (point-min))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3780 (if (and (looking-at "Reply to:")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3781 (equal from pmail-speedbar-last-user))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3782 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3783 (setq pmail-speedbar-last-user from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3784 (erase-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3785 (insert "Reply To:\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3786 (if (stringp from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3787 (speedbar-insert-button from 'speedbar-directory-face 'highlight
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3788 'pmail-speedbar-button 'pmail-reply))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3789 (insert "Folders:\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3790 (let* ((case-fold-search nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3791 (df (directory-files (save-excursion (set-buffer buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3792 default-directory)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3793 nil pmail-speedbar-match-folder-regexp)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3794 (while df
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3795 (speedbar-insert-button "<M>" 'speedbar-button-face 'highlight
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3796 'pmail-speedbar-move-message (car df))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3797 (speedbar-insert-button (car df) 'speedbar-file-face 'highlight
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3798 'pmail-speedbar-find-file nil t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3799 (setq df (cdr df)))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3800
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3801 (defun pmail-speedbar-button (text token indent)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3802 "Execute an pmail command specified by TEXT.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3803 The command used is TOKEN. INDENT is not used."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3804 (speedbar-with-attached-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3805 (funcall token t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3806
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3807 (defun pmail-speedbar-find-file (text token indent)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3808 "Load in the pmail file TEXT.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3809 TOKEN and INDENT are not used."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3810 (speedbar-with-attached-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3811 (message "Loading in PMAIL file %s..." text)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3812 (find-file text)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3813
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3814 (defun pmail-speedbar-move-message-to-folder-on-line ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3815 "If the current line is a folder, move current message to it."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3816 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3817 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3818 (beginning-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3819 (if (re-search-forward "<M> " (save-excursion (end-of-line) (point)) t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3820 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3821 (forward-char -2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3822 (speedbar-do-function-pointer)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3823
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3824 (defun pmail-speedbar-move-message (text token indent)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3825 "From button TEXT, copy current message to the pmail file specified by TOKEN.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3826 TEXT and INDENT are not used."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3827 (speedbar-with-attached-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3828 (message "Moving message to %s" token)
100913
c2069bd311e6 (basic-save-buffer): Protect buffer-modified flag around first swap.
Richard M. Stallman <rms@gnu.org>
parents: 100908
diff changeset
3829 (pmail-output token)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3830
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3831 ; Functions for setting, getting and encoding the POP password.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3832 ; The password is encoded to prevent it from being easily accessible
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3833 ; to "prying eyes." Obviously, this encoding isn't "real security,"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3834 ; nor is it meant to be.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3835
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3836 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3837 (defun pmail-set-remote-password (password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3838 "Set PASSWORD to be used for retrieving mail from a POP or IMAP server."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3839 (interactive "sPassword: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3840 (if password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3841 (setq pmail-encoded-remote-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3842 (pmail-encode-string password (emacs-pid)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3843 (setq pmail-remote-password nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3844 (setq pmail-encoded-remote-password nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3845
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3846 (defun pmail-get-remote-password (imap)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3847 "Get the password for retrieving mail from a POP or IMAP server. If none
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3848 has been set, then prompt the user for one."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3849 (when (not pmail-encoded-remote-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3850 (if (not pmail-remote-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3851 (setq pmail-remote-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3852 (read-passwd (if imap
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3853 "IMAP password: "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3854 "POP password: "))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3855 (pmail-set-remote-password pmail-remote-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3856 (setq pmail-remote-password nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3857 (pmail-encode-string pmail-encoded-remote-password (emacs-pid)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3858
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3859 (defun pmail-have-password ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3860 (or pmail-remote-password pmail-encoded-remote-password))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3861
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3862 (defun pmail-encode-string (string mask)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3863 "Encode STRING with integer MASK, by taking the exclusive OR of the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3864 lowest byte in the mask with the first character of string, the
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3865 second-lowest-byte with the second character of the string, etc.,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3866 restarting at the lowest byte of the mask whenever it runs out.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3867 Returns the encoded string. Calling the function again with an
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3868 encoded string (and the same mask) will decode the string."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3869 (setq mask (abs mask)) ; doesn't work if negative
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3870 (let* ((string-vector (string-to-vector string)) (i 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3871 (len (length string-vector)) (curmask mask) charmask)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3872 (while (< i len)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3873 (if (= curmask 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3874 (setq curmask mask))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3875 (setq charmask (% curmask 256))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3876 (setq curmask (lsh curmask -8))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3877 (aset string-vector i (logxor charmask (aref string-vector i)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3878 (setq i (1+ i)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3879 (concat string-vector)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3880
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3881 ;;;; Desktop support
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3882
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3883 (defun pmail-restore-desktop-buffer (desktop-buffer-file-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3884 desktop-buffer-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3885 desktop-buffer-misc)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3886 "Restore an pmail buffer specified in a desktop file."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3887 (condition-case error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3888 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3889 (pmail-input desktop-buffer-file-name)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3890 (if (eq major-mode 'pmail-mode)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3891 (current-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3892 pmail-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3893 (file-locked
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3894 (kill-buffer (current-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3895 nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3896
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3897 (add-to-list 'desktop-buffer-mode-handlers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3898 '(pmail-mode . pmail-restore-desktop-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3899
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3900
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3901 (provide 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3902
98019
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3903 ;; Local Variables:
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3904 ;; change-log-default-name: "ChangeLog.pmail"
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3905 ;; End:
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3906
97534
4d30ed7d18e3 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 97533
diff changeset
3907 ;; arch-tag: 65d257d3-c281-4a65-9c38-e61af95af2f0
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3908 ;;; pmail.el ends here