annotate lisp/mail/pmail.el @ 100691:89166beb2187

(dosified-file-name): New function.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 26 Dec 2008 15:01:34 +0000
parents 3bc2687bdff2
children d9d23e4f6b00
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,
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
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
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
44 (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
45 "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
46
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
47 (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
48 "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
49
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
50 ;;; 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
51
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
52 (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
53 "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
54
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
55 (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
56 "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
57
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
58 (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
59 "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
60
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
61 (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
62 "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
63
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
64 (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
65 "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
66
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
67 (defconst pmail-forwarded-attr-index 5
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
68 "The index for the `stored' attribute.")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
69
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
70 (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
71 "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
72
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
73 (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
74 '[(?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
75 (?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
76 (?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
77 (?F "filed")
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
78 (?R "retried")
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
79 (?S "forwarded")
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
80 (?U "unseen")]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
81 "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
82 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
83
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
84 (defvar deleted-head)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
85 (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
86 (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
87 (defvar mail-abbrevs)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
88 (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
89 (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
90 (defvar rsf-beep)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
91 (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
92 (defvar total-messages)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
93 (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
94
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
95 (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
96 "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
97 '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
98
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
99 ; 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
100 ;(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
101 ; "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
102 ;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
103 ;(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
104 ; (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
105 ; "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
106
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
107 ;; 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
108 (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
109 "*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
110 :type 'string
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
111 :group 'rmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
112 :version "21.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
113
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
114 (defgroup pmail nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
115 "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
116 :group 'mail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
117
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
118 (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
119 "Pmail retrieval options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
120 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
121 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
122
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
123 (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
124 "Pmail files."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
125 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
126 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
127
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
128 (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
129 "Pmail header options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
130 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
131 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
132
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
133 (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
134 "Pmail reply options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
135 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
136 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
137
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
138 (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
139 "Pmail summary options."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
140 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
141 :prefix "pmail-summary-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
142 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
143
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
144 (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
145 "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
146 :prefix "pmail-output-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
147 :prefix "pmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
148 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
149
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
150 (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
151 "Pmail editing."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
152 :prefix "pmail-edit-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
153 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
154
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
155 (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
156 "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
157 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
158
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
159 (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
160 "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
161 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
162 :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
163
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
164 (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
165 "*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
166 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
167 :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
168 (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
169 :group 'pmail-obsolete)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
170
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
171 (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
172 "*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
173 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
174 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
175 :group 'pmail-obsolete)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
176
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
177 (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
178 "*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
179 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
180 :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
181 (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
182 :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
183 :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
184 (set-default symbol
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
185 (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
186 (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
187 pmail-pop-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
188 pmail-pop-password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
189 value))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
190 (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
191 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
192 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
193
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
194 (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
195 "*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
196 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
197 :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
198 :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
199 (set-default symbol
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
200 (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
201 (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
202 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
203 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
204 value))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
205 (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
206 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
207 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
208
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
209 (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
210 "*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
211 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
212 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
213 :type '(repeat string)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
214 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
215 :version "20.3")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
216
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
217 (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
218 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
219 "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
220 messages.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
221 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
222 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
223
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
224 (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
225
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
226 (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
227 "*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
228 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
229 :group 'pmail-retrieve)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
230
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
231 (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
232 "*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
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 :type '(repeat (directory)))
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 (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
237 (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
238 (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
239 (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
240
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
241 (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
242 "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
243 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
244 (with-temp-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
245 (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
246 (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
247 (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
248 (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
249 ;; Should not happen...
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
250 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
251 (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
252 (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
253 ((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
254 'emacs) ;; Possibly...
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
255 ((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
256 'mailutils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
257 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
258 ;; FIXME:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
259 'emacs))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
260
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
261 (defun pmail-autodetect ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
262 "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
263 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
264 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
265 `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
266 (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
267 (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
268 (catch 'scan
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
269 (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
270 (list exec-directory)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
271 (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
272 ;; 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
273 ;; 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
274 ;; (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
275 ;; 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
276 ;; 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
277 (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
278 (concat "movemail"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
279 (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
280 ".exe")) dir)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
281 (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
282 (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
283 (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
284 (when x
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
285 (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
286 (throw 'scan x))))))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
287
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
288 (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
289 "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
290
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
291 `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
292 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
293 `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
294 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
295
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
296 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
297 (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
298 "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
299 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
300 (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
301 ;; Autodetect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
302 (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
303 (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
304
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
305 ;; 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
306 ;; 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
307 ;; 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
308 ;; 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
309 (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
310
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
311 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
312 (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
313 *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
314 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
315 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
316 :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
317 :group 'pmail-reply)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
318
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
319 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
320 (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
321 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
322 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
323 `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
324 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
325 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
326
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
327 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
328 (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
329 (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
330 "\\|^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
331 "\\|^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
332 "\\|^\\(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
333 "\\|^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
334 "\\|^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
335 "\\|^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
336 "\\|^return-path:\\|^errors-to:\\|^return-receipt-to:"
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
337 "\\|^precedence:\\|^list-help:\\|^list-post:\\|^list-subscribe:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
338 "\\|^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
339 "\\|^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
340 "\\|^importance:\\|^envelope-to:\\|^delivery-date\\|^openpgp:"
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
341 "\\|^mbox-line:\\|^cancel-lock:\\|^DomainKey-Signature:"
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
342 "\\|^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
343 "\\|^x-.*:")
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
344 "*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
345 \(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
346 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
347 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
348 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
349 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
350 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
351 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
352 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
353 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
354
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
355 (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
356 "*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
357 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
358 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
359 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
360
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
361 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
362 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
363 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
364 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
365 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
366 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
367 :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
368 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
369
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
370 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
371 (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
372 "*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
373 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
374 `pmail-ignored-headers'."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
375 :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
376 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
377
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
378 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
379 (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
380 *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
381 :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
382 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
383
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
384 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
385 (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
386 *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
387 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
388 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
389 :group 'pmail-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
390
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
391 (defface pmail-highlight
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
392 '((t (:inherit highlight)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
393 "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
394 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
395 :version "22.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
396
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
397 (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
398 '((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
399 "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
400 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
401 :version "23.1")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
402
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
403 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
404 (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
405 *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
406 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
407 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
408
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
409 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
410 (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
411 *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
412 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
413 \(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
414 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
415 ;; 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
416 ;; at load time.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
417 :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
418 (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
419 (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
420 (getenv "USER"))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
421 'file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
422 :group 'pmail-retrieve
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
423 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
424
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
425 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
426 (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
427 "*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
428 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
429 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
430 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
431 :group 'pmail-reply)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
432
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
433 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
434 (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
435 "*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
436 :type 'directory
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
437 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
438 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
439 (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
440 "*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
441 :type 'regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
442 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
443
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
444 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
445 (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
446 "*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
447 :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
448 (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
449 (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
450 :version "21.1"
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 (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
455 "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
456
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
457 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
458 (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
459 "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
460
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
461 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
462 (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
463 "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
464 :type 'hook
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
465 :options '(goto-address)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
466 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
467
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
468 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
469 (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
470 "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
471
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
472 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
473 (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
474 "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
475 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
476 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
477
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
478 ;; 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
479 ;; 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
480 ;; files).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
481
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
482 (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
483 "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
484 (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
485 "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
486
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
487 (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
488 "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
489 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
490 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
491 :group 'pmail-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
492 :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
493
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
494 (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
495 "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
496 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
497
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
498 (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
499
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
500 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
501 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
502
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
503 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
504 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
505
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
506 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
507 \"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
508 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
509
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
510 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
511 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
512
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
513 examples:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
514 (\"/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
515 (\"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
516 :group 'pmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
517 :version "21.1"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
518 :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
519
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
520 (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
521 "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
522
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
523 ;; 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
524 ;; 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
525 ;; 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
526 ;; 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
527 (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
528 "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
529
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
530 (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
531 "*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
532 :group 'pmail-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
533 :type 'boolean)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
534
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
535 (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
536 (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
537
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
538 (defvar pmail-keywords nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
539 (put 'pmail-keywords 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
540
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
541 (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
542 "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
543 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
544 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
545 (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
546
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
547 ;; 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
548
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
549 (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
550 (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
551
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
552 (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
553 (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
554
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
555 (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
556 (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
557
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
558 (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
559 (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
560
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
561 (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
562 "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
563 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
564 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
565 (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
566
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
567 (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
568 (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
569
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
570 ;; 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
571
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
572 (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
573 (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
574 (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
575 (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
576
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
577 (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
578 "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
579 (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
580
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
581 ;; `Sticky' default variables.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
582
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
583 ;; Last individual label specified to a or k.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
584 (defvar pmail-last-label nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
585 (put 'pmail-last-label 'permanent-local t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
586
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
587 ;; Last set of values specified to C-M-n, C-M-p, C-M-s or C-M-l.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
588 (defvar pmail-last-multi-labels nil)
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-last-regexp 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-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
592
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
593 (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
594 "*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
595 :type 'file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
596 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
597 (defcustom pmail-default-pmail-file "~/XMAIL"
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
598 "*Default file name for \\[pmail-output-to-babyl-file]."
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
599 :type 'file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
600 :group 'pmail-files)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
601 (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
602 "*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
603 :type 'file
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
604 :group 'pmail-files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
605 :version "20.3")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
606
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
607 ;; 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
608
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
609 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
610 (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
611 "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
612
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
613 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
614
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
615 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
616 (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
617 "*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
618 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
619 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
620 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
621
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
622 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
623 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
624 in your session."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
625 :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
626 (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
627 (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
628 :group 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
629
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
630 (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
631 "*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
632
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
633 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
634 (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
635 "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
636 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
637 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
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-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
641 "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
642 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
643 `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
644 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
645 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
646 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
647
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
648 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
649 (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
650 "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
651 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
652 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
653 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
654 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
655
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
656 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
657 (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
658 "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
659 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
660 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
661 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
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-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
665 "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
666 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
667 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
668 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
669 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
670 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
671
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
672 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
673 (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
674 "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
675 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
676 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
677
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
678 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
679 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
680
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
681 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
682 (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
683 "*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
684 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
685 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
686
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
687 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
688 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
689 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
690
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
691 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
692 (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
693 (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
694 "\\(?:[ \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
695 "[ \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
696 "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
697 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
698
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
699
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
700 ;;; 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
701 ;;; (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
702 ;;; 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
703 ;;; 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
704 (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
705 (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
706 (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
707 "\\|[-+]?[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
708 "\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
709 "\\) *")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
710 (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
711 "From "
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
712
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
713 ;; 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
714 ;; 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
715 ;; `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
716 ;; `<@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
717 ;; 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
718 ;; 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
719 ;; User)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
720 ;; 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
721 ;; From: Joe User
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
722 ;; <joe@y.z>
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
723 ;; 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
724 ;; 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
725 ;; 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
726 ;; <joe@y.z>
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
727 ;; 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
728 ;; 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
729 ;; 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
730 ;; 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
731 ;; 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
732 "\\([^\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
733
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
734 ;; 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
735 "\\([^\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
736 "\\([^\0-\r \^?]+\\) +" ; month
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
737 "\\([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
738 "\\([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
739
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
740 ;; 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
741 ;; numeric offset.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
742 time-zone-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
743
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
744 ;; The year.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
745 " \\([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
746
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
747 ;; 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
748 time-zone-regexp
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
749
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
750 ;; Old uucp cruft.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
751 "\\(remote from .*\\)?"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
752
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
753 "\n"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
754 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
755
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
756 (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
757 ;; 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
758 (eval-when-compile
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
759 (let* ((cite-chars "[>|}]")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
760 (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
761 (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
762 (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
763 . '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
764 '("^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
765 '("^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
766 '("^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
767 '("^\\(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
768 . '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
769 ;; 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
770 `(,cite-chars
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
771 (,(concat "\\=[ \t]*"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
772 "\\(\\(\\([" 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
773 "\\(" cite-chars "[ \t]*\\)\\)+\\)"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
774 "\\(.*\\)")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
775 (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
776 (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
777 (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
778 '("^\\(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
779 . 'pmail-header-name))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
780 "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
781
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
782 ;; 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
783 ;; 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
784 (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
785 `(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
786 (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
787 (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
788 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
789 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
790 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
791 (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
792 ;; 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
793 ;; 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
794 ;; 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
795 ;; 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
796 (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
797 ,@body))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
798 (select-window window))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
799 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
800 (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
801 (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
802 ,@body)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
803 (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
804
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
805 ;;;; *** Pmail Mode ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
806
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
807 ;; 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
808 ;; the byte compiler.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
809
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
810 (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
811
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
812
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
813 (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
814 "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
815 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
816 isn't provided."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
817 (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
818 (condition-case err
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
819 (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
820 (error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
821 (display-warning
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
822 'pmail
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
823 (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
824 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
825 `%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
826 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
827 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
828 pmail-mime-feature)
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
829 :warning)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
830 (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
831
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
832
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
833 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
834 (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
835 "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
836 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
837 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
838 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
839
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
840 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
841 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
842 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
843 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
844
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
845 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
846 (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
847 (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
848 (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
849 (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
850 ;; 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
851 ;; 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
852 (existed (find-buffer-visiting file-name))
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
853 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
854 ;; 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
855 ;; scene...
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
856 (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
857 ;; 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
858 ;; 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
859 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
860 (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
861 (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
862 (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
863 (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
864 ;; 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
865 (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
866 (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
867 (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
868 ;; 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
869 ;; 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
870 (if (eq major-mode 'pmail-mode)
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
871 (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
872 (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
873 (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
874 (or (and existed (> (buffer-size) 0))
65cf390be440 (pmail): Ensure that pmail-mode-hook is run.
Chong Yidong <cyd@stupidchicken.com>
parents: 100584
diff changeset
875 (setq run-mail-hook t))
98707
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
876 ;; 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
877 ;; 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
878 ;; (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
879 (pmail-convert-file-maybe)
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
880 (unless (eq major-mode 'pmail-mode)
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
881 (pmail-mode-2))
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
882 (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
883 (pmail-maybe-set-message-counters)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
884 (setq mail-buf pmail-buffer)
98707
9a09eaf25d36 (pmail): Check for babyl conversion early; ignore multibyte.
Paul Reilly <pmr@pajato.com>
parents: 98625
diff changeset
885 ;; 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
886 (unwind-protect
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
887 ;; 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
888 (unless file-name-arg
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
889 (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
890 (progn
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
891 (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
892 (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
893 (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
894 (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
895 (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
896 (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
897
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
898 (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
899 "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
900 (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
901 (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
902 ;; 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
903 (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
904 ;; 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
905 ;; it.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
906 (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
907 ((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
908 ;; 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
909 ;; 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
910 ;; format.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
911 (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
912 (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
913 (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
914 ((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
915 (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
916 ((looking-at "From "))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
917 (t (pmail-error-bad-format))))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
918
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
919 (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
920 "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
921 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
922 (if msgnum
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
923 (error "Message %s is not a valid RFC2822 message." msgnum)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
924 (error "Invalid mbox format mail 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
925
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
926 (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
927 "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
928 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
929 (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
930 (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
931 (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
932 (progn
100255
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
933 (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
934 (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
935 (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
936 (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
937 (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
938 (erase-buffer)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
939 (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
940 (pmail-mode-1)
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
941 (pmail-perm-variables)
173f33792438 (pmail-convert-babyl-to-mbox): Reinitialize pmail-mode variables after
Chong Yidong <cyd@stupidchicken.com>
parents: 100224
diff changeset
942 (pmail-variables)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
943 (goto-char (point-max))
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
944 (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
945 (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
946 (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
947 (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
948
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
949 (defun pmail-get-coding-system ()
100340
c06b84bf19a5 (pmail-insert-pmail-file-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100337
diff changeset
950 "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
951 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
952 (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
953 separator)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
954 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
955 (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
956 (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
957 (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
958 (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
959 'undecided)))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
960
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
961 (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
962 (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
963 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
964 (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
965 (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
966 (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
967 (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
968 (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
969 (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
970 (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
971 (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
972 (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
973 (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
974 (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
975 (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
976 (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
977 (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
978 (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
979 (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
980 (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
981 (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
982 (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
983 (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
984 (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
985 (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
986 (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
987 (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
988 (define-key pmail-mode-map "\e\C-n" 'pmail-next-labeled-message)
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
989 (define-key pmail-mode-map "o" 'pmail-output-to-babyl-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
990 (define-key pmail-mode-map "\C-o" 'pmail-output)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
991 (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
992 (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
993 (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
994 (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
995 (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
996 ;; 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
997 ;; (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
998 (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
999 (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
1000 (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
1001 (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
1002 (define-key pmail-mode-map "w" '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
1003 (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
1004 (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
1005 (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
1006 (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
1007 (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
1008 (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
1009 (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
1010 (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
1011 (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
1012 (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
1013 (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
1014 (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
1015 (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
1016 (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
1017 (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
1018 (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
1019 (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
1020 )
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1021
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1022 (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
1023
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 [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
1025 (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
1026
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 [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
1028 nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1029
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 [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
1031 nil)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1032
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 [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
1034 '("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
1035
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 [menu-bar classify output-inbox]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1037 '("Output (inbox)..." . pmail-output))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1038
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 [menu-bar classify output]
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
1040 '("Output (Pmail)..." . pmail-output-to-babyl-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
1041
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 [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
1043 '("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
1044
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 [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
1046 '("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
1047
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 [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
1049 (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
1050
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 [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
1052 '("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
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 (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
1055 '("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
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 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
1058 '("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
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 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
1061 '("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
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 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
1064 '("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
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 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
1067 '("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
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 mail]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1070 (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
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 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
1073 '("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
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 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
1076 '("----"))
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 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
1079 '("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
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 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
1082 '("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
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 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
1085 '("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
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 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
1088 '("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
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 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
1091 '("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
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 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
1094 '("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
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 delete]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1097 (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
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 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
1100 '("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
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 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
1103 '("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
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 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
1106 '("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
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 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
1109 '("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
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 move]
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1112 (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
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 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
1115 '("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
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 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
1118 '("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
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 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
1121 '("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
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 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
1124 '("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
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 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
1127 '("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
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 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
1130 '("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
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 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
1133 '("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
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 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
1136 '("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
1137
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1138 ;; Pmail toolbar
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1139 (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
1140 (let ((map (make-sparse-keymap)))
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1141 (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
1142 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1143 (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
1144 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1145 (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
1146 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1147 (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
1148 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1149 (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
1150 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1151 (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
1152 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1153 (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
1154 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1155 (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
1156 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1157 (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
1158 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1159 (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
1160 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1161 (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
1162 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1163 (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
1164 map pmail-mode-map)
e80860881779 * pmail.el (pmail-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98526
diff changeset
1165 map))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1166
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1167
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1168
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1169 ;; 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
1170 (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
1171
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1172 (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
1173 (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
1174
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1175 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1176 (defun pmail-mode ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1177 "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
1178 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
1179 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
1180
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1181 \\[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
1182 \\[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
1183 \\[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
1184 \\[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
1185 \\[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
1186 \\[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
1187 \\[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
1188 \\[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
1189 \\[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
1190 \\[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
1191 \\[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
1192 \\[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
1193 \\[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
1194 \\[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
1195 \\[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
1196 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
1197 \\[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
1198 \\[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
1199 \\[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
1200 \\[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
1201 \\[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
1202 \\[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
1203 \\[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
1204 \\[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
1205 \\[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
1206 \\[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
1207 \\[pmail-forward] Forward this message to another user.
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
1208 \\[pmail-output-to-babyl-file] Output this message to an Pmail file (append it).
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1209 \\[pmail-output] Output this message to a Unix-format mail file (append it).
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1210 \\[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
1211 \\[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
1212 \\[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
1213 \\[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
1214 \\[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
1215 (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
1216 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
1217 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
1218 \\[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
1219 \\[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
1220 \\[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
1221 \\[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
1222 \\[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
1223 \\[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
1224 \\[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
1225 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1226 (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
1227 (pmail-mode-2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1228 (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
1229 (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
1230 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
1231 (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
1232 (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
1233 (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
1234 (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
1235 (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
1236 (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
1237 (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
1238 (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
1239 (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
1240 (pmail-summary))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1241 (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
1242 (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
1243
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1244 (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
1245 (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
1246 (pmail-mode-1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1247 (pmail-perm-variables)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1248 (pmail-variables))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1249
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1250 (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
1251 (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
1252 (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
1253 (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
1254 ;; 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
1255 ;; 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
1256 ;; and deletion of messages.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1257 ;; The one exception is when messages are copied into an Pmail mode buffer.
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
1258 ;; pmail-output-to-babyl-file 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
1259 (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
1260 (setq mode-line-modified "--")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1261 (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
1262 (set-syntax-table text-mode-syntax-table)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1263 (setq local-abbrev-table text-mode-abbrev-table)
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1264 ;; 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
1265 (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
1266 (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
1267
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1268 (defun pmail-generate-viewer-buffer ()
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1269 "Return a reusable buffer suitable for viewing messages.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1270 Create the buffer if necessary."
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1271 (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
1272 (name (format " *message-viewer %s*" suffix))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1273 (buf (get-buffer name)))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1274 (unless buf
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1275 (generate-new-buffer name))))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1276
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1277 (defun pmail-change-major-mode-hook ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1278 ;; Bring the actual Pmail messages back into the main buffer.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1279 (when (pmail-buffers-swapped-p)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
1280 (setq buffer-swapped-with nil)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1281 (buffer-swap-text pmail-view-buffer)))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1282 ;; Throw away the summary.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1283 ;;(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
1284
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1285 (defun pmail-buffers-swapped-p ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1286 "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
1287 ;; 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
1288 ;; 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
1289 ;; 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
1290 ;; Monnier's solution for tar-mode.
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1291 (and (buffer-live-p pmail-view-buffer)
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1292 (> (buffer-size pmail-view-buffer) (buffer-size))))
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1293
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1294 (defun pmail-mode-kill-buffer-hook ()
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1295 (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
1296
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1297 ;; 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
1298 (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
1299 (make-local-variable 'pmail-last-label)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1300 (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
1301 (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
1302 (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
1303 (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
1304 (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
1305 (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
1306 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1307 (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
1308 (set-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
1309 (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
1310 (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
1311 (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
1312 (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
1313 (make-local-variable 'pmail-total-messages)
99528
9fb927515941 Add support for save-buffer.
Paul Reilly <pmr@pajato.com>
parents: 98789
diff changeset
1314 (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
1315 (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
1316 (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
1317 (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
1318 (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
1319 (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
1320 ;; 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
1321 (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
1322 (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
1323 (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
1324 (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
1325 (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
1326 (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
1327 (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
1328 (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
1329 (user-login-name)))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1330 (make-local-variable 'pmail-keywords)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1331 (set (make-local-variable 'tool-bar-map) pmail-tool-bar-map)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1332 ;; this gets generated as needed
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1333 (setq pmail-keywords nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1334
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1335 ;; 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
1336 (defun pmail-variables ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1337 ;; 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
1338 (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
1339 (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
1340 (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
1341 (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
1342 (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
1343 (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
1344 '(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
1345 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
1346 (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
1347 (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
1348 (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
1349 (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
1350 (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
1351 (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
1352 (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
1353 (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
1354 (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
1355 (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
1356 (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
1357 (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
1358 (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
1359 (setq desktop-save-buffer t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1360
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1361 ;; 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
1362 (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
1363 (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
1364 (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
1365 (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
1366 ;; 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
1367 (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
1368 ;; 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
1369 (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
1370 ;; 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
1371 ;; 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
1372 (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
1373 (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
1374 ;; 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
1375 (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
1376 ;; 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
1377 ;; 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
1378 (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
1379 (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
1380 (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
1381 (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
1382 (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
1383 (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
1384 (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
1385
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1386 (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
1387 "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
1388 (interactive)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1389 (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
1390 (pmail-expunge t)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1391 (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
1392 (save-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1393 (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
1394 (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
1395 (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
1396
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1397 (defun pmail-quit ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1398 "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
1399 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
1400 (interactive)
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1401 (set-buffer pmail-buffer)
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
1402 (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
1403 (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
1404 (save-buffer)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1405 (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
1406 (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
1407 ;; 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
1408 (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
1409 (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
1410 (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
1411 (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
1412 (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
1413 (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
1414 (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
1415 (quit-window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1416 (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
1417 (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
1418 (bury-buffer obuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1419 (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
1420 (quit-window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1421 (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
1422
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1423 (defun pmail-bury ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1424 "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
1425 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1426 ;; 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
1427 ;; 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
1428 (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
1429 (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
1430 (let (window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1431 (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
1432 (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
1433 (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
1434 (quit-window)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1435
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1436 (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
1437 "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
1438 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
1439 original copy."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1440 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1441 (widen)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1442 (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
1443 (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
1444 (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
1445 (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
1446 (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
1447 (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
1448 (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
1449 (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
1450 (message "Message duplicated")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1451
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1452 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1453 (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
1454 "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
1455 (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
1456 (pmail filename))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1457
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1458 ;; 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
1459 ;; 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
1460 ;; 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
1461 ;; 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
1462 (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
1463 "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
1464 (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
1465 ;; 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
1466 (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
1467 (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
1468 ;; 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
1469 ;; 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
1470 (sort files 'string<))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1471
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1472 (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
1473 (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
1474 (mapc
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1475 (lambda (item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1476 (let (command)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1477 (if (consp item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1478 (setq command
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1479 (pmail-list-to-menu
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1480 (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
1481 (if full-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1482 (concat full-name "/"
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1483 (car item))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1484 (car item)))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1485 name (car item))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1486 (setq name item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1487 (setq command
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1488 (list 'lambda () '(interactive)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1489 (list action
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1490 (expand-file-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1491 (if full-name
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1492 (concat full-name "/" item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1493 item)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1494 pmail-secondary-file-directory)))))
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1495 (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
1496 (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
1497 (reverse l))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1498 menu))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1499
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1500 ;; 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
1501 (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
1502
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1503 (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
1504 (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
1505 (if files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1506 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1507 (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
1508 (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
1509 (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
1510 files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1511 'pmail-input)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1512 (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
1513 (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
1514 (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
1515 files
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
1516 'pmail-output-to-babyl-file))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1517
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1518 (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
1519 '("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
1520 (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
1521 '("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
1522
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1523
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1524 ;;;; *** Pmail input ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1525
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1526 (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
1527 (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
1528 (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
1529 (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
1530 (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
1531 (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
1532 (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
1533 (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
1534
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1535 ;; 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
1536 ;; 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
1537
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1538 (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
1539 "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
1540 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
1541 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
1542 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
1543 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
1544
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1545 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
1546 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
1547 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
1548 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
1549
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1550 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
1551 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
1552
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1553 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
1554 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
1555 (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
1556 (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
1557 (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
1558 (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
1559 ;; 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
1560 ;; 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
1561 (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
1562 (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
1563 (set-buffer pmail-buffer)
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1564 (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
1565 (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
1566 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1567 ;; 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
1568 (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
1569 (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
1570 (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
1571 (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
1572 found)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1573 (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
1574 (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
1575 (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
1576 ;; 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
1577 ;; 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
1578 (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
1579 (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
1580 ;; 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
1581 (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
1582 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
1583 ;; 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
1584 ;; 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
1585 ;; 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
1586 (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
1587 (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
1588 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
1589 (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
1590 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
1591 (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
1592 (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
1593 ;; 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
1594 (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
1595 (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
1596 (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
1597 (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
1598 (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
1599 found)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1600 ;; 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
1601 (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
1602
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1603 (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
1604 "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
1605 (save-excursion
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1606 (save-restriction
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1607 (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
1608 (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
1609 pmail-use-spam-filter))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1610 (blurb "")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1611 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
1612 (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
1613 ;; 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
1614 ;; 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
1615 ;; eventually.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1616 (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
1617 (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
1618 (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
1619 ;; 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
1620 ;; 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
1621 (goto-char (point-min))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1622 (skip-chars-forward " \n")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1623 (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
1624 (unwind-protect
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1625 (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
1626 success t)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1627 ;; 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
1628 (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
1629 ;; 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
1630 ;; 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
1631 (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
1632 (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
1633 (count 0))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1634 (while delfiles
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1635 (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
1636 (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
1637 (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
1638 (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
1639 ;; 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
1640 (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
1641 ;; 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
1642 (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
1643 (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
1644 (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
1645 (save-buffer))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1646 ;; 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
1647 (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
1648 (condition-case ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1649 ;; 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
1650 (condition-case ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1651 (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
1652 (file-error
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1653 ;; 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
1654 (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
1655 (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
1656 (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
1657 (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
1658 (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
1659 (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
1660 ;; 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
1661 (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
1662 (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
1663 "")))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1664 (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
1665 (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
1666 (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
1667 (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
1668 (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
1669 (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
1670 (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
1671
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1672 ;; 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
1673 ;; 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
1674 (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
1675 (when result
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
1676 (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
1677 (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
1678 result))))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1679
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1680 (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
1681 "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
1682 (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
1683 (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
1684 (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
1685 ;; 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
1686 ;; (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
1687 ;; old-messages
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1688 (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
1689 blurb)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1690 ;; 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
1691 (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
1692 (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
1693 (progn
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1694 (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
1695 (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
1696 (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
1697 (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
1698 (progn
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1699 (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
1700 (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
1701 (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
1702 (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
1703 (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
1704 ;; 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
1705 ;; messages found.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1706 (cond
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1707 ((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
1708 ((= 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
1709 ((= 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
1710 ((> 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
1711 (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
1712 (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
1713
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1714 (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
1715 "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
1716 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
1717 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
1718 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
1719 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
1720 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
1721 "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1722 (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1723 ((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1724 (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
1725 (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
1726 (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
1727 (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
1728 (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
1729 (+ 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
1730
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1731 (if (not pass)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1732 (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
1733 (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
1734 (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
1735 (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
1736 ;; 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
1737 ;; 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
1738 (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
1739
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1740 (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
1741 (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
1742 (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
1743 t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1744 (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
1745 got-password)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1746 (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
1747 (list file
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1748 (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
1749 (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
1750 got-password))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1751
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1752 ((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
1753 (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
1754 (proto "pop")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1755 (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
1756 (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
1757
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1758 (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
1759 (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
1760 (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
1761
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1762 (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
1763
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1764 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1765 (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
1766
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1767 (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
1768 ;; 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
1769 ;; 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
1770 (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
1771 (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
1772 (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
1773 (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
1774 (while files
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1775 ;; 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
1776 ;; 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
1777 (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
1778 (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
1779 (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
1780 (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
1781 (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
1782 (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
1783
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1784 (if popmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1785 (setq renamep t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1786 (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
1787 (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
1788 (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
1789 ;; 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
1790 ;; 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
1791 (concat ".newmail-"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1792 (file-name-nondirectory
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1793 (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
1794 ;; 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
1795 (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
1796 file)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1797 ;; 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
1798 ;; 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
1799 ;; 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
1800 ;; file isn't.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1801 (file-name-directory
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1802 (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
1803 ;; 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
1804 ;; 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
1805 (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
1806 ;; 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
1807 ;; 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
1808 (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
1809 (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
1810 file))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1811 (cond (popmail
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1812 (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
1813 ((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
1814 (/= 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
1815 (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
1816 ((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
1817 (/= 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
1818 (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
1819 ;; 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
1820 ;; 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
1821 (cond ((not renamep)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1822 (setq tofile file))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1823 ((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
1824 (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
1825 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1826 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1827 (with-temp-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1828 (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
1829 (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
1830 (let ((args
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1831 (append
97808
1aab9bdd9355 Resolve all byte compiler warnings and enable IMAP/movemail support.
Paul Reilly <pmr@pajato.com>
parents: 97534
diff changeset
1832 (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
1833 (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
1834 (list "-p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1835 nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1836 (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
1837 (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
1838 pmail-movemail-flags)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1839 (list file tofile)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1840 (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
1841 (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
1842 (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
1843 ;; 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
1844 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1845 (set-buffer errors)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1846 (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
1847 ?\n ?\ )
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1848 (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
1849 (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
1850 (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
1851 (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
1852 (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
1853 (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
1854 (beep t)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1855 ;; 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
1856 ;; 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
1857 ;; 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
1858 (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
1859 (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
1860 nil t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1861 (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
1862
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1863 ;; 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
1864 ;; abbreviation
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1865 (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
1866 (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
1867 (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
1868 (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
1869
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1870 (message "movemail: %s"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1871 (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
1872 (point-max)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1873
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1874 (sit-for 3)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1875 nil)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1876
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1877 ;; 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
1878 ;; 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
1879 ;; 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
1880 (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
1881 (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
1882 size)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1883 (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
1884 (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
1885 ;; 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
1886 ;; 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
1887 ;; 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
1888 ;; 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
1889 (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
1890 (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
1891 (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
1892 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1893 (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
1894 (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
1895 (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
1896 (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
1897 (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
1898 (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
1899 (zerop size)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1900 (insert ?\n))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1901 (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
1902 (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
1903 (message "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1904 (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
1905 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
1906
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1907 ;; 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
1908 ;; 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
1909 (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
1910 (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
1911 (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
1912 ;; 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
1913 ;; 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
1914 (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
1915 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
1916 ;; 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
1917 ;; 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
1918 (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
1919 (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
1920 (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
1921
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1922 (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
1923 "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
1924 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
1925 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
1926 compliant.
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
1927 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
1928 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
1929 (save-excursion
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1930 (save-restriction
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1931 (let ((count 0)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1932 (start (point))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1933 (value "------U")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1934 limit)
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1935 ;; Detect an empty inbox file.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1936 (unless (= start (point-max))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1937 ;; 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
1938 ;; an attribute header is present.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1939 (while (looking-at "From ")
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1940 ;; 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
1941 ;; the message.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1942 (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
1943 (progn
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1944 (setq count (1+ count))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1945 (narrow-to-region start (point))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1946 (unless (mail-fetch-field pmail-attribute-header)
100584
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
1947 (backward-char 1)
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
1948 (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
1949 (widen))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1950 (pmail-error-bad-format))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1951 ;; Move to the next message.
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1952 (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
1953 (forward-char -5))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1954 (setq start (point))))
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
1955 count))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1956
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1957 ;;;; *** Pmail Message Formatting and Header Manipulation ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1958
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1959 (defun pmail-copy-headers (beg end &optional ignored-headers)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1960 "Copy displayed header fields to the message viewer buffer.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1961 BEG and END marks the start and end positions of the message in
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1962 the mail buffer. If the optional argument IGNORED-HEADERS is
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1963 non-nil, ignore all header fields whose names match that regexp.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1964 Otherwise, if `rmail-displayed-headers' is non-nil, copy only
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1965 those header fields whose names match that regexp. Otherwise,
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1966 copy all header fields whose names do not match
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1967 `rmail-ignored-headers' (unless they also match
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1968 `rmail-nonignored-headers')."
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1969 (let ((header-start-regexp "\n[^ \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
1970 lim)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1971 (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
1972 (when (search-forward "\n\n" 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
1973 (forward-char -1)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1974 (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
1975 ;; Put point right after the From header line.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1976 (narrow-to-region beg (point))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
1977 (goto-char (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
1978 (unless (re-search-forward header-start-regexp nil t)
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
1979 (pmail-error-bad-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
1980 (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
1981 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1982 ;; Handle the case where all headers should be copied.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1983 ((eq pmail-header-style 'full)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1984 (prepend-to-buffer pmail-view-buffer beg (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
1985 ;; Handle the case where the headers matching the diplayed
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1986 ;; headers regexp should be copied.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1987 ((and pmail-displayed-headers (null ignored-headers))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1988 (while (not (eobp))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1989 (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
1990 (setq lim (if (re-search-forward header-start-regexp 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
1991 (1+ (match-beginning 0))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1992 (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
1993 (when (looking-at pmail-displayed-headers)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
1994 (append-to-buffer pmail-view-buffer (point) lim))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1995 (goto-char lim)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1996 ;; Handle the ignored headers.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1997 ((or ignored-headers (setq ignored-headers pmail-ignored-headers))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1998 (while (and ignored-headers (not (eobp)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
1999 (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
2000 (setq lim (if (re-search-forward header-start-regexp 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
2001 (1+ (match-beginning 0))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2002 (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
2003 (if (and (looking-at ignored-headers)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2004 (not (looking-at pmail-nonignored-headers)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2005 (goto-char lim)
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2006 (append-to-buffer pmail-view-buffer (point) lim)
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2007 (goto-char lim))))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2008 (t (error "No headers selected for display!"))))))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2009
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2010 (defun pmail-toggle-header (&optional arg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2011 "Show original message header if pruned header currently shown, or vice versa.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2012 With argument ARG, show the message header pruned if ARG is greater than zero;
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2013 otherwise, show it in full."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2014 (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
2015 (setq pmail-header-style
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2016 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2017 ((and (numberp arg) (> arg 0)) 'normal)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2018 ((eq pmail-header-style 'full) 'normal)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2019 (t 'full)))
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2020 (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
2021
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2022 ;; Lifted from repos-count-screen-lines.
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2023 ;; Return number of screen lines between START and END.
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2024 (defun pmail-count-screen-lines (start end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2025 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2026 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2027 (narrow-to-region start end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2028 (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
2029 (vertical-motion (- (point-max) (point-min))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2030
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2031 ;;;; *** Pmail Attributes and Keywords ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2032
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2033 (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
2034 "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
2035 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
2036 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
2037 (with-current-buffer pmail-buffer
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2038 (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
2039 (when (> msgnum 0)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2040 (let (msgbeg end)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2041 (setq msgbeg (pmail-msgbeg msgnum))
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2042 ;; 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
2043 (save-excursion
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2044 ;; ... 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
2045 (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
2046 (save-restriction
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2047 (widen)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2048 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2049 (goto-char msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2050 (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
2051 (if end
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2052 (progn
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2053 (narrow-to-region msgbeg end)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2054 (mail-fetch-field name))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2055 (pmail-error-bad-format msgnum)))))))))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2056
100437
3f79b3dad1ed * pmail.el (pmail-require-mime-maybe): Fix arguments of `display-warning'.
Juanma Barranquero <lekktu@gmail.com>
parents: 100435
diff changeset
2057
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2058 (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
2059 "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
2060 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
2061 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
2062 (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
2063 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
2064 (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
2065 (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
2066 (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
2067 result
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2068 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2069 ((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
2070 (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
2071 (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
2072 result))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2073
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2074 (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
2075 "Return the message keywords in a comma separated string.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2076 MSG, if set identifies the message number to use. The current
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2077 mail message will be used otherwise."
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2078 (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
2079
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2080 (defun pmail-display-labels ()
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2081 "Update the current messages's attributes and keywords in mode line."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2082 (let (blurb attr-names keywords)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2083 ;; Combine the message attributes and keywords
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2084 ;; 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
2085 (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
2086 keywords (pmail-get-keywords 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
2087 (setq blurb
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2088 (cond
100584
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
2089 ((and attr-names keywords) (concat " " attr-names ", " keywords))
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
2090 (attr-names (concat " " attr-names))
af07ce58a8d5 (pmail-add-header): Function deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 100581
diff changeset
2091 (keywords (concat " " 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
2092 (t "")))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2093 (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
2094 (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
2095 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
2096 ;; 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
2097 ;; `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
2098 (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
2099 (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
2100 (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
2101 (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
2102 (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
2103 (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
2104
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2105 (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
2106 "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
2107 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
2108 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
2109 (cond
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2110 ((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
2111 ((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
2112 (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
2113
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2114 (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
2115 "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
2116 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
2117 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
2118 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
2119 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
2120 (with-current-buffer pmail-buffer
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2121 (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
2122 (inhibit-read-only t)
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2123 limit
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2124 msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2125 (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
2126 (when (> msgnum 0)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2127 ;; 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
2128 ;; so update that too.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2129 (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
2130 (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
2131 (setq msgbeg (pmail-msgbeg msgnum))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2132
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2133 ;; 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
2134 (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
2135 (save-excursion
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2136 ;; ... 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
2137 (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
2138 (save-restriction
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2139 (widen)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2140 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2141 ;; 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
2142 (goto-char msgbeg)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2143 (save-excursion
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2144 (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
2145 (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
2146 ;; If this message already records attributes,
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2147 ;; just change the value for this one.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2148 (progn (forward-char attr)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2149 (when (/= value (char-after))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2150 (delete-char 1)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2151 (insert value)))
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2152 ;; Otherwise add a header line to record the attributes
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2153 ;; and set all but this one to nil.
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2154 (let ((header-value "-------"))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2155 (aset header-value attr value)
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2156 (goto-char (if limit (- limit 1) (point-max)))
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2157 (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
2158 (if (= msgnum pmail-current-message)
100648
f050468c100d (pmail-retried-attr-index, pmail-forwarded-attr-index):
Richard M. Stallman <rms@gnu.org>
parents: 100640
diff changeset
2159 (pmail-display-labels)))))))
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2160
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2161 (defun pmail-message-attr-p (msg attrs)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2162 "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
2163 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
2164 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2165 (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
2166 (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
2167 limit)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2168 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2169 (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
2170 (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
2171 (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
2172 (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
2173 (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
2174 (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
2175
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2176 (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
2177 "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
2178 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
2179 (pmail-message-attr-p msgnum "......U"))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2180
100224
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2181 ;; Return t if the attributes/keywords line of msg number MSG
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2182 ;; contains a match for the regexp LABELS.
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2183 (defun pmail-message-labels-p (msg labels)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2184 ;;;??? BROKEN
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2185 (error "pmail-message-labels-p has not been updated for Pmail")
100224
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2186 (save-excursion
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2187 (save-restriction
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2188 (widen)
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2189 (goto-char (pmail-msgbeg msg))
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2190 (forward-char 3)
eb0db38d20d1 (pmail-retry-failure): Remove call to non-existent function
Chong Yidong <cyd@stupidchicken.com>
parents: 100210
diff changeset
2191 (re-search-backward labels (prog1 (point) (end-of-line)) t))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2192
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2193 ;;;; *** 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
2194
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2195 ;; (defun pmail-get-collection-buffer ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2196 ;; "Return the buffer containing the mbox formatted messages."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2197 ;; (if (eq major-mode 'pmail-mode)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2198 ;; (if pmail-buffers-swapped-p
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2199 ;; pmail-view-buffer
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2200 ;; pmail-buffer)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2201 ;; (error "The current buffer must be in Pmail mode.")))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2202
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2203 (defun pmail-use-collection-buffer ()
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2204 "Insure that the Pmail buffer contains the message collection.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2205 Return the current message number if the Pmail buffer is in a
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2206 swapped state, i.e. it currently contains a single decoded
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2207 message rather than an entire message collection, nil otherwise."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2208 (let (result)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2209 (when (pmail-buffers-swapped-p)
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2210 (buffer-swap-text pmail-view-buffer)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2211 (setq buffer-swapped-with nil
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2212 result 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
2213 result))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2214
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2215 (defun pmail-use-viewer-buffer (&optional msgnum)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2216 "Insure that the Pmail buffer contains the current message.
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2217 If message MSGNUM is non-nil make it the current message and
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2218 display it. Return nil."
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2219 (let (result)
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2220 (cond
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2221 ((not (pmail-buffers-swapped-p))
98526
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2222 (let ((message (or msgnum 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
2223 (pmail-show-message message)))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2224 ((and msgnum (/= msgnum 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
2225 (pmail-show-message msgnum))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2226 (t))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2227 result))
276fe938ccc2 Next step in the Rmail/mbox support: getting basic summary support working.
Paul Reilly <pmr@pajato.com>
parents: 98313
diff changeset
2228
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2229 (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
2230 (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
2231
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2232 (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
2233 (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
2234
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2235 (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
2236 "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
2237 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
2238 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
2239 again afterward.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2240
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2241 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
2242 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
2243 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2244 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2245 (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
2246 (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
2247 (point-max))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2248 (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
2249 (funcall function))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2250 ;; 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
2251 ;; 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
2252 ;; 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
2253 (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
2254 (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
2255
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2256 (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
2257 (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
2258 (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
2259 (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
2260 (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
2261 (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
2262 (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
2263 (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
2264 (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
2265 (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
2266 (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
2267 (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
2268
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2269 (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
2270 (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
2271 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
2272 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
2273 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
2274 (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
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-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
2277 "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
2278 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
2279 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
2280 (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
2281 (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
2282 (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
2283 (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
2284 (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
2285 (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
2286 ;; 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
2287 ;; 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
2288 ;; 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
2289 (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
2290 (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
2291 (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
2292 (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
2293 (+ 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
2294 (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
2295 (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
2296 (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
2297 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
2298 (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
2299 (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
2300 (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
2301 (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
2302 (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
2303 (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
2304 ;; 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
2305 (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
2306 (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
2307 (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
2308 (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
2309 (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
2310 (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
2311
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2312 (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
2313 (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
2314 (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
2315 (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
2316 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2317 (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
2318 (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
2319 (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
2320 (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
2321 (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
2322 (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
2323 ;; 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
2324 (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
2325 (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
2326 ;; 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
2327 ;; 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
2328 ;; 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
2329 (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
2330 (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
2331 (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
2332
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2333 ;; 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
2334 (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
2335 (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
2336 (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
2337 (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
2338 (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
2339 (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
2340 (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
2341 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
2342 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
2343 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
2344 (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
2345 (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
2346 (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
2347 (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
2348 (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
2349
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2350
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2351 (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
2352 "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
2353 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
2354 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
2355 ;; 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
2356 ;; 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
2357 ;; 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
2358 ;; 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
2359 (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
2360 (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
2361 (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
2362 (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
2363 ?D
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2364 ?\ ) 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
2365
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2366 (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
2367 ;; 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
2368 (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
2369 (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
2370 (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
2371 (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
2372 (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
2373 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
2374 start (point))
100580
bdc51ab0f703 (pmail-get-new-mail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100437
diff changeset
2375 ;; 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
2376 (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
2377 (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
2378 ;; 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
2379 (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
2380 (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
2381 (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
2382 (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
2383 (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
2384 (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
2385 total-messages (1+ total-messages)))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2386
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2387 (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
2388 "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
2389 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2390 (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
2391 (list (function (lambda ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2392 (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
2393 (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
2394
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2395 (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
2396 "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
2397 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2398 (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
2399 (list (function (lambda ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2400 (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
2401 (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
2402 (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
2403
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2404 (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
2405 "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
2406 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
2407 (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
2408 (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
2409 (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
2410 (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
2411 (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
2412 (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
2413 ",[[: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
2414 (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
2415 (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
2416 (not
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2417 ;; 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
2418 (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
2419 (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
2420 (concat "^\\("
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2421 (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
2422 "\\($\\|@\\)\\|"
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2423 (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
2424 (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
2425 (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
2426 (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
2427 (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
2428 "\\>\\)"))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2429 addr))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2430 (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
2431 (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
2432 addr)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2433 (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
2434 (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
2435
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2436 (defun 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
2437 "Determine if the Pmail buffer is showing a message.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2438 If so restore the actual mbox message collection."
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2439 (with-current-buffer pmail-buffer
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2440 (when (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
2441 (buffer-swap-text pmail-view-buffer)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2442 (setq buffer-swapped-with nil))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2443
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2444 (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
2445 "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
2446 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
2447 (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
2448 (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
2449 (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
2450 (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
2451 (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
2452 (widen)
98789
e94744a9d7b1 (pmail): Remove a redundant message counter reset call; try to
Paul Reilly <pmr@pajato.com>
parents: 98707
diff changeset
2453 (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
2454 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
2455 (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
2456 (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
2457 (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
2458 (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
2459 (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
2460 (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
2461 (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
2462 (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
2463 (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
2464 ;; 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
2465 ;; 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
2466 ;; 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
2467 ;; 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
2468 ;; 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
2469 (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
2470 (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
2471 (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
2472 (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
2473 (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
2474 (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
2475 (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
2476 (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
2477
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2478 (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
2479 "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
2480 (save-excursion
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2481 (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
2482 (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
2483 ;; 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
2484 ;; (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
2485 ;; 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
2486 (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
2487 (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
2488
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2489 (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
2490 "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
2491 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
2492 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
2493 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
2494 (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
2495 (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
2496 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
2497 (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
2498 (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
2499 (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
2500 (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
2501 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
2502 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
2503 ((> 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
2504 (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
2505 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
2506 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
2507 (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
2508 (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
2509 ;; 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
2510 ;; 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
2511 (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
2512 (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
2513 (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
2514 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
2515 (widen)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2516 (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
2517 (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
2518 (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
2519 (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
2520 (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
2521 (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
2522 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
2523 coding-system (pmail-get-coding-system))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2524 (widen)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2525 (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
2526 ;; 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
2527 ;; 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
2528 ;; place.
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-view-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2530 (erase-buffer))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2531 (with-temp-buffer
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2532 (set-buffer-multibyte nil)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2533 (insert-buffer-substring mbox-buf body-start end)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2534 (cond
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2535 ((string= character-coding "quoted-printable")
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2536 (mail-unquote-printable-region (point-min) (point-max)))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2537 ((and (string= character-coding "base64") 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
2538 (base64-decode-region (point-min) (point-max)))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2539 ((eq character-coding 'uuencode)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2540 (error "Not supported yet."))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2541 (t))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2542 (pmail-decode-region (point-min) (point-max) coding-system view-buf))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2543 ;; 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
2544 (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
2545 (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
2546 (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
2547 ;; 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
2548 ;; 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
2549 ;; 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
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 (insert "\n")
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2552 (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
2553 (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
2554 ;(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
2555 ;(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
2556 )
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2557 ;; 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
2558 ;; 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
2559 (pmail-display-labels)
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2560 (buffer-swap-text pmail-view-buffer)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2561 (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
2562 (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
2563 blurb))
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2564
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2565 ;; 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
2566 (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
2567 ;; 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
2568 (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
2569 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
2570 (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
2571 (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
2572 (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
2573 (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
2574 (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
2575 (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
2576 ;; 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
2577 ;; 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
2578 (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
2579 (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
2580 '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
2581 ;; 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
2582 (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
2583 (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
2584 (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
2585 (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
2586 (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
2587 overlay)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2588 (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
2589 (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
2590 ;; 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
2591 (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
2592 (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
2593 (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
2594 (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
2595 ;; 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
2596 (progn
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2597 (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
2598 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
2599 (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
2600 (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
2601 ;; 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
2602 ;; 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
2603 (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
2604 (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
2605 (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
2606 (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
2607
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2608 (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
2609 "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
2610 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
2611 (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
2612 (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
2613 (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
2614 (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
2615 ;; 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
2616 ;; 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
2617 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2618 ;; 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
2619 (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
2620 (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
2621 (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
2622 (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
2623 (directive-loop nil)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2624 (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
2625 (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
2626 (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
2627 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
2628 (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
2629 (let ((f (cond
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2630 ((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
2631 ((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
2632 ((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
2633 (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
2634 (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
2635 (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
2636 ;; 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
2637 (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
2638 (if (null folder)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2639 (pmail-delete-forward)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2640 (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
2641 (pmail-delete-message)
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
2642 (pmail-output-to-babyl-file 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
2643 (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
2644 (setq d (cdr d))))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2645
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2646 (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
2647 "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
2648 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
2649 (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
2650 (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
2651 (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
2652 (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
2653
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2654 (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
2655 "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
2656 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
2657 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2658 (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
2659
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2660 (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
2661 "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
2662 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
2663 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
2664
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2665 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
2666 (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
2667 (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
2668 (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
2669 (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
2670 (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
2671 (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
2672 (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
2673 (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
2674 (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
2675 (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
2676 (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
2677 (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
2678 (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
2679 (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
2680 (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
2681 t)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2682 (if (< n 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2683 (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
2684 (if (> n 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2685 (message "No following nondeleted message"))
100581
a9602a27b979 (pmail-expunge-and-save): Call pmail-swap-buffers-maybe before
Chong Yidong <cyd@stupidchicken.com>
parents: 100580
diff changeset
2686 (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
2687 nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2688
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2689 (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
2690 "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
2691 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
2692 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
2693 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2694 (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
2695
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2696 (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
2697 "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
2698 (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
2699 (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
2700 (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
2701
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2702 (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
2703 "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
2704 (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
2705 (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
2706 (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
2707
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2708 (defun pmail-what-message ()
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2709 (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
2710 (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
2711 (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
2712 (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
2713 (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
2714 (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
2715 (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
2716 (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
2717 (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
2718 (if (>= where (pmail-msgbeg high)) high low)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2719
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2720 (defun pmail-message-recipients-p (msg recipients &optional primary-only)
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2721 ;;;??? BROKEN
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2722 (error "pmail-message-recipients-p has not been updated for Pmail")
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2723 (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
2724 (goto-char (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
2725 (search-forward "\n*** EOOH ***\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2726 (narrow-to-region (point) (progn (search-forward "\n\n") (point)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2727 (or (string-match recipients (or (mail-fetch-field "To") ""))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2728 (string-match recipients (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
2729 (if (not primary-only)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2730 (string-match recipients (or (mail-fetch-field "Cc") ""))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2731
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2732 (defun pmail-message-regexp-p (n regexp)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2733 "Return t, if for message number N, regexp REGEXP matches in the header."
100654
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2734 ;;;??? BROKEN
2fedbb810d01 (pmail-display-labels): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 100648
diff changeset
2735 (error "pmail-message-regexp-p has not been updated for 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
2736 (let ((beg (pmail-msgbeg n))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2737 (end (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
2738 (goto-char beg)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2739 (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
2740 (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
2741 (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
2742 (if (prog1 (= (following-char) ?0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2743 (forward-line 2)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2744 ;; If there's a Summary-line in the (otherwise empty)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2745 ;; header, we didn't yet get past the EOOH line.
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2746 (when (looking-at "^\\*\\*\\* EOOH \\*\\*\\*\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2747 (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
2748 (setq 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
2749 (narrow-to-region (point) end))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2750 (progn
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2751 (rfc822-goto-eoh)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2752 (setq end (point)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2753 (setq 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
2754 (search-forward "\n*** EOOH ***\n" end t)
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 end (1+ (match-beginning 0)))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2756 (goto-char beg)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2757 (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
2758 (funcall pmail-search-mime-header-function n regexp end)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2759 (re-search-forward regexp end t)))))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2760
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2761 (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
2762 "Return non-nil, if for message number MSG, regexp REGEXP matches."
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2763 (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
2764 (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
2765 (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
2766 (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
2767
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2768 (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
2769 (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
2770 "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
2771 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
2772 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
2773 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
2774 (interactive
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2775 (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
2776 (prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2777 (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
2778 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2779 (setq prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2780 (concat prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2781 (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
2782 (concat ", default "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2783 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
2784 "): ")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2785 (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
2786 (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
2787 (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
2788 ((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
2789 (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
2790 (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
2791 (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
2792 (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
2793 (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
2794 (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
2795 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2796 (set-buffer pmail-buffer)
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2797 (let ((orig-message pmail-current-message)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2798 (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
2799 (reversep (< n 0))
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
2800 (opoint (if (pmail-buffers-swapped-p) (point)))
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2801 found)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2802 (pmail-swap-buffers-maybe)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2803 (pmail-maybe-set-message-counters)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2804 (widen)
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2805 (unwind-protect
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2806 (while (/= n 0)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2807 ;; 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
2808 ;; down but searching forward through each message.
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2809 (if reversep
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2810 (while (and (null found) (> msg 1))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2811 (setq msg (1- msg)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2812 found (pmail-search-message msg regexp)))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2813 (while (and (null found) (< msg pmail-total-messages))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2814 (setq msg (1+ msg)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2815 found (pmail-search-message msg regexp))))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2816 (setq n (+ n (if reversep 1 -1))))
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2817 (if found
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2818 (progn
98313
c7eef45e0d32 First pass at handling decoding the mbox message into the view buffer.
Paul Reilly <pmr@pajato.com>
parents: 98182
diff changeset
2819 (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
2820 ;; 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
2821 ;; (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
2822 ;; 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
2823 ;; 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
2824 ;; 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
2825 ;; portion.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2826 (if reversep
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2827 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2828 (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
2829 (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
2830 (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
2831 (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
2832 (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
2833 (if reversep "Reverse " "")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2834 regexp))
100433
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2835 (pmail-show-message-maybe orig-message)
9c48475923d7 (pmail): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100379
diff changeset
2836 (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
2837 (ding)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2838 (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
2839
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2840 (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
2841 "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
2842 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
2843 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
2844 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
2845 (interactive
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2846 (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
2847 (prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2848 (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
2849 regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2850 (setq prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2851 (concat prompt
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2852 (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
2853 (concat ", default "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2854 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
2855 "): ")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2856 (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
2857 (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
2858 (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
2859 ((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
2860 (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
2861 (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
2862 (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
2863 (pmail-search regexp (- (or n 1))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2864
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2865
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2866 (defun 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
2867 "Return the message index for the first message which has the
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2868 `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
2869 (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
2870 (let ((current 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2871 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
2872 (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
2873 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2874 (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
2875 (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
2876 (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
2877 (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
2878 found))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2879
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2880 (defun pmail-current-subject ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2881 "Return the current subject.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2882 The subject is stripped of leading and trailing whitespace, and
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2883 of typical reply prefixes such as Re:."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2884 (let ((subject (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
2885 (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
2886 (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
2887 (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
2888 (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
2889 (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
2890 (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
2891 subject))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2892
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2893 (defun pmail-current-subject-regexp ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2894 "Return a regular expression matching the current subject.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2895 The regular expression matches the subject header line of
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2896 messages about the same subject. The subject itself is stripped
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2897 of leading and trailing whitespace, of typical reply prefixes
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2898 such as Re: and whitespace within the subject is replaced by a
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2899 regular expression matching whitespace in general in order to
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2900 take into account that subject header lines may include newlines
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2901 and more whitespace. The returned regular expressions contains
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2902 `pmail-reply-regexp' and ends with a newline."
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2903 (let ((subject (pmail-current-subject)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2904 ;; If Subject is long, mailers will break it into several lines at
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2905 ;; arbitrary places, so replace whitespace with a regexp that will
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2906 ;; match any sequence of spaces, TABs, and newlines.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2907 (setq subject (regexp-quote subject))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2908 (setq subject
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2909 (replace-regexp-in-string "[ \t\n]+" "[ \t\n]+" subject t t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2910 ;; Some mailers insert extra spaces after "Subject:", so allow any
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2911 ;; amount of them.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2912 (concat "^Subject:[ \t]+"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2913 (if (string= "\\`" (substring pmail-reply-regexp 0 2))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2914 (substring pmail-reply-regexp 2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2915 pmail-reply-regexp)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2916 subject "[ \t]*\n")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2917
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2918 (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
2919 "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
2920 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
2921 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
2922 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2923 (let ((search-regexp (pmail-current-subject-regexp))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2924 (forward (> n 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2925 (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
2926 (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
2927 found)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2928 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2929 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2930 (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
2931 (while (and (/= n 0)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2932 (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
2933 (< 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
2934 (> i 1)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2935 (let (done)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2936 (while (and (not done)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2937 (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
2938 (< 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
2939 (> i 1)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2940 (setq i (if forward (1+ 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
2941 (goto-char (pmail-msgbeg i))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2942 (search-forward "\n*** EOOH ***\n")
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2943 (let ((beg (point)) end)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2944 (search-forward "\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
2945 (setq end (point))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2946 (goto-char beg)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2947 (setq done (re-search-forward search-regexp end t))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2948 (if done (setq found i)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2949 (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
2950 (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
2951 (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
2952 (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
2953 (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
2954
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2955 (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
2956 "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
2957 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
2958 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
2959 (interactive "p")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2960 (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
2961
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2962 ;;;; *** 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
2963
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2964 (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
2965 (= (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
2966
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
2967 (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
2968 (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
2969
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2970 (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
2971 "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
2972 (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
2973 (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
2974 (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
2975
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2976 (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
2977 "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
2978 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2979 (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
2980 (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
2981 (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
2982 (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
2983 (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
2984 (if (= msg 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2985 (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
2986 (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
2987 (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
2988 (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
2989 (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
2990 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2991 (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
2992 (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
2993 (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
2994
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2995 (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
2996 "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
2997 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
2998 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
2999
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3000 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
3001 (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
3002 (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
3003 (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
3004 (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
3005 (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
3006 (pmail-select-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3007 (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
3008 (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
3009 (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
3010
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3011 (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
3012 "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
3013 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
3014 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3015 (pmail-delete-forward t))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3016
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3017 ;; 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
3018 ;; 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
3019 ;; 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
3020 ;; 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
3021 (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
3022 (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
3023 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3024 (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
3025 (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
3026 (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
3027 (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
3028 (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
3029 (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
3030 newnum)))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3031
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3032 (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
3033 "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
3034 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
3035 (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
3036 (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
3037 (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
3038 (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
3039 (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
3040 "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
3041
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3042 (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
3043 "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
3044 (interactive)
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3045 (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
3046 (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
3047 (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
3048 ;; 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
3049 (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
3050 (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
3051 (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
3052 (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
3053 (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
3054 (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
3055 (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
3056 0
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3057 (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
3058 (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
3059 (- (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
3060 (- (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
3061 (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
3062 (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
3063 ;; 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
3064 (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
3065 (win))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3066 (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
3067 (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
3068 (widen)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3069 (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
3070 (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
3071 (number 1)
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3072 new-summary
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3073 (new-msgref (list (list 0)))
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3074 (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
3075 (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
3076 (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
3077 (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
3078 (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
3079 (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
3080 (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
3081 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
3082 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
3083 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
3084 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
3085
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3086 (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
3087 (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
3088 (progn
100290
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3089 (delete-region (aref messages number)
eb90f68074a8 (pmail-only-expunge): Swap buffers at the beginning.
Chong Yidong <cyd@stupidchicken.com>
parents: 100255
diff changeset
3090 (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
3091 (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
3092 (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
3093 (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
3094 (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
3095 (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
3096 (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
3097 (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
3098 (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
3099 (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
3100 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
3101 (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
3102 (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
3103 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
3104 (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
3105 (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
3106 (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
3107 (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
3108 (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
3109 (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
3110 (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
3111 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
3112 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
3113 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
3114 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
3115 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
3116 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
3117 (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
3118 (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
3119 (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
3120 (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
3121 (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
3122 (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
3123 (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
3124 (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
3125
100297
0a269d00caef (pmail-expunge): Pass new optional arg to pmail-only-expunge.
Chong Yidong <cyd@stupidchicken.com>
parents: 100290
diff changeset
3126 (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
3127 "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
3128 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3129 (when (pmail-expunge-confirmed)
100435
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3130 (let ((old-total pmail-total-messages)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3131 (opoint (with-current-buffer pmail-buffer
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
3132 (when (pmail-buffers-swapped-p)
100435
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3133 (point)))))
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3134 (pmail-only-expunge dont-show)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3135 (if (pmail-summary-exists)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3136 (pmail-select-summary (pmail-update-summary))
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3137 (pmail-show-message pmail-current-message)
52f6ee5edde1 (pmail-search): Call pmail-swap-buffers-maybe.
Chong Yidong <cyd@stupidchicken.com>
parents: 100433
diff changeset
3138 (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
3139 (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
3140
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3141 ;;;; *** Pmail Mailing Commands ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3142
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3143 (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
3144 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
3145 (let (yank-action)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3146 (if replybuffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3147 (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
3148 (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
3149 (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
3150 (if same-window
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3151 (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
3152 noerase nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3153 yank-action sendactions)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3154 (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
3155 (prog1
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3156 (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
3157 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
3158 yank-action sendactions)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3159 ;; 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
3160 ;; 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
3161 (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
3162 '((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
3163 (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
3164 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
3165 yank-action sendactions)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3166
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3167 (defun pmail-mail ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3168 "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
3169 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
3170 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
3171 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3172 (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
3173
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3174 (defun pmail-continue ()
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3175 "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
3176 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3177 (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
3178
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3179 (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
3180 "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
3181 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
3182 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
3183 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
3184 (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
3185 (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
3186 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
3187 (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
3188 (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
3189 (save-restriction
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3190 (widen)
100640
40652147be0c (pmail-swap-buffers-maybe): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 100630
diff changeset
3191 (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
3192 (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
3193 (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
3194 (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
3195 (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
3196 (forward-line 1)
100342
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3197 (narrow-to-region
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3198 (point)
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3199 (search-forward "\n\n"
160964e45356 (pmail-perm-variables): Don't call pmail-parse-file-inboxes.
Chong Yidong <cyd@stupidchicken.com>
parents: 100340
diff changeset
3200 (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
3201 '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
3202 (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
3203 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
3204 (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
3205 from)
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3206 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
3207 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
3208 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
3209 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
3210 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
3211 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
3212 (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
3213 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
3214 ;;; 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
3215 ;;; 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
3216 ;;; 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
3217 )
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3218 (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
3219 (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
3220 ;; 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
3221 ;; 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
3222 (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
3223 (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
3224 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
3225
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3226 ;; 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
3227 (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
3228 (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
3229 (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
3230 (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
3231 (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
3232 (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
3233 (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
3234 (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
3235 ;; 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
3236 (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
3237 (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
3238 (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
3239 (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
3240 (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
3241 (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
3242 subject))))
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3243 (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
3244 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3245 ;; 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
3246 ;; 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
3247 ;; 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
3248 ;; 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
3249 ;;; (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
3250 ;; 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
3251 ;; 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
3252 ;; 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
3253 (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
3254 (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
3255 subject
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3256 (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
3257 (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
3258 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3259 ;; 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
3260 ;; 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
3261 (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
3262 (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
3263 (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
3264 (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
3265 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
3266 (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
3267 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
3268 (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
3269 (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
3270 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
3271 nil
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3272 (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
3273 " " 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
3274
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3275 (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
3276 "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
3277 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
3278 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
3279 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
3280 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3281 (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
3282 (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
3283 (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
3284
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3285 (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
3286 (cond ((not from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3287 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3288 message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3289 nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3290 (mail-use-rfc822
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3291 (require 'rfc822)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3292 (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
3293 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3294 (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
3295 (string-match
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3296 (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
3297 (substring tem 0
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3298 (match-beginning 0))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3299 tem))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3300 message-id))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3301 ;; 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
3302 message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3303 (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
3304 ;; 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
3305 (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
3306 (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
3307 (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
3308 ;; 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
3309 (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
3310 (if date
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3311 (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
3312 field)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3313 ((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
3314 (bar "[^][\000-\037()<>@,;:\\\"]+"))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3315 ;; 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
3316 (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
3317 "\\)\\(<" foo "@" foo ">\\)?[ \t]*\\'")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3318 ;; "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
3319 from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3320 (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
3321 bar "\\))[ \t]*\\'")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3322 ;; "<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
3323 from)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3324 (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
3325 (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
3326 ;; 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
3327 (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
3328 (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
3329 (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
3330 (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
3331 (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
3332 (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
3333 (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
3334 (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
3335 (if message-id
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3336 ;; "<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
3337 (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
3338 field))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3339 (t
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3340 ;; 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
3341 (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
3342 (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
3343
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3344 (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
3345 "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
3346 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
3347 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
3348 (interactive "P")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3349 (if resend
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3350 (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
3351 (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
3352 (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
3353 (subject (concat "["
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3354 (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
3355 (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
3356 (if from
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3357 (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
3358 ""))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3359 (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
3360 "]")))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3361 (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
3362 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
3363 (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
3364 forward-buffer
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3365 (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
3366 (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
3367 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
3368 ;; 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
3369 ;; 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
3370 ;; 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
3371 ;; 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
3372 (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
3373 ;; 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
3374 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3375 ;; 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
3376 (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
3377 (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
3378 (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
3379 forward-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3380 (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
3381 ;; 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
3382 (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
3383 (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
3384 (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
3385 (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
3386 (goto-char beg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3387 (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
3388 (beginning-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3389 (insert "- ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3390 (forward-line 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3391 (goto-char end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3392 (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
3393 (if (< (point) end)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3394 (forward-char 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3395 (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
3396 (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
3397 (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
3398 (push-mark))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3399
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3400 (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
3401 "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
3402 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
3403 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
3404
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3405 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
3406 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
3407 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
3408 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
3409 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
3410 (interactive "sResend to: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3411 (require 'sendmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3412 (require 'mailalias)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3413 (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
3414 (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
3415 (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
3416 (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
3417 (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
3418 (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
3419 (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
3420 (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
3421 (mailbuf pmail-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3422 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3423 (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
3424 ;;>> 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
3425 (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
3426 (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
3427 (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
3428 (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
3429 ;; 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
3430 ; 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
3431 (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
3432 ; 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
3433 ; 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
3434 (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
3435 (let (beg)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3436 (setq beg (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3437 (forward-line 1)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3438 (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
3439 (forward-line 1))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3440 (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
3441 ; 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
3442 ; are inserted there.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3443 (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
3444 ;;>> Insert resent-from:
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3445 (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
3446 (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
3447 ;;>> 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
3448 (let ((before (point)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3449 (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
3450 (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
3451 (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
3452 address
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3453 (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
3454 "\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3455 ;; 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
3456 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3457 (if (featurep 'mailabbrev)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3458 (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
3459 (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
3460 (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
3461 (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
3462 (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
3463 (build-mail-abbrevs))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3464 (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
3465 (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
3466 (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
3467 (goto-char before)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3468 (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
3469 (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
3470 (<= (point) end)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3471 (expand-abbrev))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3472 (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
3473 (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
3474 ;;>> 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
3475 (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
3476 (let ((before (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3477 after)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3478 (insert comment)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3479 (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
3480 (setq after (point))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3481 (goto-char before)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3482 (while (< (point) after)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3483 (insert "Resent-Comment: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3484 (forward-line 1))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3485 ;; 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
3486 ;; 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
3487 (let (mail-aliases)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3488 (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
3489 (kill-buffer tembuf))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3490 (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
3491 (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
3492
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3493 (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
3494 (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
3495 "^ *---+ +Returned message +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3496 "^ *---+ *Returned mail follows *---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3497 "^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
3498 "^---+ 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
3499 "^ *---+ +Original message +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3500 "^ *--+ +begin message +--+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3501 "^ *---+ +Original message follows +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3502 "^ *---+ +Your message follows +---+ *$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3503 "^|? *---+ +Message text follows: +---+ *|?$\\|"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3504 "^ *---+ +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
3505 "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
3506
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3507 (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
3508 "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
3509
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3510 (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
3511 "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
3512 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
3513 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
3514 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
3515 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
3516 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
3517 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
3518 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
3519 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
3520 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3521 (require 'mail-utils)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3522 (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
3523 (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
3524 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
3525 ;; 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
3526 ;; 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
3527 (content-type
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3528 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3529 (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
3530 (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
3531 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3532 (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
3533 (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
3534 (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
3535 (string-match
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3536 ";[\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
3537 content-type))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3538 ;; 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
3539 (let ((codestring
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3540 (concat "\n--"
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3541 (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
3542 (match-end 1)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3543 (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
3544 (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
3545 (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
3546 (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
3547 (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
3548 (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
3549 (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
3550 (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
3551 ;; Non-MIME bounce.
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3552 (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
3553 (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
3554 (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
3555 ;; 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
3556 ;; 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
3557 ;; `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
3558 (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
3559 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3560 (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
3561 (skip-chars-forward " ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3562 (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
3563 (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
3564 (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
3565 (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
3566 ;; 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
3567 ;; 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
3568 ;; 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
3569 ;; 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
3570 ;; 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
3571 ;; 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
3572 (if (looking-at "^--")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3573 (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
3574 (point)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3575 (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
3576 (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
3577 (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
3578 (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
3579 (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
3580 (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
3581 (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
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 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
3584 (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
3585 (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
3586 ;; 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
3587 ;; 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
3588 ;; 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
3589 ;; 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
3590 (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
3591 (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
3592 (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
3593 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
3594 (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
3595 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
3596 ;; 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
3597 ;; 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
3598 ;; 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
3599 (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
3600 pmail-displayed-headers
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3601 pmail-ignored-headers)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3602 (erase-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3603 (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
3604 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
3605 (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
3606 (if bounce-indent
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3607 (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
3608 (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
3609 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3610 (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
3611 (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
3612 (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
3613 (if resending
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3614 (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
3615 (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
3616 (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
3617 (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
3618
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3619 (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
3620 "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
3621 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
3622 (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
3623 pmail-summary-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3624
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3625 (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
3626 "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
3627 (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
3628
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3629 (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
3630 "*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
3631 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
3632 :type 'boolean
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3633 :group 'pmail-summary)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3634
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3635 (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
3636 "*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
3637 :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
3638 :group 'pmail-summary)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3639
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3640 ;; 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
3641 (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
3642 (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
3643 window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3644 ;; 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
3645 (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
3646 pmail-redisplay-summary
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3647 (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
3648 ;; 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
3649 (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
3650 (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
3651 (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
3652 (raise-frame frame))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3653 (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
3654 ;; 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
3655 (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
3656 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
3657 (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
3658 ;; 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
3659 (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
3660 (unwind-protect
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3661 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3662 (select-window window)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3663 (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
3664 (select-window selected)))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3665
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3666 ;;;; *** Pmail Local Fontification ***
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3667
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3668 (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
3669 ;; 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
3670 (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
3671 ;; 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
3672 (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
3673 ;; 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
3674 (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
3675
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3676 (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
3677 ;; 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
3678 (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
3679 (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
3680 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
3681 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
3682 (save-restriction
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3683 (widen)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3684 (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
3685 (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
3686 (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
3687 (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
3688
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3689 (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
3690 ;; 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
3691 (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
3692 (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
3693 (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
3694 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
3695 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
3696 (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
3697 (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
3698 (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
3699 (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
3700 (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
3701
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3702 ;;; 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
3703 (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
3704
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3705 (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
3706 "*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
3707 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
3708 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
3709
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3710 (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
3711 "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
3712
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3713 (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
3714 "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
3715
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3716 (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
3717 "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
3718 (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
3719 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3720 (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
3721
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3722 (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
3723 (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
3724 (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
3725 (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
3726 '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
3727
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3728 (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
3729 '(["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
3730 ["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
3731 (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
3732 (looking-at "<M> "))])
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3733 "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
3734
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3735 ;; 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
3736 (if (featurep 'speedbar)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3737 (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
3738 (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
3739
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3740 (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
3741 "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
3742 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
3743 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
3744 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
3745 (let ((from nil))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3746 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3747 (set-buffer buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3748 (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
3749 (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
3750 (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
3751 (setq from t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3752 (if from
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3753 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3754 (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
3755 (end-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3756 (point))))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3757 (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
3758 (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
3759 (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
3760 nil
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3761 (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
3762 (erase-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3763 (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
3764 (if (stringp from)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3765 (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
3766 '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
3767 (insert "Folders:\n")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3768 (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
3769 (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
3770 default-directory)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3771 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
3772 (while df
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3773 (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
3774 '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
3775 (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
3776 '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
3777 (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
3778
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3779 (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
3780 "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
3781 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
3782 (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
3783 (funcall token t)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3784
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3785 (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
3786 "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
3787 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
3788 (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
3789 (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
3790 (find-file text)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3791
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3792 (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
3793 "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
3794 (interactive)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3795 (save-excursion
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3796 (beginning-of-line)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3797 (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
3798 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3799 (forward-char -2)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3800 (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
3801
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3802 (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
3803 "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
3804 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
3805 (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
3806 (message "Moving message to %s" token)
100379
41ff1c784cee All callers to pmail-output-to-pmail-file changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 100342
diff changeset
3807 (pmail-output-to-babyl-file token)))
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3808
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3809 ; 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
3810 ; 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
3811 ; 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
3812 ; 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
3813
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3814 ;;;###autoload
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3815 (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
3816 "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
3817 (interactive "sPassword: ")
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3818 (if password
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3819 (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
3820 (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
3821 (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
3822 (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
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-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
3825 "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
3826 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
3827 (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
3828 (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
3829 (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
3830 (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
3831 "IMAP password: "
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3832 "POP password: "))))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3833 (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
3834 (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
3835 (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
3836
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3837 (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
3838 (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
3839
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3840 (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
3841 "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
3842 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
3843 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
3844 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
3845 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
3846 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
3847 (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
3848 (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
3849 (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
3850 (while (< i len)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3851 (if (= curmask 0)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3852 (setq curmask mask))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3853 (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
3854 (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
3855 (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
3856 (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
3857 (concat string-vector)))
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 ;;;; Desktop support
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3860
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3861 (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
3862 desktop-buffer-name
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3863 desktop-buffer-misc)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3864 "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
3865 (condition-case error
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3866 (progn
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3867 (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
3868 (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
3869 (current-buffer)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3870 pmail-buffer))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3871 (file-locked
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3872 (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
3873 nil)))
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3874
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3875 (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
3876 '(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
3877
98182
19ec1646fe6c The Rmail/mbox merge has been abandoned in favor of a restart using
Paul Reilly <pmr@pajato.com>
parents: 98051
diff changeset
3878
97528
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3879 (provide 'pmail)
184bb2071e3f mail/: Add new (temporary) libaries for which to test Rmail/mbox such
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
3880
98019
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3881 ;; Local Variables:
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3882 ;; 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
3883 ;; End:
72564311fb7b Add local variable setting for change-log-default-name.
Glenn Morris <rgm@gnu.org>
parents: 98013
diff changeset
3884
97534
4d30ed7d18e3 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 97533
diff changeset
3885 ;; 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
3886 ;;; pmail.el ends here