0
|
1 ;;; VM user and internal variable initialization
|
20
|
2 ;;; Copyright (C) 1989-1997 Kyle E. Jones
|
0
|
3 ;;;
|
|
4 ;;; This program is free software; you can redistribute it and/or modify
|
|
5 ;;; it under the terms of the GNU General Public License as published by
|
|
6 ;;; the Free Software Foundation; either version 1, or (at your option)
|
|
7 ;;; any later version.
|
|
8 ;;;
|
|
9 ;;; This program is distributed in the hope that it will be useful,
|
|
10 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12 ;;; GNU General Public License for more details.
|
|
13 ;;;
|
|
14 ;;; You should have received a copy of the GNU General Public License
|
|
15 ;;; along with this program; if not, write to the Free Software
|
|
16 ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
17
|
|
18 (provide 'vm-vars)
|
|
19
|
|
20 (defvar vm-init-file "~/.vm"
|
|
21 "*Startup file for VM that is loaded the first time you run VM
|
|
22 in an Emacs session.")
|
|
23
|
20
|
24 (defvar vm-preferences-file "~/.vm.preferences"
|
0
|
25 "*Secondary startup file for VM, loaded after vm-init-file.
|
|
26 This file is written and overwritten by VM and is not meant for
|
20
|
27 users to edit directly.")
|
0
|
28
|
|
29 (defvar vm-primary-inbox "~/INBOX"
|
|
30 "*Mail is moved from the system mailbox to this file for reading.")
|
|
31
|
|
32 (defvar vm-crash-box "~/INBOX.CRASH"
|
|
33 "*File in which to store mail temporarily while it is transferred from
|
|
34 the system mailbox to the primary inbox. If a crash occurs
|
|
35 during this mail transfer, any missing mail will be found in this
|
|
36 file. VM will do crash recovery from this file automatically at
|
|
37 startup, as necessary.")
|
|
38
|
|
39 (defvar vm-keep-crash-boxes nil
|
|
40 "*Non-nil value should be a string specifying a directory where
|
|
41 your crash boxes should be moved after VM has copied new mail
|
|
42 out of them. This is a safety measure. In at least one case a
|
|
43 pointer corruption bug inside Emacs has caused VM to believe that
|
|
44 it had copied information out of the crash box when it in fact
|
|
45 had not. VM then deleted the crash box, losing the batch of
|
|
46 incoming mail. This is an exceedingly rare problem, but if you
|
|
47 want to avoid losing mail if it happens, set vm-keep-crash-boxes
|
|
48 to point to a directory in the same filesystem as all your
|
|
49 crash boxes. Each saved crash box will have a unique name based
|
|
50 on the current date and time the box was saved. You will need to
|
|
51 clean out this directory from time to time; VM does not do so.
|
|
52
|
|
53 A nil value means VM should just delete crash boxes after it
|
|
54 has copied out the mail.")
|
|
55
|
|
56 ;; use this function to access vm-spool-files on the fly. this
|
|
57 ;; allows us to use environmental variables without setting
|
|
58 ;; vm-spool-files at load time and thereby making it hard to dump an
|
|
59 ;; Emacs containing a preloaded VM.
|
|
60 (defun vm-spool-files ()
|
|
61 (or vm-spool-files
|
|
62 (and (setq vm-spool-files (getenv "MAILPATH"))
|
|
63 (setq vm-spool-files
|
|
64 (vm-parse vm-spool-files
|
|
65 "\\([^:%?]+\\)\\([%?][^:]*\\)?\\(:\\|$\\)")))
|
|
66 (and (setq vm-spool-files (getenv "MAIL"))
|
|
67 (setq vm-spool-files (list vm-spool-files)))))
|
|
68
|
|
69 (defvar vm-spool-files nil
|
|
70 "*If non-nil this variable's value should be a list of strings
|
|
71 or a list of lists.
|
|
72
|
|
73 If the value is a list of strings, the strings should name files
|
|
74 that VM will check for incoming mail instead of the default place
|
|
75 VM thinks your system mailbox is. Mail will be moved from these
|
|
76 mailboxes to your primary inbox as specified by vm-primary-inbox,
|
|
77 using vm-crash-box as a waystation.
|
|
78
|
|
79 If the value is a list of lists, each sublist should be of the form
|
|
80
|
|
81 (INBOX SPOOLNAME CRASHBOX)
|
|
82
|
|
83 INBOX, SPOOLNAME and CRASHBOX are all strings.
|
|
84
|
|
85 INBOX is the folder where you want your new mail to be moved when
|
|
86 you type 'g' (running vm-get-new-mail) in VM. It is where you
|
|
87 will read the mail.
|
|
88
|
|
89 SPOOLNAME is where the mail system leaves your incoming mail,
|
|
90 e.g. /var/spool/mail/kyle. It can also be a POP maildrop,
|
|
91 provided it can be matched by the value of vm-recognize-pop-maildrops.
|
|
92
|
|
93 A POP maildrop specification has the following format:
|
|
94
|
|
95 \"HOST:PORT:AUTH:USER:PASSWORD\"
|
|
96
|
|
97 HOST is the host name of the POP server
|
|
98 PORT is the TCP port number to connect to (should normally be 110).
|
|
99 USER is the user name sent to the server.
|
|
100 PASSWORD is the secret shared by you and the server for
|
|
101 authentication purposes. How is it used depends on the value of
|
|
102 the AUTH parameter. If the PASSWORD is \"*\", VM will prompt
|
|
103 you for the password the first time you try to retrieve mail from
|
|
104 maildrop. If the password is valid, VM will not ask you for the
|
|
105 password again during this Emacs session.
|
|
106
|
|
107 AUTH is the authentication method used to convince the server you
|
|
108 should have access to the maildrop. Acceptable values are
|
|
109 \"pass\", \"rpop\" and \"apop\". For \"pass\", the PASSWORD is sent to
|
|
110 the server with the POP PASS command. For \"rpop\", the PASSWORD
|
|
111 should be the string to be sent to the server via the RPOP
|
|
112 command. In this case the string is not really a secret;
|
|
113 authentication is done by other means. For \"apop\", an MD5 digest
|
|
114 of the PASSWORD appended to the server timestamp will be sent to
|
|
115 the server with the APOP command. In order to use \"apop\" you
|
|
116 will have to set the value of vm-pop-md5-program appropriately to
|
|
117 point at the program that will generate the MD5 digest that VM
|
|
118 needs.
|
|
119
|
|
120 CRASHBOX is the temporary file that VM uses to store mail in
|
|
121 between the SPOOLNAME and the INBOX. If the system crashes or
|
|
122 Emacs dies while mail is being moved, and the new mail is not in
|
|
123 the SPOOLNAME or the INBOX, then it will be in the CRASHBOX.
|
|
124
|
|
125 There can be multiple entries with the same INBOX value, but a
|
|
126 particular SPOOLNAME should appear only once. CRASHBOXes should
|
|
127 not be shared among different INBOXes, but you can use the same
|
|
128 CRASHBOX/INBOX pair with a different SPOOLNAME.
|
|
129
|
|
130 NOTE: The values of vm-primary-inbox and vm-crash-box are ignored
|
|
131 when getting new mail if vm-spool-files is a list of lists.
|
|
132
|
|
133 vm-spool-files will default to the value of the shell
|
|
134 environmental variables MAILPATH or MAIL if either of these
|
|
135 variables are defined and no particular value for vm-spool-files
|
|
136 has been specified.")
|
|
137
|
20
|
138 (defvar vm-spool-file-suffixes nil
|
|
139 "*List of suffixes to be used to create possible spool file names
|
|
140 for folders. Example:
|
|
141
|
|
142 (setq vm-spool-file-suffixes '(\".spool\" \"-\"))
|
|
143
|
|
144 If you visit a folder ~/mail/beekeeping, when VM attempts to
|
|
145 retrieve new mail for that folder it will look for mail in
|
|
146 ~/mail/beekeeping.spool and ~/mail/beekeeping- in addition to
|
|
147 scanning vm-spool-files for matches.
|
|
148
|
|
149 The value of vm-spool-files-suffixes will not be used unless
|
|
150 vm-crash-box-suffix is also defined, since a crash box is
|
|
151 required for all mail retrieval from spool files.")
|
|
152
|
|
153 (defvar vm-crash-box-suffix nil
|
|
154 "*String suffix used to create possible crash box file names for folders.
|
|
155 When VM uses vm-spool-file-suffixes to create a spool file name,
|
|
156 it will append the value of vm-crash-box-suffix to the folder's
|
|
157 file name to create a crash box name.")
|
|
158
|
|
159 (defvar vm-make-spool-file-name nil
|
|
160 "*Non-nil value should be a function that returns a spool file name
|
|
161 for a folder. The function will be called with one argument, the
|
|
162 folder's file name. If the folder does not have a file name,
|
|
163 the function will not be called.")
|
|
164
|
|
165 (defvar vm-make-crash-box-name nil
|
|
166 "*Non-nil value should be a function that returns a crash box file name
|
|
167 for a folder. The function will be called with one argument, the
|
|
168 folder's file name. If the folder does not have a file name,
|
|
169 the function will not be called.")
|
|
170
|
0
|
171 (defvar vm-pop-md5-program "md5"
|
|
172 "*Program that reads a message on its standard input and writes an
|
|
173 MD5 digest on its output.")
|
|
174
|
24
|
175 (defvar vm-pop-max-message-size nil
|
|
176 "*If VM is about to retrieve via POP a message larger than this size
|
|
177 (in bytes) it will ask the you whether it should retrieve the message.
|
|
178
|
|
179 If VM is retrieving mail automatically because vm-auto-get-new-mail is
|
|
180 set to a numeric value then you will not be prompted about large messages.
|
|
181 This is to avoid prompting you while you're typing in another buffer.
|
|
182 In this case the large message will be skipped with a warning
|
|
183 message.
|
|
184
|
|
185 A nil value for vm-pop-max-message-size means no size limit.")
|
|
186
|
|
187 (defvar vm-pop-messages-per-session nil
|
|
188 "*Non-nil value should be a integer specifying how many messages to
|
|
189 retrieve per POP session. When you type 'g' to get new mail, VM
|
|
190 will only retrieve that many messages from any particular POP maildrop.
|
|
191 To retrieve more messages, type 'g' again.
|
|
192
|
|
193 A nil value means there's no limit.")
|
|
194
|
|
195 (defvar vm-pop-bytes-per-session nil
|
|
196 "*Non-nil value should be a integer specifying how many bytes to
|
|
197 retrieve per POP session. When you type 'g' to get new mail, VM
|
|
198 will only retrieve messages until the byte limit is reached on
|
|
199 any particular POP maildrop. To retrieve more messages, type 'g'
|
|
200 again.
|
|
201
|
|
202 A nil value means there's no limit.")
|
|
203
|
0
|
204 (defvar vm-recognize-pop-maildrops "^[^:]+:[^:]+:[^:]+:[^:]+:[^:]+"
|
|
205 "*Value if non-nil should be a regular expression that matches
|
|
206 spool names found in vm-spool-files that should be considered POP
|
|
207 maildrops. A nil value tells VM that all the spool names are to
|
|
208 be considered files.")
|
|
209
|
|
210 (defvar vm-auto-get-new-mail t
|
|
211 "*Non-nil value causes VM to automatically move mail from spool files
|
|
212 to a mail folder when the folder is first visited. Nil means
|
|
213 you must always use vm-get-new-mail to pull in newly arrived messages.
|
|
214
|
|
215 If the value is a number, then it specifies how often (in
|
|
216 seconds) VM should check for new mail and try to retrieve it.
|
|
217 This is done asynchronously and may occur while you are editing
|
|
218 other files. It should not disturb your editing, except perhaps
|
20
|
219 for a pause while the check is being done.")
|
0
|
220
|
24
|
221 (defvar vm-mail-check-interval 300
|
|
222 "*Numeric value specifies the number of seconds between checks
|
|
223 for new mail. The maildrops for all visited folders are checked.
|
|
224 The buffer local variable vm-spooled-mail-waiting is set non-nil
|
|
225 in the buffers of those folders that have mail waiting.")
|
|
226
|
|
227 (defvar vm-spooled-mail-waiting nil
|
|
228 "Value is non-nil if there is mail waiting for the current folder.
|
|
229 This variable's value is local in all buffers.
|
|
230 VM maintains this variable, you should not set it.")
|
|
231 (make-variable-buffer-local 'vm-spooled-mail-waiting)
|
|
232
|
0
|
233 (defvar vm-default-folder-type
|
|
234 (cond ((not (boundp 'system-configuration))
|
|
235 'From_)
|
|
236 ((or (string-match "-solaris" system-configuration)
|
|
237 (string-match "usg-unix-v" system-configuration)
|
|
238 (string-match "-ibm-aix" system-configuration))
|
|
239 'From_-with-Content-Length)
|
|
240 ((string-match "-sco" system-configuration)
|
|
241 'mmdf)
|
|
242 (t 'From_))
|
|
243 "*Default folder type for empty folders.
|
|
244 If VM has to add messages that have no specific folder type to an
|
|
245 empty folder, the folder will become this default type.
|
|
246 Allowed types are:
|
|
247
|
|
248 From_
|
|
249 From_-with-Content-Length
|
|
250 mmdf
|
|
251 babyl
|
|
252
|
|
253 Value must be a symbol, not a string. i.e. write
|
|
254
|
|
255 (setq vm-default-folder-type 'From_)
|
|
256
|
|
257 in your .emacs or .vm file.
|
|
258
|
|
259 If you set this variable's value to From_-with-Content-Length you
|
|
260 must set vm-trust-From_-with-Content-Length non-nil.")
|
|
261
|
|
262 (defvar vm-check-folder-types t
|
|
263 "*Non-nil value causes VM to check folder and message types for
|
|
264 compatibility before it performs certain operations.
|
|
265
|
|
266 Before saving a message to a folder, VM will check that the destination folder
|
|
267 is of the same type as the message to be saved.
|
|
268
|
|
269 Before incorporating message into a visited folder, VM will check that the
|
|
270 messages are of the same type as that folder.
|
|
271
|
|
272 A nil value means don't do the checks.
|
|
273
|
|
274 Depending on the value of vm-convert-folder-types VM will either
|
|
275 convert the messages to the appropriate type before saving or
|
|
276 incorporating them, or it will signal an error.")
|
|
277
|
|
278 (defvar vm-convert-folder-types t
|
|
279 "*Non-nil value means that when VM checks folder types and finds
|
|
280 a mismatch (see vm-check-folder-types), it will convert the
|
|
281 source messages to the type of the destination folder, if it can.
|
|
282
|
|
283 If vm-check-folder-types is nil, then this variable isn't
|
|
284 consulted.")
|
|
285
|
|
286 (defvar vm-trust-From_-with-Content-Length
|
|
287 (eq vm-default-folder-type 'From_-with-Content-Length)
|
|
288 "*Non-nil value means that if the first message in a folder contains
|
|
289 a Content-Length header and begins with \"From \" VM can safely
|
|
290 assume that all messages in the folder have Content-Length headers
|
|
291 that specify the length of the text section of each message. VM
|
|
292 will then use these headers to determine message boundaries
|
|
293 instead of the usual way of searching for two newlines followed by a
|
|
294 line that begins with \"From \".
|
|
295
|
|
296 If you set vm-default-folder-type to From_-with-Content-Length you
|
|
297 must set this variable non-nil.")
|
|
298
|
|
299 (defvar vm-visible-headers
|
|
300 '("Resent-"
|
|
301 "From:" "Sender:"
|
|
302 "To:" "Apparently-To:" "Cc:"
|
|
303 "Subject:"
|
|
304 "Date:")
|
|
305 "*List of headers that should be visible when VM first displays a message.
|
|
306 These should be listed in the order you wish them presented.
|
|
307 Regular expressions are allowed. There's no need to anchor
|
|
308 patterns with \"^\", as searches always start at the beginning of
|
|
309 a line. Put a colon at the end of patterns to get exact matches.
|
|
310 For example, \"Date\" matches \"Date\" and \"Date-Sent\". Header names
|
|
311 are always matched case insensitively.
|
|
312
|
|
313 If the value of vm-invisible-header-regexp is nil, only the
|
|
314 headers matched by vm-visible-headers will be displayed.
|
|
315 Otherwise all headers are displayed except those matched by
|
|
316 vm-invisible-header-regexp. In this case vm-visible-headers
|
|
317 specifies the order in which headers are displayed. Headers not
|
|
318 matching vm-visible-headers are display last.")
|
|
319
|
|
320 (defvar vm-invisible-header-regexp nil
|
|
321 "*Non-nil value should be a regular expression that tells what headers
|
|
322 VM should NOT normally display when presenting a message. All other
|
|
323 headers will be displayed. The variable vm-visible-headers specifies
|
|
324 the presentation order of headers; headers not matched by
|
|
325 vm-visible-headers are displayed last.
|
|
326
|
|
327 Nil value causes VM to display ONLY those headers specified in
|
|
328 vm-visible-headers.")
|
|
329
|
|
330 (defvar vm-highlighted-header-regexp nil
|
|
331 "*Value specifies which headers to highlight.
|
|
332 This is a regular expression that matches the names of headers that should
|
|
333 be highlighted when a message is first presented. For example setting
|
|
334 this variable to \"From:\\\\|Subject:\" causes the From and Subject
|
|
335 headers to be highlighted.
|
|
336
|
|
337 This does not work under version 18 Emacs.
|
|
338
|
|
339 If you're using XEmacs, you might want to use the builtin
|
|
340 `highlight-headers' package instead. If so, then you should set
|
|
341 the variable vm-use-lucid-highlighting non-nil. You'll need to
|
|
342 set the various variables used by the highlight-headers package
|
|
343 to customize highlighting. vm-highlighted-header-regexp is
|
|
344 ignored in this case.")
|
|
345
|
|
346 (defvar vm-use-lucid-highlighting
|
|
347 ;; (not (not ...)) to avoid the confusing value of 6.
|
|
348 (not (not (string-match "XEmacs" emacs-version)))
|
|
349 "*Non-nil means to use the `highlight-headers' package in XEmacs.
|
|
350 Nil means just use VM's builtin header highlighting code.
|
|
351
|
|
352 FSF Emacs always uses VM's builtin highlighting code.")
|
|
353
|
|
354 (defvar vm-highlighted-header-face 'bold
|
|
355 "*Face to be used to highlight headers.
|
20
|
356 The header to highlight are sepcified by the vm-highlighted-header-regexp
|
|
357 variable.
|
|
358
|
|
359 This variable is ignored under XEmacs if vm-use-lucid-highlighting is
|
|
360 nil. XEmacs' highlight-headers package is used instead. See the
|
|
361 documentation for the function `highlight-headers' to find out how to
|
|
362 customize header highlighting using this package.")
|
0
|
363
|
|
364 (defvar vm-preview-lines 0
|
|
365 "*Non-nil value N causes VM to display the visible headers + N lines of text
|
|
366 of a message when it is first presented. The message is not actually
|
|
367 flagged as read until it is exposed in its entirety.
|
|
368
|
|
369 A value of t causes VM to display as much of the message as will
|
|
370 fit in the window associated with the folder buffer.
|
|
371
|
|
372 A nil value causes VM not to preview messages; no text lines are hidden and
|
|
373 messages are immediately flagged as read.")
|
|
374
|
|
375 (defvar vm-preview-read-messages nil
|
|
376 "*Non-nil value means to preview messages even if they've already been read.
|
|
377 A nil value causes VM to preview messages only if new or unread.")
|
|
378
|
20
|
379 (defvar vm-display-using-mime t
|
|
380 "*Non-nil value means VM should display messages using MIME.
|
|
381 MIME (Multipurpose Internet Mail Extensions) is a set of
|
|
382 extensions to the standard Internet message format that allows
|
|
383 reliable tranmission and reception of arbitrary data including
|
36
|
384 images, audio and video as well as ordinary text.
|
20
|
385
|
|
386 A non-nil value for this variable means that VM will recognize
|
|
387 MIME encoded messages and display them as specified by the
|
|
388 various MIME standards specifications.
|
|
389
|
|
390 A nil value means VM will not display MIME messages any
|
|
391 differently than any other message.")
|
|
392
|
36
|
393 (defvar vm-mime-ignore-mime-version nil
|
|
394 "*Non-nil value means ignore the version number in the MIME-Version
|
|
395 header. VM only knows how to decode and display MIME version 1.0
|
|
396 messages. Some systems scramble the MIME-Version header, causing
|
|
397 VM to believe that it cannot display a message that it actually
|
|
398 can display. You can set vm-mime-ignore-mime-version non-nil if
|
|
399 you use such systems.")
|
|
400
|
20
|
401 ;; try to avoid bad interaction with TM
|
|
402 (defvar vm-send-using-mime (not (featurep 'mime-setup))
|
|
403 "*Non-nil value means VM should support sending messages using MIME.
|
|
404 MIME (Multipurpose Internet Mail Extensions) is a set of
|
|
405 extensions to the standard Internet message format that allows
|
|
406 reliable tranmission and reception of arbitrary data including
|
|
407 images, audio and video as well as traditional text.
|
|
408
|
|
409 A non-nil value for this variable means that VM will
|
|
410
|
|
411 - allow you to attach files and messages to your outbound message.
|
|
412 - analyze the composition buffer when you send off a message and
|
|
413 encode it as needed.
|
|
414
|
|
415 A nil value means VM will not offer any support for composing
|
|
416 MIME messages.")
|
|
417
|
|
418 (defvar vm-honor-mime-content-disposition nil
|
|
419 "*Non-nil value means use information from the Content-Disposition header
|
|
420 to display MIME messages. The Content-Disposition header
|
|
421 specifies whether a MIME object should be displayed inline or
|
|
422 treated as an attachment. For VM, ``inline'' display means
|
|
423 displaying the object in the Emacs buffer, if possible.
|
|
424 Attachments will be displayed as a button that you can use
|
|
425 mouse-2 to activate or mouse-3 to pull up a menu of options.")
|
|
426
|
|
427 (defvar vm-auto-decode-mime-messages nil
|
|
428 "*Non-nil value causes MIME decoding to occur automatically
|
|
429 when a message containing MIME objects is exposed. A nil value
|
|
430 means that you will have to run the `vm-decode-mime-message'
|
|
431 command (normally bound to `D') manually to decode and display
|
|
432 MIME objects.")
|
|
433
|
|
434 (defvar vm-auto-displayed-mime-content-types '("text" "multipart")
|
|
435 "*List of MIME content types that should be displayed immediately
|
|
436 after decoding. Other types will be displayed as a button that
|
|
437 the user must activate to display the object.
|
|
438
|
|
439 A value of t means that all types should be displayed immediately.
|
|
440 A nil value means never display MIME objects immediately; only use buttons.
|
|
441
|
|
442 If the value is a list, it should be a list of strings, which
|
|
443 should all be types or type/subtype pairs. Example:
|
|
444
|
|
445 (setq vm-auto-displayed-mime-content-types '(\"text\" \"image/jpeg\"))
|
|
446
|
|
447 If a top-level type is listed without a subtype, all subtypes of
|
|
448 that type are assumed to be included.
|
|
449
|
|
450 Note that some types are processed specially, and this variable does not
|
|
451 apply to them.
|
|
452
|
|
453 Multipart/Digest and Message/RFC822 messages are always
|
|
454 displayed as a button to avoid visiting a new folder while the
|
|
455 user is moving around in the current folder.
|
|
456
|
|
457 Message/Partial messages are always displayed as a button,
|
|
458 because there always needs to be a way to trigger the assembly
|
|
459 of the parts into a full message.
|
|
460
|
|
461 Any type that cannot be displayed internally or externally will
|
|
462 be displayed as a button that allows you to save the body to a
|
|
463 file.")
|
|
464
|
|
465 (defvar vm-mime-internal-content-types t
|
|
466 "*List of MIME content types that should be displayed internally
|
|
467 if Emacs is capable of doing so. A value of t means that VM
|
|
468 should always display an object internally if possible. A nil
|
|
469 value means never display MIME objects internally, which means VM
|
|
470 have to run an external viewer to display MIME objects.
|
|
471
|
|
472 If the value is a list, it should be a list of strings. Example:
|
|
473
|
|
474 (setq vm-mime-internal-content-types '(\"text\" \"image/jpeg\"))
|
|
475
|
|
476 If a top-level type is listed without a subtype, all subtypes of
|
|
477 that type are assumed to be included.
|
|
478
|
|
479 Note that all multipart types are always handled internally.
|
|
480 There is no need to list them here.")
|
|
481
|
|
482 (defvar vm-mime-external-content-types-alist nil
|
|
483 "*Alist of MIME content types and the external programs used to display them.
|
|
484 If VM cannot display a type internally or has been instructed not
|
|
485 to (see the documentation for the vm-mime-internal-content-types
|
|
486 variable) it will try to launch an external program to display that
|
|
487 type.
|
|
488
|
|
489 The alist format is
|
|
490
|
|
491 ( (TYPE PROGRAM ARG ARG ... ) ... )
|
|
492
|
|
493 TYPE is a string specifying a MIME type or type/subtype pair.
|
|
494 Example \"text\" or \"image/jpeg\". If a top-level type is
|
|
495 listed without a subtype, all subtypes of that type are assumed
|
|
496 to be included.
|
|
497
|
|
498 PROGRAM is a string naming a program to run to display an object.
|
|
499 Any ARGS will be passed to the program as arguments. The octets
|
|
500 that compose the object will be written into a file and the name
|
|
501 of the file will be passed to the program as its last argument.
|
|
502
|
|
503 Example:
|
|
504
|
|
505 (setq vm-mime-external-content-types-alist
|
|
506 '(
|
|
507 (\"text/html\" \"netscape\")
|
|
508 (\"image/gif\" \"xv\")
|
|
509 (\"image/jpeg\" \"xv\")
|
|
510 (\"video/mpeg\" \"mpeg_play\")
|
|
511 (\"video\" \"xanim\")
|
|
512 )
|
|
513 )
|
|
514
|
|
515 The first matching list element will be used.
|
|
516
|
|
517 No multipart message will ever be sent to an external viewer.")
|
|
518
|
|
519 (defvar vm-mime-type-converter-alist nil
|
|
520 "*Alist of MIME types and programs that can convert between them.
|
|
521 If VM cannot display a content type, it will scan this list to
|
|
522 see if the type can be converted into a type that it can display.
|
|
523
|
|
524 The alist format is
|
|
525
|
|
526 ( (START-TYPE END-TYPE COMMAND-LINE ) ... )
|
|
527
|
|
528 START-TYPE is a string specifying a MIME type or type/subtype pair.
|
|
529 Example \"text\" or \"image/jpeg\". If a top-level type is
|
|
530 listed without a subtype, all subtypes of that type are assumed
|
|
531 to be included.
|
|
532
|
|
533 END-TYPE must be an exact type/subtype pair. This is the type
|
|
534 to which START-TYPE will be converted.
|
|
535
|
|
536 COMMAND-LINE is a string giving a command line to be passed to
|
|
537 the shell. The octets that compose the object will be written to
|
|
538 the standard input of the shell command.
|
|
539
|
|
540 Example:
|
|
541
|
|
542 (setq vm-mime-type-converter-alist
|
|
543 '(
|
|
544 (\"image/jpeg\" \"image/gif\" \"jpeg2gif\")
|
|
545 (\"text/html\" \"text/plain\" \"striptags\")
|
|
546 )
|
|
547 )
|
|
548
|
|
549 The first matching list element will be used.")
|
|
550
|
|
551 (defvar vm-mime-alternative-select-method 'best-internal
|
|
552 "*Value tells how to choose which multipart/alternative part to display.
|
|
553 A MIME message of type multipart/alternative has multiple message
|
|
554 parts containing the same information, but each part may be
|
|
555 formatted differently. VM will display only one of the parts.
|
|
556 This variable tells VM how to choose which part to display.
|
|
557
|
|
558 A value of 'best means choose the part that is the most faithful to
|
|
559 the sender's original content that can be displayed.
|
|
560
|
|
561 A value of 'best-internal means choose the best part that can be
|
|
562 displayed internally, i.e. with the built-in capabilities of Emacs.
|
|
563 If none of the parts can be displayed internally, behavior reverts to
|
|
564 that of 'best.")
|
|
565
|
24
|
566 (defvar vm-mime-default-face-charsets '("us-ascii" "iso-8859-1")
|
|
567 "*List of character sets that can use the `default' face.
|
|
568 For other characters sets VM will have to create a new face and assign
|
|
569 a font to it that can be used to display that character set.")
|
|
570
|
|
571 (defvar vm-mime-charset-font-alist nil
|
|
572 "*Assoc list of character sets and fonts that can be used to display them.
|
|
573 The format of the list is:
|
|
574
|
|
575 ( (CHARSET . FONT) ...)
|
|
576
|
|
577 CHARSET is a string naming a MIME registered character set such
|
|
578 as \"iso-8859-5\". Character set names should be specified in
|
|
579 lower case.
|
|
580
|
|
581 FONT is a string naming a font that can be used to display CHARSET.
|
|
582
|
|
583 An example setup might be:
|
|
584
|
|
585 (setq vm-mime-charset-font-alist
|
|
586 '(
|
36
|
587 (\"iso-8859-7\" . \"-*-*-medium-r-normal-*-16-160-72-72-c-80-iso8859-7\")
|
24
|
588 )
|
|
589 )
|
|
590
|
|
591 This variable is only useful for character sets whose characters
|
|
592 can all be encoded in single 8-bit bytes. Also multiple fonts
|
|
593 can only be displayed if you're running under a window system
|
|
594 e.g. X windows. So this variable will have no effect if you're
|
|
595 running Emacs on a tty.
|
|
596
|
|
597 Note that under FSF Emacs any fonts you use must be the same size
|
|
598 as your default font. XEmacs does not have this limitation.")
|
|
599
|
36
|
600 (defvar vm-mime-button-face 'gui-button-face
|
20
|
601 "*Face used for text in buttons that trigger the display of MIME objects.")
|
|
602
|
|
603 (defvar vm-mime-8bit-composition-charset "iso-8859-1"
|
|
604 "*Character set that VM should assume if it finds non-US-ASCII characters
|
|
605 in a composition buffer. Composition buffers are assumed to use
|
|
606 US-ASCII unless the buffer contains a byte with the high bit set.
|
|
607 This variable specifies what character set VM should assume if
|
24
|
608 such a character is found.
|
|
609
|
|
610 This variable is unused in XEmacs/MULE. Since multiple character
|
|
611 sets can be displayed in a single buffer under MULE, VM will map
|
|
612 the file coding system of the buffer to a single MIME character
|
|
613 that can display all the buffer's characters.")
|
20
|
614
|
|
615 (defvar vm-mime-8bit-text-transfer-encoding 'quoted-printable
|
|
616 "*Symbol specifying what kind of transfer encoding to use on 8bit
|
|
617 text. Characters with the high bit set cannot safely pass
|
|
618 through all mail gateways and mail transport software. MIME has
|
30
|
619 two transfer encodings that convert 8-bit data to 7-bit for safe
|
20
|
620 transport. Quoted-printable leaves the text mostly readable even
|
24
|
621 if the recipient does not have a MIME-capable mail reader. BASE64
|
|
622 is unreadable without a MIME-capable mail reader, unless your name
|
20
|
623 is U3BvY2s=.
|
|
624
|
|
625 A value of 'quoted-printable, means to use quoted-printable encoding.
|
|
626 A value of 'base64 means to use BASE64 encoding.
|
|
627 A value of '8bit means to send the message as is.
|
|
628
|
30
|
629 Note that this variable usually only applies to textual MIME
|
|
630 content types. Images, audio, video, etc. typically will have
|
|
631 some attribute that makes VM consider them to be \"binary\",
|
|
632 which moves them outside the scope of this variable. For
|
|
633 example, messages with line lengths of 1000 characters or more
|
|
634 are considered binary, as are messages that contain carriage
|
|
635 returns (ascii code 13) or NULs (ascii code 0).")
|
|
636
|
|
637 (defvar vm-mime-composition-armor-from-lines nil
|
|
638 "*Non-nil value means \"From \" lines should be armored before sending.
|
|
639 A line beginning with \"From \" is considered a message separator
|
|
640 by many mail delivery agents. These agents will often insert a >
|
|
641 before the word \"From\" to prevent mail readers from being
|
|
642 confused. This is proper behavior, but it breaks digitally signed
|
|
643 messages, which require bit-perfect transport in order for the
|
|
644 message contents to be considered genuine.
|
|
645
|
|
646 If vm-mime-composition-armor-from-lines is non-nil, a line
|
|
647 beginning with \"From \" will cause VM to encode the message
|
|
648 using either quoted-printable or BASE64 encoding so that the From
|
|
649 line can be protected.")
|
20
|
650
|
|
651 (defvar vm-mime-attachment-auto-type-alist
|
|
652 '(
|
|
653 ("\\.jpe?g" . "image/jpeg")
|
|
654 ("\\.gif" . "image/gif")
|
|
655 ("\\.png" . "image/png")
|
24
|
656 ("\\.tiff?" . "image/tiff")
|
|
657 ("\\.html?" . "text/html")
|
20
|
658 ("\\.au" . "audio/basic")
|
|
659 ("\\.mpe?g" . "video/mpeg")
|
|
660 ("\\.ps" . "application/postscript")
|
|
661 )
|
|
662 "*Alist used to guess a MIME content type based on a file name.
|
|
663 The list format is
|
|
664
|
|
665 ((REGEXP . TYPE) ...)
|
|
666
|
|
667 REGEXP is a string that specifies a regular expression.
|
|
668 TYPE is a string specifying a MIME content type.
|
|
669
|
|
670 When a non-MIME file is attached to a MIME composition buffer,
|
|
671 this list will be scanned until a REGEXP matches the file's name.
|
|
672 The corresponding TYPE will be offered as a default when you are
|
|
673 prompted for the file's type.")
|
|
674
|
|
675 (defvar vm-mime-max-message-size nil
|
|
676 "*Largest MIME message that VM should send without fragmentation.
|
|
677 The value should be a integer which specifies the size in bytes.
|
|
678 A message larger than this value will be split into multiple parts
|
|
679 for transmission using the MIME message/partial type.")
|
|
680
|
|
681 (defvar vm-mime-attachment-save-directory nil
|
|
682 "*Non-nil value is a default directory for saving MIME attachments.
|
|
683 When VM prompts you for a target file name when saving a MIME body,
|
|
684 any relative pathnames will be relative to this directory.")
|
|
685
|
|
686 (defvar vm-mime-avoid-folding-content-type nil
|
|
687 "*Non-nil means don't send folded Content-Type headers in MIME messages.
|
|
688 `Folded' headers are headers broken into multiple lines as specified
|
|
689 in RFC822 for readability and to avoid excessive line lengths. At
|
|
690 least one major UNIX vendor ships a version of sendmail that believes
|
|
691 a folded Content-Type header is a syntax error, and returns any such
|
|
692 message to sender. A typical error message from such a sendmail
|
|
693 version is,
|
|
694
|
|
695 553 header syntax error, line \" charset=us-ascii\"
|
|
696
|
|
697 If you see one of these, setting vm-mime-avoid-folding-content-type
|
|
698 non-nil may let your mail get through.")
|
|
699
|
|
700 (defvar vm-mime-base64-decoder-program nil
|
|
701 "*Non-nil value should be a string that names a MIME base64 decoder.
|
|
702 The program should expect to read base64 data on its standard
|
|
703 input and write the converted data to its standard output.")
|
|
704
|
|
705 (defvar vm-mime-base64-decoder-switches nil
|
|
706 "*List of command line flags passed to the command named by
|
|
707 vm-mime-base64-decoder-program.")
|
|
708
|
|
709 (defvar vm-mime-base64-encoder-program nil
|
|
710 "*Non-nil value should be a string that names a MIME base64 encoder.
|
|
711 The program should expect arbitrary data on its standard
|
|
712 input and write base64 data to its standard output.")
|
|
713
|
|
714 (defvar vm-mime-base64-encoder-switches nil
|
|
715 "*List of command line flags passed to the command named by
|
|
716 vm-mime-base64-encoder-program.")
|
|
717
|
0
|
718 (defvar vm-auto-next-message t
|
|
719 "*Non-nil value causes VM to use vm-next-message to advance to the next
|
|
720 message in the folder if the user attempts to scroll past the end of the
|
|
721 current messages. A nil value disables this behavior.")
|
|
722
|
|
723 (defvar vm-honor-page-delimiters nil
|
|
724 "*Non-nil value causes VM to honor page delimiters (as specified by the
|
|
725 Emacs page-delimiter variable) when scrolling through a message.")
|
|
726
|
|
727 (defvar vm-default-window-configuration
|
|
728 ;; startup = full screan summary
|
|
729 ;; quitting = full screen folder
|
|
730 ;; reading-message = folder on bottom, summary on top
|
|
731 ;; composing-message = full screen composition
|
|
732 ;; editing-message = full screen edit
|
|
733 ;; vm-summarize = folder on bottom, summary on top
|
|
734 '(
|
|
735 (startup
|
|
736 ((((top . 70) (left . 70)))
|
|
737 (((- (0 0 80 10) (0 10 80 40))
|
|
738 ((nil summary) (nil message))
|
|
739 ((nil nil nil t) (nil nil nil nil))))))
|
|
740 (quitting
|
|
741 ((((top . 70) (left . 70)))
|
|
742 (((0 0 80 40)
|
|
743 ((nil message))
|
|
744 ((nil nil nil t))))))
|
|
745 (reading-message
|
|
746 ((((top . 70) (left . 70)))
|
|
747 (((- (0 0 80 10) (0 10 80 40))
|
|
748 ((nil summary) (nil message))
|
|
749 ((nil nil nil t) (nil nil nil nil))))))
|
|
750 (composing-message
|
|
751 ((((top . 70) (left . 70)))
|
|
752 (((0 0 80 40)
|
|
753 ((nil composition))
|
|
754 ((nil nil nil t))))))
|
|
755 (editing-message
|
|
756 ((((top . 70) (left . 70)))
|
|
757 (((0 0 80 40)
|
|
758 ((nil edit))
|
|
759 ((nil nil nil t))))))
|
|
760 (vm-summarize
|
|
761 ((((top . 70) (left . 70)))
|
|
762 (((- (0 0 80 10) (0 10 80 40))
|
|
763 ((nil summary) (nil message))
|
|
764 ((nil nil nil t) (nil nil nil nil))))))
|
|
765 )
|
|
766 "Default window configuration for VM if the user does not specify one.
|
|
767 If you want to completely turn off VM's window configuration
|
|
768 feature, set this variable and vm-window-configuration-file to
|
|
769 nil in your .vm file.
|
|
770
|
|
771 If you want to have a different window configuration setup than
|
|
772 this, you should not set this variable directly. Rather you
|
|
773 should set the variable vm-window-configuration-file to point at
|
|
774 a file, and use the command vm-save-window-configuration
|
|
775 (normally bound to `WS') to modify part of this configuration to
|
|
776 your liking.
|
|
777
|
|
778 WARNING: Don't point vm-window-configuration-file at your .vm or
|
|
779 .emacs file. Your window configuration file should start out as
|
|
780 an empty or nonexistent file. VM will repeatedly overwrite this
|
|
781 file as you update your window configuration settings, so
|
|
782 anything else you put into this file will go away.")
|
|
783
|
|
784 (defvar vm-window-configuration-file "~/.vm.windows"
|
|
785 "*Non-nil value should be a string that tells VM where to load
|
|
786 and save your window configuration settings. Your window
|
|
787 configuration settings are loaded automatically the first time
|
|
788 you run VM in an Emacs session, and tells VM how to set up
|
|
789 windows depending on what you are doing inside VM.
|
|
790
|
|
791 The commands vm-save-window-configuration (normally bound to `WS') and
|
|
792 vm-delete-window-configuration (bound to `WD') let you update this
|
|
793 information; see their documentation for more information.
|
|
794
|
|
795 You cannot change your window configuration setup without giving
|
|
796 vm-window-configuration-file a non-nil value. A nil value causes
|
|
797 VM to use the default window setup specified by the value of
|
|
798 vm-default-window-configuration.
|
|
799
|
|
800 WARNING: Don't point vm-window-configuration-file at your .vm or
|
|
801 .emacs file. Your window configuration file should start out as
|
|
802 an empty or nonexistent file. VM will repeatedly overwrite this
|
|
803 file as you update your window configuration settings, so
|
|
804 anything else you put into this file will go away.")
|
|
805
|
|
806 (defvar vm-confirm-quit 0
|
|
807 "*Value of t causes VM to always ask for confirmation before quitting
|
|
808 a VM visit of a folder. A nil value means VM will ask only when messages
|
|
809 will be lost unwittingly by quitting, i.e. not removed by intentional
|
|
810 delete and expunge. A value that is not nil and not t causes VM to ask
|
|
811 only when there are unsaved changes to message attributes, or when messages
|
|
812 will be unwittingly lost.")
|
|
813
|
|
814 (defvar vm-folder-directory nil
|
|
815 "*Directory where folders of mail are kept.")
|
|
816
|
|
817 (defvar vm-confirm-new-folders nil
|
|
818 "*Non-nil value causes interactive calls to vm-save-message
|
|
819 to ask for confirmation before creating a new folder.")
|
|
820
|
|
821 (defvar vm-delete-empty-folders t
|
|
822 "*Non-nil value means remove empty (zero length) folders after saving
|
|
823 A value of t means always remove the folders.
|
|
824 A value of nil means never remove empty folders.
|
|
825 A value that's not t or nil means ask before removing empty folders.")
|
|
826
|
24
|
827 (defvar vm-flush-interval 90
|
0
|
828 "*Non-nil value specifies how often VM flushes its cached internal
|
|
829 data. A numeric value gives the number of seconds between
|
|
830 flushes. A value of t means flush every time there is a change.
|
|
831 Nil means don't do flushing until a message or folder is saved.
|
|
832
|
|
833 Normally when a message attribute is changed. VM keeps the record
|
|
834 of the change in its internal memory and doesn't insert the
|
|
835 changed data into the folder buffer until a particular message or
|
|
836 the whole folder is saved to disk. This makes normal Emacs
|
|
837 auto-saving useless for VM folder buffers because the information
|
20
|
838 you'd want to auto-save, i.e. the attribute changes are not in
|
0
|
839 the buffer when it is auto-saved.
|
|
840
|
|
841 Setting vm-flush-interval to a numeric value will cause the VM's
|
|
842 internal memory caches to be periodically flushed to the folder
|
|
843 buffer. This is done non-obtrusively, so that if you type
|
|
844 something while flushing is occurring, the flush will abort
|
|
845 cleanly and Emacs will respond to your keystrokes as usual.")
|
|
846
|
|
847 (defvar vm-visit-when-saving 0
|
|
848 "*Value determines whether VM will visit folders when saving messages.
|
|
849 `Visiting' means that VM will read the folder into Emacs and append the
|
|
850 message to the buffer instead of appending to the folder file directly.
|
|
851 This behavior is ideal when folders are encrypted or compressed since
|
|
852 appending plaintext directly to such folders is a ghastly mistake.
|
|
853
|
|
854 A value of t means VM will always visit folders when saving.
|
|
855
|
|
856 A nil value means VM will never visit folders before saving to them, and
|
|
857 VM will generate an error if you attempt to save messages to a folder
|
|
858 that is being visited. The latter restriction is necessary to insure
|
|
859 that the buffer and disk copies of the folder being visited remain
|
|
860 consistent.
|
|
861
|
|
862 A value that is not nil and not t means VM will save to a folder's
|
|
863 buffer if that folder is being visited, otherwise VM saves to the folder
|
|
864 file itself.")
|
|
865
|
|
866 (defvar vm-auto-folder-alist nil
|
|
867 "*Non-nil value should be an alist that VM will use to choose a default
|
|
868 folder name when messages are saved. The alist should be of the form
|
|
869 \((HEADER-NAME-REGEXP
|
|
870 (REGEXP . FOLDER-NAME) ...
|
|
871 ...))
|
|
872 where HEADER-NAME-REGEXP and REGEXP are strings, and FOLDER-NAME
|
|
873 is a string or an s-expression that evaluates to a string.
|
|
874
|
|
875 If any part of the contents of the message header whose name is
|
|
876 matched by HEADER-NAME-REGEXP is matched by the regular
|
|
877 expression REGEXP, VM will evaluate the corresponding FOLDER-NAME
|
|
878 and use the result as the default when prompting for a folder to
|
|
879 save the message in. If the resulting folder name is a relative
|
|
880 pathname, then it will be rooted in the directory named by
|
|
881 vm-folder-directory, or the default-directory of the currently
|
|
882 visited folder if vm-folder-directory is nil.
|
|
883
|
|
884 When FOLDER-NAME is evaluated, the current buffer will contain
|
|
885 only the contents of the header matched by HEADER-NAME-REGEXP.
|
|
886 It is safe to modify this buffer. You can use the match data
|
|
887 from any \\( ... \\) grouping constructs in REGEXP along with the
|
|
888 function buffer-substring to build a folder name based on the
|
|
889 header information. If the result of evaluating FOLDER-NAME is a
|
|
890 list, then the list will be treated as another auto-folder-alist
|
|
891 and will be descended recursively.
|
|
892
|
|
893 Whether REGEXP is matched case sensitively depends on the value
|
|
894 of the variable vm-auto-folder-case-fold-search. Header names
|
|
895 are always matched case insensitively.")
|
|
896
|
|
897 (defvar vm-auto-folder-case-fold-search nil
|
|
898 "*Non-nil value means VM will ignore case when matching header
|
|
899 contents while doing automatic folder selection via the variable
|
|
900 vm-auto-folder-alist.")
|
|
901
|
|
902 (defvar vm-virtual-folder-alist nil
|
|
903 "*Non-nil value should be a list of virtual folder definitions.
|
|
904
|
|
905 A virtual folder is a mapping of messages from one or more real folders
|
|
906 into what appears to be a single folder. A virtual folder definition
|
|
907 specifies which real folders should be searched for prospective messages
|
|
908 and what the inclusion criteria are.
|
|
909
|
|
910 Each virtual folder definition should have the following form:
|
|
911
|
|
912 (VIRTUAL-FOLDER-NAME
|
|
913 ( (FOLDER-NAME ...)
|
|
914 (SELECTOR [ARG ...]) ... )
|
|
915 ... )
|
|
916
|
|
917 VIRTUAL-FOLDER-NAME is the name of the virtual folder being defined.
|
|
918 This is the name by which you and VM will refer to this folder.
|
|
919
|
|
920 FOLDER-NAME should be the name of a real folder. There may be more than
|
|
921 one FOLDER-NAME listed, the SELECTORs within that sublist will apply to
|
|
922 them all. If FOLDER-NAME is a directory, VM will assume this to mean that
|
|
923 all the folders in that directory should be searched.
|
|
924
|
|
925 The SELECTOR is a Lisp symbol that tells VM how to decide whether a message
|
|
926 from one of the folders specified by the FOLDER-NAMEs should be included
|
|
927 in the virtual folder. Some SELECTORs require an argument ARG; unless
|
|
928 otherwise noted ARG may be omitted.
|
|
929
|
|
930 The recognized SELECTORs are:
|
|
931
|
|
932 author - matches message if ARG matches the author; ARG should be a
|
|
933 regular expression.
|
|
934 and - matches the message if all its argument
|
|
935 selectors match the message. Example:
|
|
936 (and (author \"Derek McGinty\") (new))
|
|
937 matches all new messages from Derek McGinty.
|
|
938 `and' takes any number of arguments.
|
|
939 any - matches any message.
|
|
940 deleted - matches message if it is flagged for deletion.
|
|
941 edited - matches message if it has been edited.
|
|
942 filed - matched message if it has been saved with its headers.
|
|
943 forwarded - matches message if it has been forwarded.
|
|
944 header - matches message if ARG matches any part of the header
|
|
945 portion of the message; ARG should be a
|
|
946 regular expression.
|
|
947 label - matches message if message has a label named ARG.
|
|
948 less-chars-than - matches message if message has less than ARG
|
|
949 characters. ARG should be a number.
|
|
950 less-lines-than - matches message if message has less than ARG
|
|
951 lines. ARG should be a number.
|
|
952 more-chars-than - matches message if message has more than ARG
|
|
953 characters. ARG should be a number.
|
|
954 more-lines-than - matches message if message has more than ARG
|
|
955 lines. ARG should be a number.
|
|
956 marked - matches message if it is marked, as with vm-mark-message.
|
|
957 new - matches message if it is new.
|
|
958 not - matches message only if its selector argument
|
|
959 does NOT match the message. Example:
|
|
960 (not (deleted))
|
|
961 matches messages that are not deleted.
|
|
962 or - matches the message if any of its argument
|
|
963 selectors match the message. Example:
|
|
964 (or (author \"Dave Weckl\") (subject \"drum\"))
|
|
965 matches messages from Dave Weckl or messages
|
|
966 with the word \"drum\" in their Subject header.
|
|
967 `or' takes any number of arguments.
|
|
968 read - matches message if it is neither new nor unread.
|
|
969 recipient - matches message if ARG matches any part of the recipient
|
|
970 list of the message. ARG should be a regular expression.
|
|
971 replied - matches message if it has been replied to.
|
|
972 sent-after - matches message if it was sent after the date ARG.
|
|
973 A fully specified date looks like this:
|
|
974 \"31 Dec 1999 23:59:59 GMT\"
|
|
975 although the parts can appear in any order.
|
|
976 You can leave out any part and it will
|
|
977 default to the current date's value for that
|
|
978 part, with the exception of the hh:mm:ss
|
|
979 part which defaults to midnight.
|
|
980 sent-before - matches message if it was sent before the date ARG.
|
|
981 A fully specified date looks like this:
|
|
982 \"31 Dec 1999 23:59:59 GMT\"
|
|
983 although the parts can appear in any order.
|
|
984 You can leave out any part and it will
|
|
985 default to the current date's value for that
|
|
986 part, with the exception of the hh:mm:ss
|
|
987 part which defaults to midnight.
|
|
988 subject - matches message if ARG matches any part of the message's
|
|
989 subject; ARG should be a regular expression.
|
|
990 text - matches message if ARG matches any part of the text
|
|
991 portion of the message; ARG should be a
|
|
992 regular expression.
|
|
993 unread - matches message if it is old but unread.
|
|
994 written - matches message if it has been saved without its headers.
|
|
995 ")
|
|
996
|
|
997 (defvar vm-virtual-mirror t
|
|
998 "*Non-nil value causes the attributes of messages in virtual folders
|
|
999 to mirror the changes in the attributes of the underlying real messages.
|
|
1000 Similarly, changes in the attributes of virtual messages will change the
|
|
1001 attributes of the underlying real messages. A nil value causes virtual
|
|
1002 messages to have their own distinct set of attributes, apart from the
|
|
1003 underlying real message.
|
|
1004
|
|
1005 This variable automatically becomes buffer-local when set in any
|
|
1006 fashion. You should set this variable only in your .vm or .emacs
|
|
1007 file. Use setq-default. Once VM has been started, you should not
|
|
1008 set this variable directly, rather you should use the command
|
|
1009 vm-toggle-virtual-mirror, normally bound to `V M'.")
|
|
1010 (make-variable-buffer-local 'vm-virtual-mirror)
|
|
1011
|
|
1012 (defvar vm-folder-read-only nil
|
|
1013 "*Non-nil value causes a folder to be considered unmodifiable by VM.
|
|
1014 Commands that modify message attributes or messages themselves are disallowed.
|
|
1015 Commands that add or delete messages from the folder are disallowed.
|
|
1016 Commands that scan or allow the reading of messages are allowed but the
|
|
1017 `new' and `unread' message flags are not changed by them.
|
|
1018
|
|
1019 This variable automatically becomes buffer-local when set in any
|
|
1020 fashion. You should set this variable only in your .vm or .emacs
|
|
1021 file. Use setq-default. Once VM has been started, you should not
|
|
1022 set this variable directly, rather you should use the command
|
|
1023 vm-toggle-read-only, normally bound to C-x C-q.")
|
|
1024 (make-variable-buffer-local 'vm-folder-read-only)
|
|
1025
|
|
1026 (defvar vm-included-text-prefix " > "
|
|
1027 "*String used to prefix included text in replies.")
|
|
1028
|
|
1029 (defvar vm-keep-sent-messages 1
|
|
1030 "*Non-nil value N causes VM to keep the last N messages sent from within VM.
|
|
1031 `Keep' means that VM will not kill the VM mail buffer after you send a message
|
|
1032 with C-c C-c (vm-mail-send-and-exit). A value of 0 or nil causes VM never
|
|
1033 to keep such buffers. A value of t causes VM never to kill such buffers.
|
|
1034
|
|
1035 Note that these buffers will vanish once you exit Emacs. To keep a permanent
|
|
1036 record of your outgoing mail, use the mail-archive-file-name variable.")
|
|
1037
|
|
1038 (defvar vm-confirm-mail-send nil
|
|
1039 "*Non-nil means ask before sending a mail message.
|
|
1040 This affects vm-mail-send and vm-mail-send-and-exit in Mail mode.")
|
|
1041
|
|
1042 (defvar vm-mail-header-from nil
|
|
1043 "*Non-nil value should be a string that will be appear as the body
|
|
1044 of the From header in outbound mail messages. A nil value means don't
|
|
1045 insert a From header. This variable also controls the inclusion and
|
|
1046 format of the Resent-From header, when resending a message with
|
|
1047 vm-resend-message.")
|
|
1048
|
|
1049 (defvar vm-reply-subject-prefix nil
|
|
1050 "*Non-nil value should be a string that VM should add to the beginning
|
|
1051 of the Subject header in replies, if the string is not already present.
|
|
1052 Nil means don't prefix the Subject header.")
|
|
1053
|
|
1054 (defvar vm-reply-ignored-addresses nil
|
|
1055 "*Non-nil value should be a list of regular expressions that match
|
|
1056 addresses that VM should automatically remove from the recipient
|
|
1057 headers of replies. These addresses are removed from the headers
|
|
1058 before you are placed in the message composition buffer. So if
|
|
1059 you see an address in the header you don't want you should remove
|
|
1060 it yourself.
|
|
1061
|
|
1062 Case is ignored when matching the addresses.")
|
|
1063
|
|
1064 (defvar vm-reply-ignored-reply-tos nil
|
|
1065 "*Non-nil value should be a list of regular expressions that match
|
|
1066 addresses that, if VM finds in a message's Reply-To header, VM
|
|
1067 should ignore the Reply-To header and not use it for replies. VM
|
|
1068 will use the From header instead.
|
|
1069
|
|
1070 Case is ignored when matching the addresses.
|
|
1071
|
|
1072 This variable exists solely to provide a escape chute from
|
|
1073 mailing lists that add a Reply-To: mailing list header, thereby
|
|
1074 leaving no way to reply to just the author of a message.")
|
|
1075
|
|
1076 (defvar vm-in-reply-to-format "%i"
|
|
1077 "*String which specifies the format of the contents of the In-Reply-To
|
|
1078 header that is generated for replies. See the documentation for the
|
|
1079 variable vm-summary-format for information on what this string may
|
|
1080 contain. The format should *not* end with a newline.
|
|
1081 Nil means don't put an In-Reply-To header in replies.")
|
|
1082
|
|
1083 (defvar vm-included-text-attribution-format "%F writes:\n"
|
|
1084 "*String which specifies the format of the attribution that precedes the
|
|
1085 included text from a message in a reply. See the documentation for the
|
|
1086 variable vm-summary-format for information on what this string may contain.
|
|
1087 Nil means don't attribute included text in replies.")
|
|
1088
|
|
1089 (defvar vm-included-text-headers nil
|
|
1090 "*List of headers that should be retained in a message included in
|
|
1091 a reply. These should be listed in the order you wish them to
|
|
1092 appear in the included text. Regular expressions are allowed.
|
|
1093 There's no need to anchor patterns with \"^\", as searches always
|
|
1094 start at the beginning of a line. Put a colon at the end of
|
|
1095 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1096 and \"Date-Sent\".) Header names are always matched case
|
|
1097 insensitively.
|
|
1098
|
|
1099 If the value of vm-included-text-discard-header-regexp is nil,
|
|
1100 the headers matched by vm-included-text-headers are the only
|
|
1101 headers that will be retained.
|
|
1102
|
|
1103 If vm-included-text-discard-header-regexp is non-nil, then only
|
|
1104 headers matched by that variable will be omitted; all others will
|
|
1105 be included. vm-included-text-headers determines the header
|
|
1106 order in that case, with headers not matching any in the
|
|
1107 vm-included-text-headers list appearing last in the header
|
|
1108 section of the included text.")
|
|
1109
|
|
1110 (defvar vm-included-text-discard-header-regexp nil
|
|
1111 "*Non-nil value should be a regular expression header that tells
|
|
1112 what headers should not be retained in a message included in a
|
|
1113 reply. This variable along with vm-included-text-headers determines
|
|
1114 which headers are retained.
|
|
1115
|
|
1116 If the value of vm-included-text-discard-header-regexp is nil,
|
|
1117 the headers matched by vm-included-text-headers are the only headers
|
|
1118 that will be retained.
|
|
1119
|
|
1120 If vm-included-text-discard-header-regexp is non-nil, then only
|
|
1121 headers matched by this variable will not be retained; all
|
|
1122 others will be included. vm-included-text-headers determines the
|
|
1123 header order in that case, with headers not matching any in
|
|
1124 the vm-included-text-headers list appearing last in the header
|
|
1125 section of the included text.")
|
|
1126
|
|
1127 (defvar vm-forwarding-subject-format "forwarded message from %F"
|
|
1128 "*String which specifies the format of the contents of the Subject
|
|
1129 header that is generated for a forwarded message. See the documentation
|
|
1130 for the variable vm-summary-format for information on what this string
|
|
1131 may contain. The format should *not* end with nor contain a newline.
|
|
1132 Nil means leave the Subject header empty when forwarding.")
|
|
1133
|
|
1134 (defvar vm-forwarded-headers nil
|
|
1135 "*List of headers that should be forwarded by vm-forward-message.
|
|
1136 These should be listed in the order you wish them to appear in
|
|
1137 the forwarded message. Regular expressions are allowed.
|
|
1138 There's no need to anchor patterns with \"^\", as searches always
|
|
1139 start at the beginning of a line. Put a colon at the end of
|
|
1140 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1141 and \"Date-Sent\".) Header names are always matched case
|
|
1142 insensitively.
|
|
1143
|
|
1144 If the value of vm-unforwarded-header-regexp is nil, the headers
|
|
1145 matched by vm-forwarded-headers are the only headers that will be
|
|
1146 forwarded.
|
|
1147
|
|
1148 If vm-unforwarded-header-regexp is non-nil, then only headers
|
|
1149 matched by that variable will be omitted; all others will be
|
|
1150 forwarded. vm-forwarded-headers determines the forwarding order
|
|
1151 in that case, with headers not matching any in the
|
|
1152 vm-forwarded-headers list appearing last in the header section of
|
|
1153 the forwarded message.")
|
|
1154
|
|
1155 (defvar vm-unforwarded-header-regexp "only-drop-this-header"
|
|
1156 "*Non-nil value should be a regular expression header that tells
|
|
1157 what headers should not be forwarded by vm-forward-message. This
|
|
1158 variable along with vm-forwarded-headers determines which headers
|
|
1159 are forwarded.
|
|
1160
|
|
1161 If the value of vm-unforwarded-header-regexp is nil, the headers
|
|
1162 matched by vm-forwarded-headers are the only headers that will be
|
|
1163 forwarded.
|
|
1164
|
|
1165 If vm-unforwarded-header-regexp is non-nil, then only headers
|
|
1166 matched by this variable will not be forwarded; all others will
|
|
1167 be forwarded. vm-forwarded-headers determines the forwarding
|
|
1168 order in that case, with headers not matching any in the
|
|
1169 vm-forwarded-headers list appearing last in the header section of
|
|
1170 the forwarded message.")
|
|
1171
|
20
|
1172 (defvar vm-forwarding-digest-type "mime"
|
0
|
1173 "*Non-nil value should be a string that specifies the type of
|
|
1174 message encapsulation format to use when forwarding a message.
|
|
1175 Legal values of this variable are:
|
|
1176
|
|
1177 \"rfc934\"
|
|
1178 \"rfc1153\"
|
20
|
1179 \"mime\"
|
0
|
1180 nil
|
|
1181
|
|
1182 A nil value means don't use a digest, just mark the beginning and
|
|
1183 end of the forwarded message.")
|
|
1184
|
20
|
1185 (defvar vm-burst-digest-messages-inherit-labels t
|
|
1186 "*Non-nil values means messages from a digest inherit the digest's labels.
|
|
1187 Labels are added to messages with vm-add-message-labels, normally
|
|
1188 bound to `l a'.")
|
|
1189
|
0
|
1190 (defvar vm-digest-preamble-format "\"%s\" (%F)"
|
|
1191 "*String which specifies the format of the preamble lines generated by
|
|
1192 vm-send-digest when it is invoked with a prefix argument. One
|
|
1193 line will be generated for each message put into the digest. See the
|
|
1194 documentation for the variable vm-summary-format for information
|
|
1195 on what this string may contain. The format should *not* end
|
|
1196 with nor contain a newline.")
|
|
1197
|
|
1198 (defvar vm-digest-center-preamble t
|
|
1199 "*Non-nil value means VM will center the preamble lines that precede
|
|
1200 the start of a digest. How the lines will be centered depends on the
|
|
1201 ambient value of fill-column. A nil value suppresses centering.")
|
|
1202
|
|
1203 (defvar vm-digest-identifier-header-format "X-Digest: %s\n"
|
|
1204 "*Header to insert into messages burst from a digest.
|
36
|
1205 Value should be a format string of the same type as vm-summary-format
|
|
1206 that describes a header to be inserted into each message burst from a
|
|
1207 digest. The format string must end with a newline.")
|
0
|
1208
|
20
|
1209 (defvar vm-digest-burst-type "guess"
|
0
|
1210 "*Value specifies the default digest type offered by vm-burst-digest
|
|
1211 when it asks you what type of digest you want to unpack. Allowed
|
|
1212 values of this variable are:
|
|
1213
|
|
1214 \"rfc934\"
|
|
1215 \"rfc1153\"
|
20
|
1216 \"mime\"
|
0
|
1217 \"guess\"
|
|
1218
|
20
|
1219 rfc1153 digests have a preamble, followed by a line of exactly 70
|
|
1220 dashes, with digested messages separated by lines of exactly 30 dashes.
|
|
1221
|
|
1222 rfc934 digests separate messages on any line that begins with a few
|
|
1223 dashes, but doesn't require lines with only dashes or lines with a
|
|
1224 specific number of dashes. In the text of the message, any line
|
36
|
1225 beginning with dashes is textually modified to be preceded by a dash
|
20
|
1226 and a space to prevent confusion with message separators.
|
|
1227
|
|
1228 MIME digests use whatever boundary that is specified by the
|
|
1229 boundary parameter in the Content-Type header of the digest.
|
|
1230
|
0
|
1231 If the value is \"guess\", and you take the default
|
|
1232 response when vm-burst-digest queries you, VM will try to guess
|
|
1233 the digest type.")
|
|
1234
|
20
|
1235 (defvar vm-digest-send-type "mime"
|
0
|
1236 "*String that specifies the type of digest vm-send-digest will use.
|
|
1237 Legal values of this variable are:
|
|
1238
|
|
1239 \"rfc934\"
|
|
1240 \"rfc1153\"
|
20
|
1241 \"mime\"
|
0
|
1242
|
|
1243 ")
|
|
1244
|
|
1245 (defvar vm-rfc934-digest-headers
|
|
1246 '("Resent-"
|
|
1247 "From:" "Sender:"
|
|
1248 "To:" "Cc:"
|
|
1249 "Subject:"
|
|
1250 "Date:"
|
|
1251 "Message-ID:"
|
|
1252 "Keywords:")
|
|
1253 "*List of headers that should be appear in RFC 934 digests
|
|
1254 created by VM. These should be listed in the order you wish them
|
|
1255 to appear in the digest. Regular expressions are allowed.
|
|
1256 There's no need to anchor patterns with \"^\", as searches always
|
|
1257 start at the beginning of a line. Put a colon at the end of
|
|
1258 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1259 and \"Date-Sent\".) Header names are always matched case
|
|
1260 insensitively.
|
|
1261
|
|
1262 If the value of vm-rfc934-digest-discard-header-regexp is nil, the headers
|
|
1263 matched by vm-rfc934-digest-headers are the only headers that will be
|
|
1264 kept.
|
|
1265
|
|
1266 If vm-rfc934-digest-discard-header-regexp is non-nil, then only
|
|
1267 headers matched by that variable will be discarded; all others
|
|
1268 will be kept. vm-rfc934-digest-headers determines the order of
|
|
1269 appearance in that case, with headers not matching any in the
|
|
1270 vm-rfc934-digest-headers list appearing last in the headers
|
|
1271 of the digestified messages.")
|
|
1272
|
|
1273 (defvar vm-rfc934-digest-discard-header-regexp nil
|
|
1274 "*Non-nil value should be a regular expression header that tells
|
|
1275 what headers should not appear in RFC 934 digests created by VM. This
|
|
1276 variable along with vm-rfc934-digest-headers determines which headers
|
|
1277 are kept and which are discarded.
|
|
1278
|
|
1279 If the value of vm-rfc934-digest-discard-header-regexp is nil, the headers
|
|
1280 matched by vm-rfc934-digest-headers are the only headers that will be
|
|
1281 kept.
|
|
1282
|
|
1283 If vm-rfc934-digest-discard-header-regexp is non-nil, then only
|
|
1284 headers matched by this variable will be discarded; all others
|
|
1285 will be kept. vm-rfc934-digest-headers determines the order of
|
|
1286 appearance in that case, with headers not matching any in the
|
|
1287 vm-rfc934-digest-headers list appearing last in the headers
|
|
1288 of the digestified messages.")
|
|
1289
|
|
1290 (defvar vm-rfc1153-digest-headers
|
|
1291 '("Resent-"
|
|
1292 "Date:"
|
|
1293 "From:" "Sender:"
|
|
1294 "To:" "Cc:"
|
|
1295 "Subject:"
|
|
1296 "Message-ID:"
|
|
1297 "Keywords:")
|
|
1298 "*List of headers that should be appear in RFC 1153 digests
|
|
1299 created by VM. These should be listed in the order you wish them
|
|
1300 to appear in the digest. Regular expressions are allowed.
|
|
1301 There is no need to anchor patterns with \"^\", as searches always
|
|
1302 start at the beginning of a line. Put a colon at the end of
|
|
1303 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1304 and \"Date-Sent\".) Header names are always matched case
|
|
1305 insensitively.
|
|
1306
|
|
1307 If the value of vm-rfc1153-digest-discard-header-regexp is nil, the headers
|
|
1308 matched by vm-rfc1153-digest-headers are the only headers that will be
|
|
1309 kept.
|
|
1310
|
|
1311 If vm-rfc1153-digest-discard-header-regexp is non-nil, then only
|
|
1312 headers matched by that variable will be discarded; all others
|
|
1313 will be kept. vm-rfc1153-digest-headers determines the order of
|
|
1314 appearance in that case, with headers not matching any in the
|
|
1315 vm-rfc1153-digest-headers list appearing last in the headers of
|
|
1316 the digestified messages.")
|
|
1317
|
|
1318 (defvar vm-rfc1153-digest-discard-header-regexp "\\(X400-\\)?Received:"
|
|
1319 "*Non-nil value should be a regular expression header that tells
|
|
1320 what headers should not appear in RFC 1153 digests created by VM. This
|
|
1321 variable along with vm-rfc1153-digest-headers determines which headers
|
|
1322 are kept and which headers are discarded.
|
|
1323
|
|
1324 If the value of vm-rfc1153-digest-discard-header-regexp is nil, the headers
|
|
1325 matched by vm-rfc1153-digest-headers are the only headers that will be
|
|
1326 kept.
|
|
1327
|
|
1328 If vm-rfc1153-digest-discard-header-regexp is non-nil, then only
|
|
1329 headers matched by this variable will be discarded; all others
|
|
1330 will be kept. vm-rfc1153-digest-headers determines the order of
|
|
1331 appearance in that case, with headers not matching any in the
|
|
1332 vm-rfc1153-digest-headers list appearing last in the headers of
|
|
1333 the digestified messages.")
|
|
1334
|
20
|
1335 (defvar vm-mime-digest-headers
|
|
1336 '("Resent-"
|
|
1337 "From:" "Sender:"
|
|
1338 "To:" "Cc:"
|
|
1339 "Subject:"
|
|
1340 "Date:"
|
|
1341 "Message-ID:"
|
|
1342 "Keywords:"
|
|
1343 "MIME-Version:"
|
|
1344 "Content-")
|
|
1345 "*List of headers that should be appear in MIME digests
|
|
1346 created by VM. These should be listed in the order you wish them
|
|
1347 to appear in the messages in the digest. Regular expressions are
|
|
1348 allowed. There's no need to anchor patterns with \"^\", as
|
|
1349 searches always start at the beginning of a line. Put a colon at
|
|
1350 the end of patterns to get exact matches. (E.g. \"Date\" matches
|
|
1351 \"Date\" and \"Date-Sent\".) Header names are always matched
|
|
1352 case insensitively.
|
|
1353
|
|
1354 If the value of vm-mime-digest-discard-header-regexp is nil, the headers
|
|
1355 matched by vm-mime-digest-headers are the only headers that will be
|
|
1356 kept.
|
|
1357
|
|
1358 If vm-mime-digest-discard-header-regexp is non-nil, then only
|
|
1359 headers matched by that variable will be discarded; all others
|
|
1360 will be kept. vm-mime-digest-headers determines the order of
|
|
1361 appearance in that case, with headers not matching any in the
|
|
1362 vm-mime-digest-headers list appearing last in the headers
|
|
1363 of the digestified messages.")
|
|
1364
|
|
1365 (defvar vm-mime-digest-discard-header-regexp nil
|
|
1366 "*Non-nil value should be a regular expression header that tells
|
|
1367 which headers should not appear in MIME digests created
|
|
1368 by VM. This variable along with vm-mime-digest-headers
|
|
1369 determines which headers are kept and which are discarded.
|
|
1370
|
|
1371 If the value of vm-mime-digest-discard-header-regexp is nil, the headers
|
|
1372 matched by vm-mime-digest-headers are the only headers that will be
|
|
1373 kept.
|
|
1374
|
|
1375 If vm-mime-digest-discard-header-regexp is non-nil, then only
|
|
1376 headers matched by this variable will be discarded; all others
|
|
1377 will be kept. vm-mime-digest-headers determines the order of
|
|
1378 appearance in that case, with headers not matching any in the
|
|
1379 vm-mime-digest-headers list appearing last in the headers
|
|
1380 of the digestified messages.")
|
|
1381
|
0
|
1382 (defvar vm-resend-bounced-headers
|
20
|
1383 '("MIME-Version:" "Content-"
|
0
|
1384 "From:" "Sender:" "Reply-To:"
|
|
1385 "To:" "Cc:"
|
|
1386 "Subject:"
|
|
1387 "Newsgroups:"
|
|
1388 "In-Reply-To:" "References:"
|
|
1389 "Keywords:"
|
|
1390 "X-")
|
|
1391 "*List of headers that should be appear in messages resent with
|
|
1392 vm-resend-bounced-message. These should be listed in the order you wish them
|
|
1393 to appear in the message. Regular expressions are allowed.
|
|
1394 There is no need to anchor patterns with \"^\", as searches always
|
|
1395 start at the beginning of a line. Put a colon at the end of
|
|
1396 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1397 and \"Date-Sent\".) Header names are always matched case
|
|
1398 insensitively.
|
|
1399
|
|
1400 If the value of vm-resend-bounced-discard-header-regexp is nil, the headers
|
|
1401 matched by vm-resend-bounced-headers are the only headers that will be
|
|
1402 kept.
|
|
1403
|
|
1404 If vm-resend-bounced-discard-header-regexp is non-nil, then only
|
|
1405 headers matched by that variable will be discarded; all others
|
|
1406 will be kept. vm-resend-bounced-headers determines the order of
|
|
1407 appearance in that case, with headers not matching any in the
|
|
1408 vm-resend-bounced-headers list appearing last in the headers of
|
|
1409 the message.")
|
|
1410
|
|
1411 (defvar vm-resend-bounced-discard-header-regexp nil
|
|
1412 "*Non-nil value should be a regular expression that tells
|
|
1413 what headers should not appear in a resent bounced message. This
|
|
1414 variable along with vm-resend-bounced-headers determines which headers
|
|
1415 are kept and which headers are discarded.
|
|
1416
|
|
1417 If the value of vm-resend-bounced-discard-header-regexp is nil,
|
|
1418 the headers matched by vm-resend-bounced-headers are the only
|
|
1419 headers that will be kept.
|
|
1420
|
|
1421 If vm-resend-bounced-discard-header-regexp is non-nil, then only
|
|
1422 headers matched by this variable will be discarded; all others
|
|
1423 will be kept. vm-resend-bounced-headers determines the order of
|
|
1424 appearance in that case, with headers not matching any in the
|
|
1425 vm-resend-bounced-headers list appearing last in the headers of
|
|
1426 the message.")
|
|
1427
|
|
1428 (defvar vm-resend-headers nil
|
|
1429 "*List of headers that should be appear in messages resent with
|
|
1430 vm-resend-message. These should be listed in the order you wish them
|
|
1431 to appear in the message. Regular expressions are allowed.
|
|
1432 There is no need to anchor patterns with \"^\", as searches always
|
|
1433 start at the beginning of a line. Put a colon at the end of
|
|
1434 patterns to get exact matches. (E.g. \"Date\" matches \"Date\"
|
|
1435 and \"Date-Sent\".) Header names are always matched case
|
|
1436 insensitively.
|
|
1437
|
|
1438 If the value of vm-resend-discard-header-regexp is nil, the headers
|
|
1439 matched by vm-resend-headers are the only headers that will be
|
|
1440 kept.
|
|
1441
|
|
1442 If vm-resend-discard-header-regexp is non-nil, then only
|
|
1443 headers matched by that variable will be discarded; all others
|
|
1444 will be kept. vm-resend-headers determines the order of
|
|
1445 appearance in that case, with headers not matching any in the
|
|
1446 vm-resend-headers list appearing last in the headers of
|
|
1447 the message.")
|
|
1448
|
|
1449 (defvar vm-resend-discard-header-regexp "\\(\\(X400-\\)?Received:\\|Resent-\\)"
|
|
1450 "*Non-nil value should be a regular expression that tells
|
|
1451 what headers should not appear in a resent message. This
|
20
|
1452 variable along with vm-resend-headers determines which
|
0
|
1453 headers are kept and which headers are discarded.
|
|
1454
|
|
1455 If the value of vm-resend-discard-header-regexp is nil,
|
|
1456 the headers matched by vm-resend-headers are the only
|
|
1457 headers that will be kept.
|
|
1458
|
|
1459 If vm-resend-discard-header-regexp is non-nil, then only
|
|
1460 headers matched by this variable will be discarded; all others
|
|
1461 will be kept. vm-resend-headers determines the order of
|
|
1462 appearance in that case, with headers not matching any in the
|
|
1463 vm-resend-headers list appearing last in the headers of
|
|
1464 the message.")
|
|
1465
|
|
1466 (defvar vm-summary-format "%n %*%a %-17.17F %-3.3m %2d %4l/%-5c %I\"%s\"\n"
|
|
1467 "*String which specifies the message summary line format.
|
|
1468 The string may contain the printf-like `%' conversion specifiers which
|
|
1469 substitute information about the message into the final summary line.
|
|
1470
|
|
1471 Recognized specifiers are:
|
|
1472 a - attribute indicators (always four characters wide)
|
|
1473 The first char is `D', `N', `U' or ` ' for deleted, new, unread
|
|
1474 and read messages respectively.
|
|
1475 The second char is `F', `W' or ` ' for filed (saved) or written
|
|
1476 messages.
|
|
1477 The third char is `R', `Z' or ` ' for messages replied to,
|
|
1478 and forwarded messages.
|
|
1479 The fourth char is `E' if the message has been edited, ` ' otherwise.
|
|
1480 A - longer version of attributes indicators (seven characters wide)
|
|
1481 The first char is `D', `N', `U' or ` ' for deleted, new, unread
|
|
1482 and read messages respectively.
|
|
1483 The second is `r' or ` ', for message replied to.
|
|
1484 The third is `z' or ` ', for messages forwarded.
|
|
1485 The fourth is `b' or ` ', for messages redistributed.
|
|
1486 The fifth is `f' or ` ', for messages filed.
|
|
1487 The sixth is `w' or ` ', for messages written.
|
|
1488 The seventh is `e' or ` ', for messages that have been edited.
|
|
1489 c - number of characters in message (ignoring headers)
|
|
1490 d - numeric day of month message sent
|
|
1491 f - author's address
|
|
1492 F - author's full name (same as f if full name not found)
|
|
1493 h - hour:min:sec message sent
|
|
1494 H - hour:min message sent
|
|
1495 i - message ID
|
|
1496 I - thread indentation
|
|
1497 l - number of lines in message (ignoring headers)
|
|
1498 L - labels (as a comma list)
|
|
1499 m - month message sent
|
|
1500 M - numeric month message sent (January = 1)
|
|
1501 n - message number
|
|
1502 s - message subject
|
|
1503 t - addresses of the recipients of the message, in a comma-separated list
|
|
1504 T - full names of the recipients of the message, in a comma-separated list
|
|
1505 If a full name cannot be found, the corresponding address is used
|
|
1506 instead.
|
|
1507 U - user defined specifier. The next character in the format
|
|
1508 string should be a letter. VM will call the function
|
|
1509 vm-summary-function-<letter> (e.g. vm-summary-function-A for
|
|
1510 \"%UA\") in the folder buffer with the message being summarized
|
|
1511 bracketed by (point-min) and (point-max). The function
|
|
1512 will be passed a message struct as an argument.
|
|
1513 The function should return a string, which VM will insert into
|
|
1514 the summary as it would for information from any other summary
|
|
1515 specifier.
|
|
1516 w - day of the week message sent
|
|
1517 y - year message sent
|
|
1518 z - timezone of date when the message was sent
|
|
1519 * - `*' if the message is marked, ` ' otherwise
|
|
1520
|
|
1521 Use %% to get a single %.
|
|
1522
|
|
1523 A numeric field width may be given between the `%' and the specifier;
|
|
1524 this causes right justification of the substituted string. A negative field
|
|
1525 width causes left justification.
|
|
1526
|
|
1527 The field width may be followed by a `.' and a number specifying
|
|
1528 the maximum allowed length of the substituted string. If the
|
|
1529 string is longer than this value the right end of the string is
|
|
1530 truncated. If the value is negative, the string is truncated on
|
20
|
1531 the left instead of the right.
|
0
|
1532
|
|
1533 The summary format need not be one line per message but it must end with
|
|
1534 a newline, otherwise the message pointer will not be displayed correctly
|
|
1535 in the summary window.")
|
|
1536
|
|
1537 (defvar vm-summary-arrow "->"
|
|
1538 "*String that is displayed to the left of the summary of the
|
|
1539 message VM consider to be the current message. The value takes
|
|
1540 effect when the summary buffer is created. Changing this
|
|
1541 variable's value has no effect on existing summary buffers.")
|
|
1542
|
|
1543 (defvar vm-summary-highlight-face 'bold
|
|
1544 "*Face to use to highlight the summary entry for the current message.
|
|
1545 Nil means don't highlight the current message's summary entry.")
|
|
1546
|
20
|
1547 (defvar vm-mouse-track-summary t
|
|
1548 "*Non-nil value means highlight summary lines as the mouse passes
|
|
1549 over them.")
|
|
1550
|
0
|
1551 (defvar vm-summary-show-threads nil
|
|
1552 "*Non-nil value means VM should display and maintain
|
|
1553 message thread trees in the summary buffer. This means that
|
|
1554 messages with a common ancestor will be displayed contiguously in
|
|
1555 the summary. (If you have vm-move-messages-physically set
|
|
1556 non-nil the folder itself will be reordered to match the thread
|
|
1557 ordering.) If you use the `%I' summary format specifier in your
|
|
1558 vm-summary-format, indentation will be provided as described in the
|
|
1559 documentation for vm-summary-thread-indent-level (which see).
|
|
1560
|
|
1561 A nil value means don't display thread information. The `%I'
|
|
1562 specifier does nothing in the summary format.
|
|
1563
|
|
1564 This variable automatically becomes buffer-local when set in any
|
|
1565 fashion. You should set this variable only in your .vm or .emacs
|
|
1566 file. Use setq-default. Once VM has been started, you should not
|
|
1567 set this variable directly, rather you should use the command
|
|
1568 vm-toggle-threads-display, normally bound to C-t.")
|
|
1569 (make-variable-buffer-local 'vm-summary-show-threads)
|
|
1570
|
|
1571 (defvar vm-summary-thread-indent-level 2
|
|
1572 "*Value should be a number that specifies how much
|
|
1573 indentation the '%I' summary format specifier should provide per
|
|
1574 thread level. A message's `thread level' refers to the number of
|
|
1575 direct ancestors from the message to the oldest ancestor the
|
|
1576 message has that is in the current folder. For example, the
|
|
1577 first message of a thread is generally a message about a new
|
|
1578 topic, e.g. a message that is not a reply to some other message.
|
|
1579 Therefore it has no ancestor and would cause %I to generate no
|
|
1580 indentation. A reply to this message will be indented by the value
|
|
1581 of vm-summary-thread-indent-level. A reply to that reply will be
|
|
1582 indented twice the value of vm-summary-thread-indent-level.")
|
|
1583
|
|
1584 (defvar vm-thread-using-subject t
|
|
1585 "*Non-nil value causes VM to use the Subject header to thread messages.
|
|
1586 Messages with the same subject will be grouped together.
|
|
1587
|
|
1588 A nil value means VM will disregard the Subject header when
|
|
1589 threading messages.")
|
|
1590
|
|
1591 (defvar vm-summary-uninteresting-senders nil
|
|
1592 "*Non-nil value should be a regular expression that matches
|
|
1593 addresses that you don't consider interesting enough to
|
|
1594 appear in the summary. When such senders would be displayed by
|
|
1595 the %F or %f summary format specifiers VM will substitute the
|
|
1596 value of vm-summary-uninteresting-senders-arrow (default \"To:
|
|
1597 \") followed by what would be shown by the %T and %t specifiers
|
|
1598 respectively.")
|
|
1599
|
|
1600 (defvar vm-summary-uninteresting-senders-arrow "To: "
|
|
1601 "*String to display before the string that is displayed instead of an
|
|
1602 \"uninteresting\" sender. See vm-summary-uninteresting-senders.")
|
|
1603
|
|
1604 (defvar vm-auto-center-summary nil
|
|
1605 "*Value controls whether VM will keep the summary arrow vertically
|
|
1606 centered within the summary window. A value of t causes VM to always
|
|
1607 keep arrow centered. A value of nil means VM will never bother centering
|
|
1608 the arrow. A value that is not nil and not t causes VM to center the
|
|
1609 arrow only if the summary window is not the only existing window.")
|
|
1610
|
|
1611 (defvar vm-subject-ignored-prefix "^\\(re: *\\)+"
|
|
1612 "*Non-nil value should be a regular expression that matches
|
|
1613 strings at the beginning of the Subject header that you want VM to ignore
|
|
1614 when threading, sorting, marking, and killing messages by subject.
|
|
1615
|
|
1616 Matches are done case-insensitively.")
|
|
1617
|
|
1618 (defvar vm-subject-ignored-suffix "\\( (fwd)\\| \\)+$"
|
|
1619 "*Non-nil value should be a regular expression that matches
|
|
1620 strings at the end of the Subject header that you want VM to ignore
|
|
1621 when threading, sorting, marking and killing messages by subject.
|
|
1622
|
|
1623 Matches are done case-insensitively.")
|
|
1624
|
|
1625 (defvar vm-mutable-windows pop-up-windows
|
|
1626 "*This variable's value controls VM's window usage.
|
|
1627
|
|
1628 A non-nil value gives VM free run of the Emacs display; it will commandeer
|
|
1629 the entire screen for its purposes.
|
|
1630
|
|
1631 A value of nil restricts VM's window usage to the window from which
|
|
1632 it was invoked. VM will not create, delete, or use any other windows,
|
|
1633 nor will it resize its own window.")
|
|
1634
|
|
1635 (defvar vm-mutable-frames nil
|
|
1636 "*Non-nil value means VM is allowed to create and destroy frames
|
|
1637 to display and undisplay buffers.
|
|
1638
|
|
1639 VM can create a frame to display a buffer, and delete frame to
|
|
1640 undisplay a buffer. A nil value means VM should not create or
|
|
1641 delete frames.
|
|
1642
|
|
1643 This variable is _not_ an analogue of vm-mutable-windows. VM
|
|
1644 still might create frames if this variable is nil. If you set
|
|
1645 the vm-frame-per-* variables VM will still create frames. Using
|
|
1646 the vm-frame-per-* variables you have more control over when it
|
|
1647 happens.
|
|
1648
|
|
1649 Users should consider setting vm-frame-per-folder and
|
|
1650 vm-frame-per-composition and/or using the -other-frame commands
|
|
1651 instead of setting this variable. If vm-mutable-frames is set to t,
|
|
1652 then vm-mutable-windows should probably be set to nil so that you
|
|
1653 avoid splitting frames.
|
|
1654
|
|
1655 This variable does not apply to the VM commands whose
|
|
1656 names end in -other-frame, which always create a new frame.
|
|
1657
|
|
1658 This variable has no meaning if you're not running Emacs native
|
|
1659 under X Windows or some other window system that allows multiple
|
|
1660 Emacs frames.")
|
|
1661
|
20
|
1662 (defvar vm-raise-frame-at-startup t
|
|
1663 "*Specifies whether VM should raise its frame at startup.
|
|
1664 A value of nil means never raise the frame.
|
|
1665 A value of t means always raise the frame.
|
|
1666 Other values are reserved for future use.")
|
|
1667
|
0
|
1668 (defvar vm-frame-per-folder t
|
|
1669 "*Non-nil value causes the folder visiting commands to visit in a new frame.
|
|
1670 Nil means the commands will use the current frame. This variable
|
|
1671 does not apply to the VM commands whose names end in
|
|
1672 -other-frame, which always create a new frame.
|
|
1673
|
|
1674 This variable has no meaning if you're not running Emacs native
|
|
1675 under X Windows or some other window system that allows multiple
|
|
1676 Emacs frames.")
|
|
1677
|
|
1678 (defvar vm-frame-per-summary nil
|
|
1679 "*Non-nil value causes VM to display the folder summary in its own frame.
|
|
1680 Nil means the vm-summarize command will use the current frame.
|
|
1681 This variable does not apply to vm-summarize-other-frame, which
|
|
1682 always create a new frame.
|
|
1683
|
|
1684 This variable has no meaning if you're not running Emacs native
|
|
1685 under X Windows or some other window system that allows multiple
|
|
1686 Emacs frames.")
|
|
1687
|
|
1688 (defvar vm-frame-per-composition t
|
|
1689 "*Non-nil value causes the mail composition commands to open a new frame.
|
|
1690 Nil means the commands will use the current frame. This variable
|
|
1691 does not apply to the VM commands whose names end in
|
|
1692 -other-frame, which always create a new frame.
|
|
1693
|
|
1694 This variable has no meaning if you're not running Emacs native
|
|
1695 under X Windows or some other window system that allows multiple
|
|
1696 Emacs frames.")
|
|
1697
|
|
1698 (defvar vm-frame-per-edit t
|
|
1699 "*Non-nil value causes vm-edit-message to open a new frame.
|
|
1700 Nil means the vm-edit-message will use the current frame. This
|
|
1701 variable does not apply to vm-edit-message-other-frame, which
|
|
1702 always create a new frame.
|
|
1703
|
|
1704 This variable has no meaning if you're not running Emacs native
|
|
1705 under X Windows or some other window system that allows multiple
|
|
1706 Emacs frames.")
|
|
1707
|
20
|
1708 (defvar vm-frame-per-completion t
|
|
1709 "*Non-nil value causes VM to open a new frame on mouse
|
|
1710 initiated completing reads. A mouse initiated completing read
|
|
1711 occurs when you invoke a VM command using the mouse, either with a
|
|
1712 menu or a toolbar button. That command must then prompt you for
|
|
1713 information, and there must be a limited set of proper responses.
|
|
1714
|
|
1715 If these conditions are met and vm-frame-per-completion's value
|
|
1716 is non-nil, VM will create a new frame containing a list of
|
|
1717 responses that you can select with the mouse.
|
|
1718
|
|
1719 A nil value means the current frame will be used to display the
|
|
1720 list of choices.
|
|
1721
|
|
1722 This variable has no meaning if you're not running Emacs native
|
|
1723 under X Windows or some other window system that allows multiple
|
|
1724 Emacs frames.")
|
|
1725
|
10
|
1726 (defvar vm-frame-parameter-alist nil
|
0
|
1727 "*Non-nil value is an alist of types and lists of frame parameters.
|
|
1728 This list tells VM what frame parameters to associate with each
|
|
1729 new frame it creates of a specific type.
|
|
1730
|
|
1731 The alist should be of this form
|
|
1732
|
20
|
1733 ((SYMBOL PARAMLIST) (SYMBOL2 PARAMLIST2) ...)
|
|
1734
|
|
1735 SYMBOL must be one of `completion', `composition', `edit',
|
|
1736 `folder', `primary-folder' or `summary'. It specifies the type
|
|
1737 of frame that the following PARAMLIST applies to.
|
|
1738
|
|
1739 `completion' specifies parameters for frames that display list of
|
|
1740 choices generated by a mouse-initiated completing read.
|
|
1741 (See vm-frame-per-completion.)
|
0
|
1742 `composition' specifies parameters for mail composition frames.
|
|
1743 `edit' specifies parameters for message edit frames
|
|
1744 (e.g. created by vm-edit-message-other-frame)
|
|
1745 `folder' specifies parameters for frames created by `vm' and the
|
|
1746 `vm-visit-' commands.
|
|
1747 `primary-folder' specifies parameters for the frame created by running
|
|
1748 `vm' without any arguments.
|
20
|
1749 `summary' specifies parameters for frames that display a summary buffer
|
0
|
1750 (e.g. created by vm-summarize-other-frame)
|
|
1751
|
|
1752 PARAMLIST is a list of pairs as described in the documentation for
|
|
1753 the function `make-frame'.
|
|
1754
|
|
1755 This variable has no effect on frames created as a result of
|
|
1756 having vm-mutable-frames set to non-nil.")
|
|
1757
|
|
1758 (defvar vm-search-other-frames t
|
|
1759 "*Non-nil means VM should search frames other than the selected frame
|
|
1760 when looking for a window that is already displaying a buffer that
|
|
1761 VM wants to display or undisplay.")
|
|
1762
|
24
|
1763 (defvar vm-image-directory
|
|
1764 (expand-file-name (concat data-directory "vm/"))
|
|
1765 "*Value specifies the directory VM should find its artwork.")
|
|
1766
|
0
|
1767 (defvar vm-use-toolbar
|
|
1768 '(next previous delete/undelete autofile file
|
|
1769 reply compose print visit quit nil help)
|
|
1770 "*Non-nil value causes VM to provide a toolbar interface.
|
|
1771 Value should be a list of symbols that will determine which
|
24
|
1772 toolbar buttons will appear and in what order. Valid symbol
|
0
|
1773 value within the list are:
|
|
1774
|
20
|
1775 autofile
|
|
1776 compose
|
|
1777 delete/undelete
|
|
1778 file
|
24
|
1779 getmail
|
20
|
1780 help
|
|
1781 mime
|
|
1782 next
|
|
1783 previous
|
|
1784 print
|
|
1785 quit
|
|
1786 reply
|
|
1787 visit
|
|
1788 nil
|
0
|
1789
|
|
1790 If nil appears in the list, it should appear exactly once. All
|
|
1791 buttons after nil in the list will be displayed flushright in
|
24
|
1792 top/bottom toolbars and flushbottom in left/right toolbars.
|
0
|
1793
|
|
1794 This variable only has meaning under XEmacs 19.12 and beyond.
|
|
1795 See also vm-toolbar-orientation to control where the toolbar is placed.")
|
|
1796
|
|
1797 (defvar vm-toolbar-orientation 'left
|
|
1798 "*Value is a symbol that specifies where the VM toolbar is located.
|
|
1799 Legal values are `left', `right' `top' and `bottom'. Any other
|
|
1800 value will be interpreted as `top'.
|
|
1801
|
|
1802 This variable only has meaning under XEmacs 19.12 and beyond.")
|
|
1803
|
24
|
1804 (defvar vm-toolbar-pixmap-directory vm-image-directory
|
0
|
1805 "*Value specifies the directory VM should find its toolbar pixmaps.")
|
|
1806
|
10
|
1807 (defvar vm-toolbar nil
|
|
1808 "*Non-nil value should be a list of toolbar button descriptors.
|
|
1809 See the documentation for the variable default-toolbar for a
|
|
1810 definition of what a toolbar button descriptor is.
|
|
1811
|
|
1812 If vm-toolbar is set non-nil VM will use its value as a toolbar
|
|
1813 instantiator instead of the usual beavior of building a button
|
|
1814 list based on the value of vm-use-toolbar. vm-use-toolbar still
|
|
1815 must be set non-nil for a toolbar to appear, however.
|
|
1816
|
|
1817 Consider this variable experimental; it may not be supported forever.")
|
|
1818
|
20
|
1819 (defvar vm-use-menus
|
|
1820 (nconc (list 'folder 'motion 'send 'mark 'label 'sort 'virtual)
|
|
1821 (cond ((string-match ".*-.*-\\(win95\\|nt\\)" system-configuration)
|
|
1822 nil)
|
|
1823 (t (list 'undo)))
|
|
1824 (list 'dispose)
|
|
1825 (cond ((string-match ".*-.*-\\(win95\\|nt\\)" system-configuration)
|
|
1826 nil)
|
|
1827 (t (list 'emacs)))
|
|
1828 (list nil 'help))
|
0
|
1829 "*Non-nil value causes VM to provide a menu interface.
|
|
1830 A value that is a list causes VM to install its own menubar.
|
|
1831 A value of 1 causes VM to install a \"VM\" item in the Emacs menubar.
|
|
1832
|
|
1833 If the value of vm-use-menus is a list, it should be a list of
|
|
1834 symbols. The symbols and the order that they are listed
|
|
1835 determine what menus will be in the menubar and how they are
|
|
1836 ordered. Valid symbols values are:
|
|
1837
|
|
1838 dispose
|
|
1839 emacs
|
|
1840 folder
|
|
1841 help
|
|
1842 label
|
|
1843 mark
|
|
1844 motion
|
|
1845 send
|
|
1846 sort
|
|
1847 undo
|
|
1848 virtual
|
|
1849 nil
|
|
1850
|
|
1851 If nil appears in the list, it should appear exactly once. All
|
|
1852 menus after nil in the list will be displayed flushright in
|
|
1853 menubar.
|
|
1854
|
|
1855 This variable only has meaning in Emacs environments where menus
|
|
1856 are provided, which usually means Emacs has to be running under a
|
|
1857 window system.")
|
|
1858
|
20
|
1859 (defvar vm-popup-menu-on-mouse-3 t
|
|
1860 "*Non-nil value means VM should provide context-sensitive menus on mouse-3.
|
|
1861 A nil value means VM should not change the binding of mouse-3.")
|
|
1862
|
0
|
1863 (defvar vm-warp-mouse-to-new-frame nil
|
|
1864 "*Non-nil value causes VM to move the mouse cursor into newly created frames.
|
|
1865 This is useful to give the new frame the focus under some window managers
|
|
1866 that randomly place newly created frames.
|
|
1867
|
|
1868 Nil means don't move the mouse cursor.")
|
|
1869
|
20
|
1870 (defvar vm-url-browser
|
|
1871 (cond ((fboundp 'w3-fetch-other-frame)
|
|
1872 'w3-fetch-other-frame)
|
|
1873 ((fboundp 'w3-fetch)
|
|
1874 'w3-fetch)
|
|
1875 (t 'vm-mouse-send-url-to-netscape))
|
|
1876 "*Non-nil value means VM should enable URL passing.
|
|
1877 This means that VM will search for URLs (Uniform Resource
|
0
|
1878 Locators) in messages and make it possible for you to pass them
|
|
1879 to a World Wide Web browser.
|
|
1880
|
|
1881 Clicking mouse-2 on the URL will send it to the browser.
|
|
1882
|
20
|
1883 By default clicking mouse-3 on the URL will pop up a menu of
|
|
1884 browsers and you can pick which one you want to use. If
|
|
1885 vm-popup-menu-on-mouse-3 is set to nil, you will not see the menu.
|
0
|
1886
|
|
1887 Moving point to a character within the URL and pressing RETURN
|
20
|
1888 will send the URL to the browser.
|
0
|
1889
|
|
1890 If the value of vm-url-browser is a string, it should specify
|
|
1891 name of an external browser to run. The URL will be passed to
|
|
1892 the program as its first argument.
|
|
1893
|
20
|
1894 If the value of vm-url-browser is a symbol, it should specify a
|
0
|
1895 Lisp function to call. The URL will be passed to the program as
|
|
1896 its first and only argument. Use
|
|
1897
|
|
1898 (setq vm-url-browser 'vm-mouse-send-url-to-netscape)
|
|
1899
|
|
1900 for Netscape, and
|
|
1901
|
|
1902 (setq vm-url-browser 'vm-mouse-send-url-to-mosaic)
|
|
1903
|
|
1904 for Mosaic. The advantage of using them is that they will display
|
|
1905 an URL using on existing Mosaic or Netscape process, if possible.
|
|
1906
|
20
|
1907 A nil value means VM should not enable URL passing to browsers.")
|
0
|
1908
|
|
1909 (defvar vm-highlight-url-face 'bold-italic
|
|
1910 "*Non-nil value should be a face to use display URLs found in messages.
|
|
1911 Nil means don't highlight URLs.")
|
|
1912
|
|
1913 (defvar vm-url-search-limit 12000
|
|
1914 "*Non-nil numeric value tells VM how hard to search for URLs.
|
|
1915 The number specifies the maximum message size in characters that
|
|
1916 VM will search for URLs. For message larger than this value, VM
|
|
1917 will search from the beginning of the mssage to a point
|
|
1918 vm-url-search-limit / 2 characters into the message. Then VM will
|
|
1919 search from a point vm-url-search-limit / 2 characters from the
|
|
1920 end of the message to the end of message.")
|
|
1921
|
|
1922 (defvar vm-display-xfaces nil
|
|
1923 "*Non-nil means display images as specifies in X-Face headers.
|
|
1924 This requires at least XEmacs 19.12 with native xface support compiled in.")
|
|
1925
|
|
1926 (defvar vm-startup-with-summary t
|
|
1927 "*Value tells VM whether to generate a summary when a folder is visited.
|
|
1928 Nil means don't automatically generate a summary.
|
|
1929
|
|
1930 A value of t means always generate a summary.
|
|
1931
|
|
1932 A positive numeric value N means only generate a summary if there
|
|
1933 are N or more messages.
|
|
1934
|
|
1935 A negative numeric value -N means only generate a summary if
|
|
1936 there are N or less messages.")
|
|
1937
|
|
1938 (defvar vm-follow-summary-cursor t
|
|
1939 "*Non-nil value causes VM to select the message under the cursor in the
|
|
1940 summary window before executing commands that operate on the current message.
|
|
1941 This occurs only when the summary buffer window is the selected window.")
|
|
1942
|
|
1943 (defvar vm-jump-to-new-messages t
|
|
1944 "*Non-nil value causes VM to jump to the first new message
|
|
1945 whenever such messages arrive in a folder or the first time a
|
|
1946 folder is visited.
|
|
1947
|
|
1948 See also vm-jump-to-unread-messages.")
|
|
1949
|
|
1950 (defvar vm-jump-to-unread-messages t
|
|
1951 "*Non-nil value causes VM to jump to the first unread message
|
|
1952 whenever such messages arrive in a folder or the first time a
|
|
1953 folder is visited. New messages are considered unread in this
|
|
1954 context so new messages will be jumped to as well.
|
|
1955
|
|
1956 The value of vm-jump-to-new-messages takes precedence over the
|
|
1957 setting of this variable. So if there are unread messages and
|
|
1958 new messages VM will jump to the first new message, even if an
|
|
1959 unread message appears before it in the folder, provided
|
|
1960 vm-jump-to-new-messages is non-nil.")
|
|
1961
|
|
1962 (defvar vm-skip-deleted-messages t
|
|
1963 "*Non-nil value causes VM's `n' and 'p' commands to skip over
|
|
1964 deleted messages. A value of t causes deleted messages to always be skipped.
|
|
1965 A value that is not nil and not t causes deleted messages to be skipped only
|
|
1966 if there are other messages that are not flagged for deletion in the desired
|
|
1967 direction of motion.")
|
|
1968
|
|
1969 (defvar vm-skip-read-messages nil
|
|
1970 "*Non-nil value causes VM's `n' and `p' commands to skip over
|
|
1971 messages that have already been read, in favor of new or unread messages.
|
|
1972 A value of t causes read messages to always be skipped. A value that is
|
|
1973 not nil and not t causes read messages to be skipped only if there are
|
|
1974 unread messages in the desired direction of motion.")
|
|
1975
|
|
1976 (defvar vm-move-after-deleting nil
|
|
1977 "*Non-nil value causes VM's `d' command to automatically invoke
|
|
1978 vm-next-message or vm-previous-message after deleting, to move
|
|
1979 past the deleted messages. A value of t means motion should
|
|
1980 honor the value of vm-circular-folders. A value that is not t
|
|
1981 and not nil means that motion should be done as if
|
|
1982 vm-circular-folders is set to nil.")
|
|
1983
|
|
1984 (defvar vm-move-after-undeleting nil
|
|
1985 "*Non-nil value causes VM's `u' command to automatically invoke
|
|
1986 vm-next-message or vm-previous-message after undeleting, to move
|
|
1987 past the undeleted messages. A value of t means motion should
|
|
1988 honor the value of vm-circular-folders. A value that is not t
|
|
1989 and not nil means that motion should be done as if
|
|
1990 vm-circular-folders is set to nil.")
|
|
1991
|
20
|
1992 (defvar vm-move-after-killing nil
|
|
1993 "*Non-nil value causes VM's `k' command to automatically invoke
|
|
1994 vm-next-message or vm-previous-message after killing messages, to try
|
|
1995 to move past the deleted messages. A value of t means motion
|
|
1996 should honor the value of vm-circular-folders. A value that is
|
|
1997 not t and not nil means that motion should be done as if
|
|
1998 vm-circular-folders is set to nil.")
|
|
1999
|
0
|
2000 (defvar vm-delete-after-saving nil
|
|
2001 "*Non-nil value causes VM automatically to mark messages for deletion
|
|
2002 after successfully saving them to a folder.")
|
|
2003
|
|
2004 (defvar vm-delete-after-archiving nil
|
|
2005 "*Non-nil value causes VM automatically to mark messages for deletion
|
|
2006 after successfully auto-archiving them with the vm-auto-archive-messages
|
|
2007 command.")
|
|
2008
|
|
2009 (defvar vm-delete-after-bursting nil
|
|
2010 "*Non-nil value causes VM automatically to mark a message for deletion
|
|
2011 after it has been successfully burst by the vm-burst-digest command.")
|
|
2012
|
|
2013 (defvar vm-circular-folders 0
|
|
2014 "*Value determines whether VM folders will be considered circular by
|
|
2015 various commands. `Circular' means VM will wrap from the end of the folder
|
|
2016 to the start and vice versa when moving the message pointer, or deleting,
|
|
2017 undeleting or saving messages before or after the current message.
|
|
2018
|
|
2019 A value of t causes all VM commands to consider folders circular.
|
|
2020
|
|
2021 A value of nil causes all of VM commands to signal an error if the start
|
|
2022 or end of the folder would have to be passed to complete the command.
|
|
2023 For movement commands, this occurs after the message pointer has been
|
|
2024 moved as far as possible in the specified direction. For other commands,
|
|
2025 the error occurs before any part of the command has been executed, i.e.
|
|
2026 no deletions, saves, etc. will be done unless they can be done in their
|
|
2027 entirety.
|
|
2028
|
|
2029 A value that is not nil and not t causes only VM's movement commands to
|
|
2030 consider folders circular. Saves, deletes and undelete commands will
|
|
2031 behave the same as if the value is nil.")
|
|
2032
|
|
2033 (defvar vm-search-using-regexps nil
|
|
2034 "*Non-nil value causes VM's search command to interpret user input as a
|
|
2035 regular expression instead of as a literal string.")
|
|
2036
|
|
2037 (defvar vm-move-messages-physically nil
|
|
2038 "*Non-nil value causes VM's commands that change the message order
|
|
2039 of a folder to always move the physical messages involved and not
|
|
2040 just change the presentation order. Nil means that commands just
|
|
2041 change the order in which VM displays messages and leave the
|
|
2042 folder itself undisturbed.")
|
|
2043
|
|
2044 (defvar vm-edit-message-mode 'text-mode
|
|
2045 "*Major mode to use when editing messages in VM.")
|
|
2046
|
|
2047 (defvar vm-print-command lpr-command
|
|
2048 "*Command VM uses to print messages.")
|
|
2049
|
|
2050 (defvar vm-print-command-switches lpr-switches
|
20
|
2051 "*List of command line flags passed to the command named by vm-print-command.
|
0
|
2052 VM uses vm-print-command to print messages.")
|
|
2053
|
|
2054 (defvar vm-berkeley-mail-compatibility
|
|
2055 (memq system-type '(berkeley-unix netbsd))
|
|
2056 "*Non-nil means to read and write BSD Mail(1) style Status: headers.
|
|
2057 This makes sense if you plan to use VM to read mail archives created by
|
|
2058 Mail.")
|
|
2059
|
|
2060 (defvar vm-strip-reply-headers nil
|
|
2061 "*Non-nil value causes VM to strip away all comments and extraneous text
|
|
2062 from the headers generated in reply messages. If you use the \"fakemail\"
|
20
|
2063 program as distributed with Emacs, you probably want to set this variable
|
0
|
2064 to t, because as of Emacs v18.52 \"fakemail\" could not handle unstripped
|
|
2065 headers.")
|
|
2066
|
|
2067 (defvar vm-select-new-message-hook nil
|
|
2068 "*List of hook functions called every time a message with the 'new'
|
|
2069 attribute is made to be the current message. When the hooks are run the
|
|
2070 current buffer will be the folder containing the message and the
|
|
2071 start and end of the message will be bracketed by (point-min) and
|
|
2072 (point-max).")
|
|
2073
|
|
2074 (defvar vm-select-unread-message-hook nil
|
|
2075 "*List of hook functions called every time a message with the 'unread'
|
|
2076 attribute is made to be the current message. When the hooks are run the
|
|
2077 current buffer will be the folder containing the message and the
|
|
2078 start and end of the message will be bracketed by (point-min) and
|
|
2079 (point-max).")
|
|
2080
|
|
2081 (defvar vm-select-message-hook nil
|
|
2082 "*List of hook functions called every time a message
|
|
2083 is made to be the current message. When the hooks are run the
|
|
2084 current buffer will be the folder containing the message and the
|
|
2085 start and end of the message will be bracketed by (point-min) and
|
|
2086 (point-max).")
|
|
2087
|
|
2088 (defvar vm-arrived-message-hook nil
|
|
2089 "*List of hook functions called once for each message gathered from
|
|
2090 the system mail spool, or from another folder with
|
|
2091 vm-get-new-mail, or from a digest with vm-burst-digest. When the
|
|
2092 hooks are run the current buffer will be the folder containing
|
|
2093 the message and the start and end of the message will be
|
|
2094 bracketed by (point-min) and (point-max).")
|
|
2095
|
|
2096 (defvar vm-arrived-messages-hook nil
|
|
2097 "*List of hook functions called after VM has gathered a group of
|
|
2098 messages from the system mail spool, or from another folder with
|
|
2099 vm-get-new-mail, or from a digest with vm-burst-digest. When the
|
|
2100 hooks are run, the new messages will have already been added to
|
|
2101 the message list but may not yet appear in the summary. When the
|
|
2102 hooks are run the current buffer will be the folder containing
|
|
2103 the messages.")
|
|
2104
|
|
2105 (defvar vm-reply-hook nil
|
|
2106 "*List of hook functions to be run after a Mail mode
|
|
2107 composition buffer has been created for a reply. VM runs this
|
|
2108 hook and then runs vm-mail-mode-hook before leaving the user in
|
|
2109 the Mail mode buffer.")
|
|
2110
|
|
2111 (defvar vm-forward-message-hook nil
|
|
2112 "*List of hook functions to be run after a Mail mode
|
|
2113 composition buffer has been created to forward a message. VM
|
|
2114 runs this hook and then runs vm-mail-mode-hook before leaving the
|
|
2115 user in the Mail mode buffer.")
|
|
2116
|
|
2117 (defvar vm-resend-bounced-message-hook nil
|
|
2118 "*List of hook functions to be run after a Mail mode
|
|
2119 composition buffer has been created to resend a bounced message.
|
|
2120 VM runs this hook and then runs vm-mail-mode-hook before leaving
|
|
2121 the user in the Mail mode buffer.")
|
|
2122
|
|
2123 (defvar vm-resend-message-hook nil
|
|
2124 "*List of hook functions to be run after a Mail mode
|
|
2125 composition buffer has been created to resend a message.
|
|
2126 VM runs this hook and then runs vm-mail-mode-hook before leaving
|
|
2127 the user in the Mail mode buffer.")
|
|
2128
|
|
2129 (defvar vm-send-digest-hook nil
|
|
2130 "*List of hook functions to be run after a Mail mode
|
|
2131 composition buffer has been created to send a digest.
|
|
2132 VM runs this hook and then runs vm-mail-mode-hook before leaving
|
|
2133 the user in the Mail mode buffer.")
|
|
2134
|
|
2135 (defvar vm-mail-hook nil
|
|
2136 "*List of hook functions to be run after a Mail mode
|
|
2137 composition buffer has been created to send a non specialized
|
|
2138 message, i.e. a message that is not a reply, forward, digest,
|
|
2139 etc. VM runs this hook and then runs vm-mail-mode-hook before
|
|
2140 leaving the user in the Mail mode buffer.")
|
|
2141
|
|
2142 (defvar vm-summary-update-hook nil
|
|
2143 "*List of hook functions called just after VM updates an existing
|
|
2144 entry a folder summary.")
|
|
2145
|
|
2146 (defvar vm-summary-redo-hook nil
|
|
2147 "*List of hook functions called just after VM adds or deletes
|
|
2148 entries from a folder summary.")
|
|
2149
|
|
2150 (defvar vm-visit-folder-hook nil
|
|
2151 "*List of hook functions called just after VM visits a folder.
|
|
2152 It doesn't matter if the folder buffer already exists, this hook
|
|
2153 is run each time vm or vm-visit-folder is called interactively.
|
|
2154 It is NOT run after vm-mode is called.")
|
|
2155
|
|
2156 (defvar vm-retrieved-spooled-mail-hook nil
|
|
2157 "*List of hook functions called just after VM has retrieved
|
|
2158 a group of messages from your system mailbox(es). When these
|
|
2159 hooks are run, the messages have been added to the folder buffer
|
|
2160 but not the message list or summary. When the hooks are run, the
|
|
2161 current buffer will be the folder where the messages were
|
|
2162 incorporated.")
|
|
2163
|
|
2164 (defvar vm-edit-message-hook nil
|
|
2165 "*List of hook functions to be run just before a message is edited.
|
|
2166 This is the last thing vm-edit-message does before leaving the user
|
|
2167 in the edit buffer.")
|
|
2168
|
|
2169 (defvar vm-mail-mode-hook nil
|
|
2170 "*List of hook functions to be run after a Mail mode
|
|
2171 composition buffer has been created. This is the last thing VM
|
|
2172 does before leaving the user in the Mail mode buffer.")
|
|
2173
|
|
2174 (defvar vm-mode-hook nil
|
|
2175 "*List of hook functions to run when a buffer enters vm-mode.
|
|
2176 These hook functions should generally be used to set key bindings
|
|
2177 and local variables.")
|
|
2178
|
|
2179 (defvar vm-mode-hooks nil
|
|
2180 "*Old name for vm-mode-hook.
|
|
2181 Supported for backward compatibility.
|
|
2182 You should use the new name.")
|
|
2183
|
|
2184 (defvar vm-summary-mode-hook nil
|
|
2185 "*List of hook functions to run when a VM summary buffer is created.
|
|
2186 The current buffer will be that buffer when the hooks are run.")
|
|
2187
|
|
2188 (defvar vm-summary-mode-hooks nil
|
|
2189 "*Old name for vm-summary-mode-hook.
|
|
2190 Supported for backward compatibility.
|
|
2191 You should use the new name.")
|
|
2192
|
|
2193 (defvar vm-virtual-mode-hook nil
|
|
2194 "*List of hook functions to run when a VM virtual folder buffer is created.
|
|
2195 The current buffer will be that buffer when the hooks are run.")
|
|
2196
|
36
|
2197 (defvar vm-presentation-mode-hook nil
|
|
2198 "*List of hook functions to run when a VM presentation buffer is created.
|
|
2199 The current buffer will be that buffer when the hooks are run.
|
|
2200 Presentation buffers are used to display messages when some type of decoding
|
|
2201 must be done to the message to make it presentable. E.g. MIME decoding.")
|
|
2202
|
0
|
2203 (defvar vm-quit-hook nil
|
|
2204 "*List of hook functions to run when you quit VM.
|
|
2205 This applies to any VM quit command.")
|
|
2206
|
|
2207 (defvar vm-summary-pointer-update-hook nil
|
|
2208 "*List of hook functions to run when VM summary pointer is updated.
|
|
2209 When the hooks are run, the current buffer will be the summary buffer.")
|
|
2210
|
|
2211 (defvar vm-display-buffer-hook nil
|
|
2212 "*List of hook functions that are run every time VM wants to
|
|
2213 display a buffer. When the hooks are run the current buffer will
|
|
2214 be the buffer that VM wants to display. The hooks are expected
|
|
2215 to select a window and VM will display the buffer in that
|
|
2216 window.
|
|
2217
|
|
2218 If you use display hooks, you should not use VM's builtin window
|
|
2219 configuration system as the result is likely to be confusing.")
|
|
2220
|
|
2221 (defvar vm-undisplay-buffer-hook nil
|
|
2222 "*List of hook functions that are run every time VM wants to
|
|
2223 remove a buffer from the display. When the hooks are run the
|
|
2224 current buffer will be the buffer that VM wants to disappear.
|
|
2225 The hooks are expected to do the work of removing the buffer from
|
|
2226 the display. The hook functions should not kill the buffer.
|
|
2227
|
|
2228 If you use undisplay hooks, you should not use VM's builtin
|
|
2229 window configuration system as the result is likely to be
|
|
2230 confusing.")
|
|
2231
|
|
2232 (defvar vm-iconify-frame-hook nil
|
|
2233 "*List of hook functions that are run whenever VM iconifies a frame.")
|
|
2234
|
|
2235 (defvar vm-menu-setup-hook nil
|
10
|
2236 "*List of hook functions that are run just after all menus are initialized.")
|
0
|
2237
|
20
|
2238 (defvar vm-mime-display-function nil
|
|
2239 "*If non-nil, this should name a function to be called inside
|
|
2240 vm-decode-mime-message to do the MIME display the current
|
|
2241 message. The function is called with no arguments, and at the
|
|
2242 time of the call the current buffer will be the `presentation'
|
|
2243 buffer for the folder, which is a temporary buffer that VM uses
|
|
2244 for the display of MIME messages. A copy of the current message
|
|
2245 will be in the presentation buffer at that time. The normal work
|
|
2246 that vm-decode-mime-message would do is not done, because this
|
|
2247 function is expected to subsume all of it.")
|
|
2248
|
0
|
2249 (defvar mail-yank-hooks nil
|
|
2250 "Hooks called after a message is yanked into a mail composition.
|
|
2251
|
|
2252 (This hook is deprecated, you should use mail-citation-hook instead.)
|
|
2253
|
|
2254 Value is a list of functions to be run.
|
|
2255 Each hook function can find the newly yanked message between point and mark.
|
|
2256 Each hook function should return with point and mark around the yanked message.
|
|
2257
|
|
2258 See the documentation for vm-yank-message to see when VM will run
|
|
2259 these hooks.")
|
|
2260
|
|
2261 (defvar mail-citation-hook nil
|
|
2262 "*Hook for modifying a citation just inserted in the mail buffer.
|
|
2263 Each hook function can find the citation between (point) and (mark t).
|
|
2264 And each hook function should leave point and mark around the citation
|
|
2265 text as modified.
|
|
2266
|
|
2267 If this hook is entirely empty (nil), a default action is taken
|
|
2268 instead of no action.")
|
|
2269
|
|
2270 (defvar mail-default-headers nil
|
|
2271 "*A string containing header lines, to be inserted in outgoing messages.
|
|
2272 It is inserted before you edit the message,
|
|
2273 so you can edit or delete these lines.")
|
|
2274
|
|
2275 (defvar mail-signature nil
|
|
2276 "*Text inserted at end of mail buffer when a message is initialized.
|
|
2277 If t, it means to insert the contents of the file `~/.signature'.")
|
|
2278
|
|
2279 (defvar vm-rename-current-buffer-function nil
|
|
2280 "*Non-nil value should be a function to call to rename a buffer.
|
|
2281 Value should be something that can be passed to `funcall'. If
|
|
2282 this variable is non-nil, VM will use this function instead of
|
|
2283 its own buffer renaming code. The buffer to be renamed will be
|
|
2284 the current buffer when the function is called.")
|
|
2285
|
|
2286 (defvar mode-popup-menu nil
|
|
2287 "The mode-specific popup menu. Automatically buffer local.
|
|
2288 By default, when you press mouse-3 in VM, this menu is popped up.")
|
|
2289 (make-variable-buffer-local 'mode-popup-menu)
|
|
2290
|
|
2291 (defvar vm-movemail-program "movemail"
|
|
2292 "*Name of program to use to move mail from the system spool
|
|
2293 to another location. Normally this should be the movemail program
|
|
2294 distributed with Emacs.")
|
|
2295
|
|
2296 (defvar vm-netscape-program "netscape"
|
|
2297 "*Name of program to use to run Netscape.
|
|
2298 vm-mouse-send-url-to-netscape uses this.")
|
|
2299
|
36
|
2300 (defvar vm-netscape-program-switches nil
|
|
2301 "*List of command line switches to pass to Netscape.")
|
|
2302
|
0
|
2303 (defvar vm-mosaic-program "Mosaic"
|
|
2304 "*Name of program to use to run Mosaic.
|
|
2305 vm-mouse-send-url-to-mosaic uses this.")
|
|
2306
|
36
|
2307 (defvar vm-mosaic-program-switches nil
|
|
2308 "*List of command line switches to pass to Mosaic.")
|
|
2309
|
20
|
2310 (defvar vm-temp-file-directory "/tmp"
|
|
2311 "*Name of a directory where VM can put temporary files.
|
|
2312 This name must not end with a slash.")
|
|
2313
|
0
|
2314 (defvar vm-tale-is-an-idiot nil
|
|
2315 "*Non-nil value causes vm-mail-send to check multi-line recipient
|
|
2316 headers of outbound mail for lines that don't end with a
|
|
2317 comma. If such a line is found, an error is signaled and the
|
|
2318 mail is not sent.")
|
|
2319
|
|
2320 (defvar vm-maintainer-address "bug-vm@uunet.uu.net"
|
|
2321 "Where to send VM bug reports.")
|
|
2322
|
|
2323 (defvar vm-mode-map
|
|
2324 (let ((map (make-sparse-keymap)))
|
|
2325 ;; unneeded now that VM buffers all have buffer-read-only == t.
|
|
2326 ;; (suppress-keymap map)
|
|
2327 (define-key map "h" 'vm-summarize)
|
|
2328 (define-key map "\M-n" 'vm-next-unread-message)
|
|
2329 (define-key map "\M-p" 'vm-previous-unread-message)
|
|
2330 (define-key map "n" 'vm-next-message)
|
|
2331 (define-key map "p" 'vm-previous-message)
|
|
2332 (define-key map "N" 'vm-next-message-no-skip)
|
|
2333 (define-key map "P" 'vm-previous-message-no-skip)
|
|
2334 (define-key map "\C-\M-n" 'vm-move-message-forward)
|
|
2335 (define-key map "\C-\M-p" 'vm-move-message-backward)
|
|
2336 (define-key map "\t" 'vm-goto-message-last-seen)
|
|
2337 (define-key map "\r" 'vm-goto-message)
|
|
2338 (define-key map "^" 'vm-goto-parent-message)
|
|
2339 (define-key map "t" 'vm-expose-hidden-headers)
|
|
2340 (define-key map " " 'vm-scroll-forward)
|
|
2341 (define-key map "b" 'vm-scroll-backward)
|
|
2342 (define-key map "\C-?" 'vm-scroll-backward)
|
20
|
2343 (define-key map "D" 'vm-decode-mime-message)
|
0
|
2344 (define-key map "d" 'vm-delete-message)
|
|
2345 (define-key map "\C-d" 'vm-delete-message-backward)
|
|
2346 (define-key map "u" 'vm-undelete-message)
|
|
2347 (define-key map "U" 'vm-unread-message)
|
|
2348 (define-key map "e" 'vm-edit-message)
|
|
2349 (define-key map "a" 'vm-set-message-attributes)
|
|
2350 (define-key map "j" 'vm-discard-cached-data)
|
|
2351 (define-key map "k" 'vm-kill-subject)
|
|
2352 (define-key map "f" 'vm-followup)
|
|
2353 (define-key map "F" 'vm-followup-include-text)
|
|
2354 (define-key map "r" 'vm-reply)
|
|
2355 (define-key map "R" 'vm-reply-include-text)
|
|
2356 (define-key map "\M-r" 'vm-resend-bounced-message)
|
|
2357 (define-key map "B" 'vm-resend-message)
|
|
2358 (define-key map "z" 'vm-forward-message)
|
|
2359 (define-key map "c" 'vm-continue-composing-message)
|
|
2360 (define-key map "@" 'vm-send-digest)
|
|
2361 (define-key map "*" 'vm-burst-digest)
|
|
2362 (define-key map "m" 'vm-mail)
|
|
2363 (define-key map "g" 'vm-get-new-mail)
|
|
2364 (define-key map "G" 'vm-sort-messages)
|
|
2365 (define-key map "v" 'vm-visit-folder)
|
|
2366 (define-key map "s" 'vm-save-message)
|
|
2367 (define-key map "w" 'vm-save-message-sans-headers)
|
|
2368 (define-key map "A" 'vm-auto-archive-messages)
|
|
2369 (define-key map "S" 'vm-save-folder)
|
|
2370 (define-key map "|" 'vm-pipe-message-to-command)
|
|
2371 (define-key map "#" 'vm-expunge-folder)
|
|
2372 (define-key map "q" 'vm-quit)
|
|
2373 (define-key map "x" 'vm-quit-no-change)
|
|
2374 (define-key map "i" 'vm-iconify-frame)
|
|
2375 (define-key map "?" 'vm-help)
|
|
2376 (define-key map "\C-_" 'vm-undo)
|
|
2377 (define-key map "\C-xu" 'vm-undo)
|
|
2378 (define-key map "!" 'shell-command)
|
|
2379 (define-key map "<" 'vm-beginning-of-message)
|
|
2380 (define-key map ">" 'vm-end-of-message)
|
|
2381 (define-key map "\M-s" 'vm-isearch-forward)
|
|
2382 (define-key map "=" 'vm-summarize)
|
|
2383 (define-key map "L" 'vm-load-init-file)
|
|
2384 (define-key map "l" (make-sparse-keymap))
|
|
2385 (define-key map "la" 'vm-add-message-labels)
|
|
2386 (define-key map "ld" 'vm-delete-message-labels)
|
|
2387 (define-key map "V" (make-sparse-keymap))
|
|
2388 (define-key map "VV" 'vm-visit-virtual-folder)
|
|
2389 (define-key map "VC" 'vm-create-virtual-folder)
|
|
2390 (define-key map "VA" 'vm-apply-virtual-folder)
|
|
2391 (define-key map "VM" 'vm-toggle-virtual-mirror)
|
|
2392 (define-key map "V?" 'vm-virtual-help)
|
|
2393 (define-key map "M" (make-sparse-keymap))
|
|
2394 (define-key map "MN" 'vm-next-command-uses-marks)
|
|
2395 (define-key map "Mn" 'vm-next-command-uses-marks)
|
|
2396 (define-key map "MM" 'vm-mark-message)
|
|
2397 (define-key map "MU" 'vm-unmark-message)
|
|
2398 (define-key map "Mm" 'vm-mark-all-messages)
|
|
2399 (define-key map "Mu" 'vm-clear-all-marks)
|
|
2400 (define-key map "MC" 'vm-mark-matching-messages)
|
|
2401 (define-key map "Mc" 'vm-unmark-matching-messages)
|
|
2402 (define-key map "MT" 'vm-mark-thread-subtree)
|
|
2403 (define-key map "Mt" 'vm-unmark-thread-subtree)
|
|
2404 (define-key map "MS" 'vm-mark-messages-same-subject)
|
|
2405 (define-key map "Ms" 'vm-unmark-messages-same-subject)
|
|
2406 (define-key map "MA" 'vm-mark-messages-same-author)
|
|
2407 (define-key map "Ma" 'vm-unmark-messages-same-author)
|
20
|
2408 (define-key map "MR" 'vm-mark-summary-region)
|
|
2409 (define-key map "Mr" 'vm-unmark-summary-region)
|
0
|
2410 (define-key map "M?" 'vm-mark-help)
|
|
2411 (define-key map "W" (make-sparse-keymap))
|
|
2412 (define-key map "WW" 'vm-apply-window-configuration)
|
|
2413 (define-key map "WS" 'vm-save-window-configuration)
|
|
2414 (define-key map "WD" 'vm-delete-window-configuration)
|
|
2415 (define-key map "W?" 'vm-window-help)
|
|
2416 (define-key map "\C-t" 'vm-toggle-threads-display)
|
|
2417 (define-key map "\C-x\C-s" 'vm-save-buffer)
|
|
2418 (define-key map "\C-x\C-w" 'vm-write-file)
|
|
2419 (define-key map "\C-x\C-q" 'vm-toggle-read-only)
|
|
2420 (define-key map "%" 'vm-change-folder-type)
|
|
2421 (define-key map "\M-C" 'vm-show-copying-restrictions)
|
|
2422 (define-key map "\M-W" 'vm-show-no-warranty)
|
|
2423 ;; suppress-keymap provides these, but now that we don't use
|
|
2424 ;; suppress-keymap anymore...
|
|
2425 (define-key map "0" 'digit-argument)
|
|
2426 (define-key map "1" 'digit-argument)
|
|
2427 (define-key map "2" 'digit-argument)
|
|
2428 (define-key map "3" 'digit-argument)
|
|
2429 (define-key map "4" 'digit-argument)
|
|
2430 (define-key map "5" 'digit-argument)
|
|
2431 (define-key map "6" 'digit-argument)
|
|
2432 (define-key map "7" 'digit-argument)
|
|
2433 (define-key map "8" 'digit-argument)
|
|
2434 (define-key map "9" 'digit-argument)
|
|
2435 (define-key map "-" 'negative-argument)
|
|
2436 map )
|
|
2437 "Keymap for VM mode.")
|
|
2438
|
|
2439 (defvar vm-summary-mode-map vm-mode-map
|
|
2440 "Keymap for VM Summary mode")
|
|
2441
|
|
2442 (defvar vm-mail-mode-map
|
|
2443 (let ((map (make-sparse-keymap)))
|
|
2444 (define-key map "\C-c\C-v" vm-mode-map)
|
20
|
2445 (define-key map "\C-c\C-p" 'vm-mime-preview-composition)
|
|
2446 (define-key map "\C-c\C-e" 'vm-mime-encode-composition)
|
|
2447 (define-key map "\C-c\C-a" 'vm-mime-attach-file)
|
|
2448 (define-key map "\C-c\C-m" 'vm-mime-attach-mime-file)
|
0
|
2449 (define-key map "\C-c\C-y" 'vm-yank-message)
|
|
2450 (define-key map "\C-c\C-s" 'vm-mail-send)
|
|
2451 (define-key map "\C-c\C-c" 'vm-mail-send-and-exit)
|
|
2452 map )
|
|
2453 "Keymap for VM Mail mode buffers.")
|
|
2454
|
|
2455 (defvar vm-edit-message-map
|
|
2456 (let ((map (make-sparse-keymap)))
|
|
2457 (define-key map "\C-c\C-v" vm-mode-map)
|
|
2458 (define-key map "\C-c\e" 'vm-edit-message-end)
|
|
2459 (define-key map "\C-c\C-c" 'vm-edit-message-end)
|
|
2460 (define-key map "\C-c\C-]" 'vm-edit-message-abort)
|
|
2461 map )
|
|
2462 "Keymap for the buffers created by VM's vm-edit-message command.")
|
|
2463
|
|
2464 (defvar vm-folder-history nil
|
|
2465 "List of folders visited this Emacs session.")
|
|
2466
|
|
2467 ;; internal vars
|
|
2468 (defvar vm-folder-type nil)
|
|
2469 (make-variable-buffer-local 'vm-folder-type)
|
|
2470 (defvar vm-message-list nil)
|
|
2471 (make-variable-buffer-local 'vm-message-list)
|
|
2472 (defvar vm-virtual-folder-definition nil)
|
|
2473 (make-variable-buffer-local 'vm-virtual-folder-definition)
|
|
2474 (defvar vm-virtual-buffers nil)
|
|
2475 (make-variable-buffer-local 'vm-virtual-buffers)
|
|
2476 (defvar vm-real-buffers nil)
|
|
2477 (make-variable-buffer-local 'vm-real-buffers)
|
|
2478 (defvar vm-message-pointer nil)
|
|
2479 (make-variable-buffer-local 'vm-message-pointer)
|
|
2480 (defvar vm-message-order-changed nil)
|
|
2481 (make-variable-buffer-local 'vm-message-order-changed)
|
|
2482 (defvar vm-message-order-header-present nil)
|
|
2483 (make-variable-buffer-local 'vm-message-order-header-present)
|
|
2484 (defvar vm-last-message-pointer nil)
|
|
2485 (make-variable-buffer-local 'vm-last-message-pointer)
|
|
2486 (defvar vm-mail-buffer nil)
|
|
2487 (make-variable-buffer-local 'vm-mail-buffer)
|
20
|
2488 (defvar vm-presentation-buffer nil)
|
|
2489 (make-variable-buffer-local 'vm-presentation-buffer)
|
|
2490 (defvar vm-presentation-buffer-handle nil)
|
|
2491 (make-variable-buffer-local 'vm-presentation-buffer-handle)
|
|
2492 (defvar vm-mime-decoded nil)
|
|
2493 (make-variable-buffer-local 'vm-mime-decoded)
|
0
|
2494 (defvar vm-summary-buffer nil)
|
|
2495 (make-variable-buffer-local 'vm-summary-buffer)
|
|
2496 (defvar vm-summary-pointer nil)
|
|
2497 (make-variable-buffer-local 'vm-summary-pointer)
|
|
2498 (defvar vm-system-state nil)
|
|
2499 (make-variable-buffer-local 'vm-system-state)
|
|
2500 (defvar vm-undo-record-list nil)
|
|
2501 (make-variable-buffer-local 'vm-undo-record-list)
|
|
2502 (defvar vm-saved-undo-record-list nil)
|
|
2503 (make-variable-buffer-local 'vm-saved-undo-record-list)
|
|
2504 (defvar vm-undo-record-pointer nil)
|
|
2505 (make-variable-buffer-local 'vm-undo-record-pointer)
|
|
2506 (defvar vm-last-save-folder nil)
|
|
2507 (make-variable-buffer-local 'vm-last-save-folder)
|
|
2508 (defvar vm-last-written-file nil)
|
|
2509 (make-variable-buffer-local 'vm-last-written-file)
|
|
2510 (defvar vm-last-visit-folder nil)
|
|
2511 (defvar vm-last-pipe-command nil)
|
|
2512 (make-variable-buffer-local 'vm-last-pipe-command)
|
|
2513 (defvar vm-messages-not-on-disk 0)
|
|
2514 (make-variable-buffer-local 'vm-messages-not-on-disk)
|
|
2515 (defvar vm-totals nil)
|
|
2516 (make-variable-buffer-local 'vm-totals)
|
|
2517 (defvar vm-modification-counter 0)
|
|
2518 (make-variable-buffer-local 'vm-modification-counter)
|
|
2519 (defvar vm-flushed-modification-counter nil)
|
|
2520 (make-variable-buffer-local 'vm-flushed-modification-counter)
|
20
|
2521 (defvar vm-tempfile-counter 0)
|
0
|
2522 (defvar vm-messages-needing-summary-update nil)
|
|
2523 (defvar vm-buffers-needing-display-update nil)
|
|
2524 (defvar vm-numbering-redo-start-point nil)
|
|
2525 (make-variable-buffer-local 'vm-numbering-redo-start-point)
|
|
2526 (defvar vm-numbering-redo-end-point nil)
|
|
2527 (make-variable-buffer-local 'vm-numbering-redo-end-point)
|
|
2528 (defvar vm-summary-redo-start-point nil)
|
|
2529 (make-variable-buffer-local 'vm-summary-redo-start-point)
|
|
2530 (defvar vm-need-summary-pointer-update nil)
|
|
2531 (make-variable-buffer-local 'vm-need-summary-pointer-update)
|
|
2532 (defvar vm-thread-obarray nil)
|
|
2533 (make-variable-buffer-local 'vm-thread-obarray)
|
|
2534 (defvar vm-thread-subject-obarray nil)
|
|
2535 (make-variable-buffer-local 'vm-thread-subject-obarray)
|
|
2536 (defvar vm-label-obarray nil)
|
|
2537 (make-variable-buffer-local 'vm-label-obarray)
|
|
2538 (defvar vm-block-new-mail nil)
|
|
2539 (make-variable-buffer-local 'vm-block-new-mail)
|
|
2540 (defvar vm-saved-buffer-modified-p nil)
|
|
2541 (make-variable-buffer-local 'vm-saved-buffer-modified-p)
|
|
2542 (defvar vm-kept-mail-buffers nil)
|
|
2543 (defvar vm-inhibit-write-file-hook nil)
|
24
|
2544 ;; used to choose between the default and
|
|
2545 ;; mail-extract-address-components but I don't see the utility of
|
|
2546 ;; it anymore. It tries to be too smart.
|
|
2547 ;;(defvar vm-chop-full-name-function 'vm-choose-chop-full-name-function)
|
|
2548 (defvar vm-chop-full-name-function 'vm-default-chop-full-name)
|
0
|
2549 (defvar vm-session-beginning t)
|
|
2550 (defvar vm-init-file-loaded nil)
|
|
2551 (defvar vm-window-configurations nil)
|
|
2552 (defvar vm-window-configuration nil)
|
|
2553 (defvar vm-message-id-number 0)
|
|
2554 (defconst vm-spool-directory
|
|
2555 (or (and (boundp 'rmail-spool-directory) rmail-spool-directory)
|
|
2556 "/usr/spool/mail/"))
|
|
2557 (defconst vm-content-length-search-regexp "^Content-Length:.*\n\\|\\(\n\n\\)")
|
|
2558 (defconst vm-content-length-header "Content-Length:")
|
|
2559 (defconst vm-attributes-header-regexp
|
|
2560 "^X-VM-\\(Attributes\\|v5-Data\\):\\(.*\n\\([ \t].*\n\\)*\\)")
|
|
2561 (defconst vm-attributes-header "X-VM-v5-Data:")
|
|
2562 (defconst vm-message-order-header-regexp "^X-VM-Message-Order:")
|
|
2563 (defconst vm-message-order-header "X-VM-Message-Order:")
|
|
2564 (defconst vm-bookmark-header-regexp "^X-VM-Bookmark:")
|
|
2565 (defconst vm-bookmark-header "X-VM-Bookmark:")
|
|
2566 (defconst vm-summary-header-regexp "^X-VM-Summary-Format:")
|
|
2567 (defconst vm-summary-header "X-VM-Summary-Format:")
|
|
2568 (defconst vm-vheader-header-regexp "^X-VM-VHeader:")
|
|
2569 (defconst vm-vheader-header "X-VM-VHeader:")
|
|
2570 (defconst vm-labels-header-regexp "^X-VM-Labels:")
|
|
2571 (defconst vm-labels-header "X-VM-Labels:")
|
|
2572 (defconst vm-berkeley-mail-status-header "Status: ")
|
|
2573 (defconst vm-berkeley-mail-status-header-regexp "^Status: \\(..?\\)\n")
|
|
2574 (defvar vm-matched-header-vector (make-vector 6 nil))
|
|
2575 (defconst vm-supported-folder-types
|
|
2576 '("From_" "From_-with-Content-Length" "mmdf" "babyl"))
|
|
2577 (defconst vm-supported-window-configurations
|
20
|
2578 '(
|
|
2579 ("default")
|
0
|
2580 ("startup")
|
|
2581 ("quitting")
|
|
2582 ("composing-message")
|
|
2583 ("editing-message")
|
|
2584 ("marking-message")
|
|
2585 ("reading-message")
|
|
2586 ("searching-message")
|
20
|
2587 ("vm")
|
|
2588 ("vm-add-message-labels")
|
|
2589 ("vm-apply-virtual-folder")
|
|
2590 ("vm-auto-archive-messages")
|
|
2591 ("vm-beginning-of-message")
|
|
2592 ("vm-burst-digest")
|
|
2593 ("vm-burst-mime-digest")
|
|
2594 ("vm-burst-rfc1153-digest")
|
|
2595 ("vm-burst-rfc934-digest")
|
|
2596 ("vm-change-folder-type")
|
|
2597 ("vm-clear-all-marks")
|
|
2598 ("vm-continue-composing-message")
|
|
2599 ("vm-create-virtual-folder")
|
|
2600 ("vm-decode-mime-message")
|
0
|
2601 ("vm-delete-message")
|
|
2602 ("vm-delete-message-backward")
|
20
|
2603 ("vm-delete-message-labels")
|
|
2604 ("vm-discard-cached-data")
|
0
|
2605 ("vm-edit-message")
|
20
|
2606 ("vm-edit-message-abort")
|
0
|
2607 ("vm-edit-message-end")
|
20
|
2608 ("vm-edit-message-other-frame")
|
|
2609 ("vm-end-of-message")
|
|
2610 ("vm-expose-hidden-headers")
|
|
2611 ("vm-expunge-folder")
|
|
2612 ("vm-followup")
|
|
2613 ("vm-followup-include-text")
|
|
2614 ("vm-followup-include-text-other-frame")
|
|
2615 ("vm-followup-other-frame")
|
|
2616 ("vm-forward-message")
|
|
2617 ("vm-forward-message-all-headers")
|
|
2618 ("vm-forward-message-all-headers-other-frame")
|
|
2619 ("vm-forward-message-other-frame")
|
|
2620 ("vm-get-new-mail")
|
|
2621 ("vm-goto-message")
|
|
2622 ("vm-goto-message-last-seen")
|
|
2623 ("vm-goto-parent-message")
|
|
2624 ("vm-help")
|
|
2625 ("vm-isearch-forward")
|
|
2626 ("vm-kill-subject")
|
|
2627 ("vm-load-init-file")
|
|
2628 ("vm-mail")
|
|
2629 ("vm-mail-other-frame")
|
|
2630 ("vm-mail-other-window")
|
|
2631 ("vm-mail-send")
|
|
2632 ("vm-mail-send-and-exit")
|
|
2633 ("vm-mark-all-messages")
|
|
2634 ("vm-mark-help")
|
|
2635 ("vm-mark-matching-messages")
|
|
2636 ("vm-mark-message")
|
|
2637 ("vm-mark-messages-same-author")
|
|
2638 ("vm-mark-messages-same-subject")
|
|
2639 ("vm-mark-summary-region")
|
|
2640 ("vm-mark-thread-subtree")
|
|
2641 ("vm-mode")
|
|
2642 ("vm-move-message-backward")
|
|
2643 ("vm-move-message-backward-physically")
|
|
2644 ("vm-move-message-forward")
|
|
2645 ("vm-move-message-forward-physically")
|
|
2646 ("vm-next-command-uses-marks")
|
|
2647 ("vm-next-message")
|
|
2648 ("vm-next-message-no-skip")
|
|
2649 ("vm-next-message-no-skip")
|
|
2650 ("vm-next-message-same-subject")
|
|
2651 ("vm-next-unread-message")
|
|
2652 ("vm-other-frame")
|
|
2653 ("vm-other-window")
|
|
2654 ("vm-pipe-message-to-command")
|
|
2655 ("vm-previous-message")
|
|
2656 ("vm-previous-message-no-skip")
|
|
2657 ("vm-previous-message-no-skip")
|
|
2658 ("vm-previous-message-same-subject")
|
|
2659 ("vm-previous-unread-message")
|
0
|
2660 ("vm-quit")
|
20
|
2661 ("vm-quit-just-bury")
|
|
2662 ("vm-quit-just-iconify")
|
|
2663 ("vm-quit-no-change")
|
|
2664 ("vm-reply")
|
|
2665 ("vm-reply-include-text")
|
|
2666 ("vm-reply-include-text-other-frame")
|
|
2667 ("vm-reply-other-frame")
|
|
2668 ("vm-resend-bounced-message")
|
|
2669 ("vm-resend-bounced-message-other-frame")
|
|
2670 ("vm-resend-message")
|
|
2671 ("vm-resend-message-other-frame")
|
|
2672 ("vm-save-and-expunge-folder")
|
0
|
2673 ("vm-save-buffer")
|
|
2674 ("vm-save-folder")
|
20
|
2675 ("vm-save-message")
|
|
2676 ("vm-save-message-sans-headers")
|
|
2677 ("vm-scroll-backward")
|
|
2678 ("vm-scroll-forward")
|
|
2679 ("vm-send-digest")
|
|
2680 ("vm-send-digest-other-frame")
|
|
2681 ("vm-send-mime-digest")
|
|
2682 ("vm-send-mime-digest-other-frame")
|
|
2683 ("vm-send-rfc1153-digest")
|
|
2684 ("vm-send-rfc1153-digest-other-frame")
|
|
2685 ("vm-send-rfc934-digest")
|
|
2686 ("vm-send-rfc934-digest-other-frame")
|
|
2687 ("vm-set-message-attributes")
|
|
2688 ("vm-show-copying-restrictions")
|
|
2689 ("vm-show-no-warranty")
|
|
2690 ("vm-sort-messages")
|
|
2691 ("vm-submit-bug-report")
|
|
2692 ("vm-summarize")
|
|
2693 ("vm-summarize-other-frame")
|
|
2694 ("vm-toggle-read-only")
|
|
2695 ("vm-toggle-threads-display")
|
|
2696 ("vm-undelete-message")
|
|
2697 ("vm-undo")
|
|
2698 ("vm-unmark-matching-messages")
|
|
2699 ("vm-unmark-message")
|
|
2700 ("vm-unmark-messages-same-author")
|
|
2701 ("vm-unmark-messages-same-subject")
|
|
2702 ("vm-unmark-summary-region")
|
|
2703 ("vm-unmark-thread-subtree")
|
|
2704 ("vm-unread-message")
|
|
2705 ("vm-virtual-help")
|
0
|
2706 ("vm-visit-folder")
|
|
2707 ("vm-visit-folder-other-frame")
|
|
2708 ("vm-visit-folder-other-window")
|
|
2709 ("vm-visit-virtual-folder")
|
|
2710 ("vm-visit-virtual-folder-other-frame")
|
20
|
2711 ("vm-visit-virtual-folder-other-window")
|
|
2712 ("vm-write-file")
|
|
2713 ("vm-yank-message")
|
|
2714 ("vm-yank-message-other-folder")
|
|
2715 ))
|
0
|
2716 (defconst vm-supported-sort-keys
|
|
2717 '("date" "reversed-date"
|
|
2718 "author" "reversed-author"
|
|
2719 "subject" "reversed-subject"
|
|
2720 "recipients" "reversed-recipients"
|
|
2721 "line-count" "reversed-line-count"
|
|
2722 "byte-count" "reversed-byte-count"
|
|
2723 "physical-order" "reversed-physical-order"))
|
|
2724 (defconst vm-supported-interactive-virtual-selectors
|
|
2725 '(("any")
|
|
2726 ("header")
|
|
2727 ("label")
|
|
2728 ("text")
|
|
2729 ("recipient")
|
|
2730 ("author")
|
|
2731 ("subject")
|
|
2732 ("sent-before")
|
|
2733 ("sent-after")
|
|
2734 ("more-chars-than")
|
|
2735 ("less-chars-than")
|
|
2736 ("more-lines-than")
|
|
2737 ("less-lines-than")
|
|
2738 ("new")
|
|
2739 ("unread")
|
|
2740 ("read")
|
|
2741 ("deleted")
|
|
2742 ("replied")
|
|
2743 ("forwarded")
|
|
2744 ("filed")
|
|
2745 ("written")
|
|
2746 ("edited")
|
|
2747 ("marked")))
|
|
2748 (defconst vm-supported-attribute-names
|
|
2749 '("new"
|
|
2750 "unread"
|
|
2751 "read"
|
|
2752 "deleted"
|
|
2753 "replied"
|
|
2754 "forwarded"
|
|
2755 "redistributed"
|
|
2756 "filed"
|
|
2757 "written"
|
|
2758 "edited"
|
|
2759 "undeleted"
|
|
2760 "unreplied"
|
|
2761 "unforwarded"
|
|
2762 "unredistributed"
|
|
2763 "unfiled"
|
|
2764 "unwritten"
|
|
2765 "unedited"
|
|
2766 ;; for babyl cogniscenti
|
|
2767 "recent"
|
|
2768 "unseen"
|
|
2769 "answered"
|
|
2770 "unanswered"))
|
|
2771
|
|
2772 (defvar vm-key-functions nil)
|
20
|
2773 (defconst vm-digest-type-alist '(("rfc934") ("rfc1153") ("mime")))
|
0
|
2774 (defvar vm-completion-auto-correct t
|
|
2775 "Non-nil means that minibuffer-complete-file should aggressively erase
|
|
2776 the trailing part of a word that caused completion to fail, and retry
|
|
2777 the completion with the resulting word.")
|
|
2778 (defvar vm-minibuffer-completion-table nil
|
|
2779 "Completion table used by vm-minibuffer-complete-word.
|
|
2780 Should be just a list of strings, not an alist or an obarray.")
|
|
2781 (defvar vm-completion-auto-space t
|
|
2782 "Non-nil value means that vm-minibuffer-complete-word should automatically
|
|
2783 append a space to words that complete unambiguously.")
|
|
2784 (defconst vm-attributes-vector-length 9)
|
36
|
2785 (defconst vm-cache-vector-length 21)
|
20
|
2786 (defconst vm-softdata-vector-length 18)
|
0
|
2787 (defconst vm-location-data-vector-length 6)
|
|
2788 (defconst vm-mirror-data-vector-length 5)
|
|
2789 (defconst vm-startup-message-lines
|
|
2790 '("Please use \\[vm-submit-bug-report] to report bugs."
|
20
|
2791 "For discussion about the VM mail reader, see the gnu.emacs.vm.info newsgroup"
|
0
|
2792 "You may give out copies of VM. Type \\[vm-show-copying-restrictions] to see the conditions"
|
|
2793 "VM comes with ABSOLUTELY NO WARRANTY; type \\[vm-show-no-warranty] for full details"
|
|
2794 "In Stereo (where available)"))
|
|
2795 (defconst vm-startup-message-displayed nil)
|
|
2796 ;; for the mode line
|
|
2797 (defvar vm-mode-line-format
|
|
2798 '("" " %&%& "
|
20
|
2799 ("VM " vm-version ": "
|
0
|
2800 (vm-folder-read-only "read-only ")
|
|
2801 (vm-virtual-folder-definition (vm-virtual-mirror "mirrored "))
|
|
2802 "%b"
|
|
2803 (vm-mail-buffer (vm-ml-sort-keys ("" " by " vm-ml-sort-keys)))
|
|
2804 (vm-message-list
|
|
2805 (" " vm-ml-message-number
|
|
2806 " (of " vm-ml-highest-message-number ")")
|
|
2807 (vm-folder-type
|
|
2808 " (unrecognized folder type)"
|
|
2809 " (no messages)")))
|
24
|
2810 (vm-spooled-mail-waiting " Mail")
|
0
|
2811 (vm-message-list
|
|
2812 (" %[ " vm-ml-message-attributes-alist
|
|
2813 (vm-ml-labels ("; " vm-ml-labels)) " %] ")
|
|
2814 (" %[%] "))
|
|
2815 "%p" " " global-mode-string))
|
|
2816
|
|
2817 (defvar vm-ml-message-attributes-alist
|
|
2818 '((vm-ml-message-new
|
|
2819 "new"
|
|
2820 (vm-ml-message-unread
|
|
2821 "unread"
|
|
2822 (vm-ml-message-read "read")))
|
|
2823 (vm-ml-message-edited " edited")
|
|
2824 (vm-ml-message-filed " filed")
|
|
2825 (vm-ml-message-written " written")
|
|
2826 (vm-ml-message-replied " replied")
|
|
2827 (vm-ml-message-forwarded " forwarded")
|
|
2828 (vm-ml-message-redistributed " redistributed")
|
|
2829 (vm-ml-message-deleted " deleted")
|
|
2830 (vm-ml-message-marked " MARKED")))
|
|
2831 (defvar vm-ml-message-number nil)
|
|
2832 (make-variable-buffer-local 'vm-ml-message-number)
|
|
2833 (defvar vm-ml-highest-message-number nil)
|
|
2834 (make-variable-buffer-local 'vm-ml-highest-message-number)
|
|
2835 (defvar vm-ml-sort-keys nil)
|
|
2836 (make-variable-buffer-local 'vm-ml-sort-keys)
|
|
2837 (defvar vm-ml-labels nil)
|
|
2838 (make-variable-buffer-local 'vm-ml-labels)
|
|
2839 ; unused now
|
|
2840 ;(defvar vm-ml-attributes-string nil)
|
|
2841 ;(make-variable-buffer-local 'vm-ml-attributes-string)
|
|
2842 (defvar vm-ml-message-new nil)
|
|
2843 (make-variable-buffer-local 'vm-ml-message-new)
|
|
2844 (defvar vm-ml-message-unread nil)
|
|
2845 (make-variable-buffer-local 'vm-ml-message-unread)
|
|
2846 (defvar vm-ml-message-read nil)
|
|
2847 (make-variable-buffer-local 'vm-ml-message-read)
|
|
2848 (defvar vm-ml-message-edited nil)
|
|
2849 (make-variable-buffer-local 'vm-ml-message-edited)
|
|
2850 (defvar vm-ml-message-replied nil)
|
|
2851 (make-variable-buffer-local 'vm-ml-message-replied)
|
|
2852 (defvar vm-ml-message-forwarded nil)
|
|
2853 (make-variable-buffer-local 'vm-ml-message-forwarded)
|
|
2854 (defvar vm-ml-message-redistributed nil)
|
|
2855 (make-variable-buffer-local 'vm-ml-message-redistributed)
|
|
2856 (defvar vm-ml-message-deleted nil)
|
|
2857 (make-variable-buffer-local 'vm-ml-message-deleted)
|
|
2858 (defvar vm-ml-message-filed nil)
|
|
2859 (make-variable-buffer-local 'vm-ml-message-filed)
|
|
2860 (defvar vm-ml-message-written nil)
|
|
2861 (make-variable-buffer-local 'vm-ml-message-written)
|
|
2862 (defvar vm-ml-message-marked nil)
|
|
2863 (make-variable-buffer-local 'vm-ml-message-marked)
|
|
2864 ;; to make the tanjed compiler shut up
|
|
2865 (defvar vm-pop-read-point nil)
|
24
|
2866 (defvar vm-pop-ok-to-ask nil)
|
0
|
2867 (defvar vm-reply-list nil)
|
|
2868 (defvar vm-forward-list nil)
|
|
2869 (defvar vm-redistribute-list nil)
|
|
2870 (defvar current-itimer nil)
|
|
2871 (defvar current-menubar nil)
|
|
2872 (defvar scrollbar-height nil)
|
|
2873 (defvar top-toolbar nil)
|
|
2874 (defvar top-toolbar-height nil)
|
|
2875 (defvar bottom-toolbar nil)
|
|
2876 (defvar bottom-toolbar-height nil)
|
|
2877 (defvar right-toolbar nil)
|
|
2878 (defvar right-toolbar-width nil)
|
|
2879 (defvar left-toolbar nil)
|
|
2880 (defvar left-toolbar-width nil)
|
|
2881 ;; this defvar matches the XEmacs one so it doesn't matter if VM
|
|
2882 ;; is loaded before highlight-headers.el
|
|
2883 (defvar highlight-headers-regexp "Subject[ \t]*:")
|
|
2884 (defvar vm-url-regexp
|
20
|
2885 "<URL:\\([^>]+\\)>\\|\\(\\(file\\|ftp\\|gopher\\|http\\|https\\|news\\|wais\\|www\\)://[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)\\|\\(mailto:[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)"
|
|
2886 "Regular expression that matches an absolute URL.
|
|
2887 The URL itself must be matched by a \\(..\\) grouping.
|
|
2888 VM will extract the URL by copying the lowest number grouping
|
|
2889 that has a match.")
|
0
|
2890 (defconst vm-month-alist
|
|
2891 '(("jan" "January" "1")
|
|
2892 ("feb" "February" "2")
|
|
2893 ("mar" "March" "3")
|
|
2894 ("apr" "April" "4")
|
|
2895 ("may" "May" "5")
|
|
2896 ("jun" "June" "6")
|
|
2897 ("jul" "July" "7")
|
|
2898 ("aug" "August" "8")
|
|
2899 ("sep" "September" "9")
|
|
2900 ("oct" "October" "10")
|
|
2901 ("nov" "November" "11")
|
|
2902 ("dec" "December" "12")))
|
|
2903 (defvar vm-pop-passwords nil)
|
|
2904 (defvar pop-up-frames nil)
|
|
2905 (defvar vm-parse-date-workspace (make-vector 6 nil))
|
|
2906 ;; cache so we don't call timezone-make-date-sortable so much.
|
|
2907 ;; messages have their own cache; this is for the virtual folder
|
|
2908 ;; alist selectors.
|
|
2909 (defvar vm-sortable-date-alist nil)
|
|
2910 (defvar vm-summary-=> nil)
|
|
2911 (defvar vm-summary-no-=> nil)
|
|
2912 (defvar vm-summary-overlay nil)
|
|
2913 (make-variable-buffer-local 'vm-summary-overlay)
|
|
2914 (defvar vm-thread-loop-obarray (make-vector 29 0))
|
|
2915 (defvar vm-delete-duplicates-obarray (make-vector 29 0))
|
|
2916 (defvar vm-mail-mode-map-parented nil)
|
|
2917 (defvar vm-xface-cache (make-vector 29 0))
|
20
|
2918 (defconst vm-mime-base64-alphabet
|
|
2919 (concat
|
|
2920 [
|
|
2921 65 66 67 68 69 70 71 72 73 74 75 76 77
|
|
2922 78 79 80 81 82 83 84 85 86 87 88 89 90
|
|
2923 97 98 99 100 101 102 103 104 105 106 107 108 109
|
|
2924 110 111 112 113 114 115 116 117 118 119 120 121 122
|
|
2925 48 49 50 51 52 53 54 55 56 57 43 47
|
|
2926 ]
|
|
2927 ))
|
|
2928 (defconst vm-mime-base64-alphabet-decoding-vector
|
|
2929 [
|
|
2930 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
2931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
2932 0 0 0 0 0 0 0 0 0 0 0 62 0 0 0 63
|
|
2933 52 53 54 55 56 57 58 59 60 61 0 0 0 0 0 0
|
|
2934 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
|
2935 15 16 17 18 19 20 21 22 23 24 25 0 0 0 0 0
|
|
2936 0 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
|
2937 41 42 43 44 45 46 47 48 49 50 51 0 0 0 0 0
|
|
2938 ])
|
|
2939
|
|
2940 ;;(defconst vm-mime-base64-alphabet-decoding-alist
|
|
2941 ;; '(
|
|
2942 ;; ( 65 . 00) ( 66 . 01) ( 67 . 02) ( 68 . 03) ( 69 . 04) ( 70 . 05)
|
|
2943 ;; ( 71 . 06) ( 72 . 07) ( 73 . 08) ( 74 . 09) ( 75 . 10) ( 76 . 11)
|
|
2944 ;; ( 77 . 12) ( 78 . 13) ( 79 . 14) ( 80 . 15) ( 81 . 16) ( 82 . 17)
|
|
2945 ;; ( 83 . 18) ( 84 . 19) ( 85 . 20) ( 86 . 21) ( 87 . 22) ( 88 . 23)
|
|
2946 ;; ( 89 . 24) ( 90 . 25) ( 97 . 26) ( 98 . 27) ( 99 . 28) (100 . 29)
|
|
2947 ;; (101 . 30) (102 . 31) (103 . 32) (104 . 33) (105 . 34) (106 . 35)
|
|
2948 ;; (107 . 36) (108 . 37) (109 . 38) (110 . 39) (111 . 40) (112 . 41)
|
|
2949 ;; (113 . 42) (114 . 43) (115 . 44) (116 . 45) (117 . 46) (118 . 47)
|
|
2950 ;; (119 . 48) (120 . 49) (121 . 50) (122 . 51) ( 48 . 52) ( 49 . 53)
|
|
2951 ;; ( 50 . 54) ( 51 . 55) ( 52 . 56) ( 53 . 57) ( 54 . 58) ( 55 . 59)
|
|
2952 ;; ( 56 . 60) ( 57 . 61) ( 43 . 62) ( 47 . 63)
|
|
2953 ;; ))
|
|
2954 ;;
|
|
2955 ;;(defvar vm-mime-base64-alphabet-decoding-vector
|
|
2956 ;; (let ((v (make-vector 123 nil))
|
|
2957 ;; (p vm-mime-base64-alphabet-decoding-alist))
|
|
2958 ;; (while p
|
|
2959 ;; (aset v (car (car p)) (cdr (car p)))
|
|
2960 ;; (setq p (cdr p)))
|
|
2961 ;; v ))
|
|
2962
|
|
2963 (defvar vm-message-garbage-alist nil)
|
|
2964 (make-variable-buffer-local 'vm-message-garbage-alist)
|
|
2965 (defvar vm-folder-garbage-alist nil)
|
|
2966 (make-variable-buffer-local 'vm-folder-garbage-alist)
|
|
2967 (defconst vm-mime-header-list '("MIME-Version:" "Content-"))
|
24
|
2968 (defconst vm-mime-mule-charset-to-coding-alist
|
20
|
2969 '(
|
|
2970 ("us-ascii" no-conversion)
|
|
2971 ("iso-8859-1" no-conversion)
|
|
2972 ("iso-8859-2" iso-8859-2)
|
|
2973 ("iso-8859-3" iso-8859-3)
|
|
2974 ("iso-8859-4" iso-8859-4)
|
|
2975 ("iso-8859-5" iso-8859-5)
|
|
2976 ("iso-8859-6" iso-8859-6)
|
|
2977 ("iso-8859-7" iso-8859-7)
|
|
2978 ("iso-8859-8" iso-8859-8)
|
|
2979 ("iso-8859-9" iso-8859-9)
|
|
2980 ("iso-2022-jp" iso-2022-jp)
|
|
2981 ;; probably not correct, but probably better than nothing.
|
|
2982 ("iso-2022-jp-2" iso-2022-jp)
|
|
2983 ("iso-2022-int-1" iso-2022-int-1)
|
|
2984 ("iso-2022-kr" iso-2022-kr)
|
|
2985 ("euc-kr" iso-2022-kr)
|
|
2986 ))
|
24
|
2987 (defvar vm-mime-mule-charset-to-charset-alist
|
|
2988 '(
|
|
2989 (latin-iso8859-1 "iso-8859-1")
|
|
2990 (latin-iso8859-2 "iso-8859-2")
|
|
2991 (latin-iso8859-3 "iso-8859-3")
|
|
2992 (latin-iso8859-4 "iso-8859-4")
|
|
2993 (cyrillic-iso8859-5 "iso-8859-5")
|
|
2994 (arabic-iso8859-6 "iso-8859-6")
|
|
2995 (greek-iso8859-7 "iso-8859-7")
|
|
2996 (hebrew-iso8859-8 "iso-8859-8")
|
|
2997 (latin-iso8859-9 "iso-8859-9")
|
|
2998 (japanese-jisx0208 "iso-2022-jp")
|
|
2999 (korean-ksc5601 "iso-2022-kr")
|
|
3000 (chinese-gb2312 "iso-2022-jp")
|
|
3001 (sisheng "iso-2022-jp")
|
|
3002 (thai-tis620 "iso-2022-jp")
|
|
3003 ))
|
|
3004 (defvar vm-mime-mule-coding-to-charset-alist
|
|
3005 '(
|
|
3006 (iso-2022-8 "iso-2022-jp")
|
|
3007 (iso-2022-7-unix "iso-2022-jp")
|
|
3008 (iso-2022-7-dos "iso-2022-jp")
|
|
3009 (iso-2022-7-mac "iso-2022-jp")
|
|
3010 ))
|
20
|
3011 (defconst vm-mime-charset-completion-alist
|
|
3012 '(
|
|
3013 ("us-ascii")
|
|
3014 ("iso-8859-1")
|
|
3015 ("iso-8859-2")
|
|
3016 ("iso-8859-3")
|
|
3017 ("iso-8859-4")
|
|
3018 ("iso-8859-5")
|
|
3019 ("iso-8859-6")
|
|
3020 ("iso-8859-7")
|
|
3021 ("iso-8859-8")
|
|
3022 ("iso-8859-9")
|
|
3023 ("iso-2022-jp")
|
|
3024 ("iso-2022-jp-2")
|
|
3025 ("iso-2022-int-1")
|
|
3026 ("iso-2022-kr")
|
|
3027 ))
|
|
3028 (defconst vm-mime-type-completion-alist
|
|
3029 '(
|
|
3030 ("text/plain")
|
|
3031 ("text/enriched")
|
|
3032 ("text/html")
|
|
3033 ("audio/basic")
|
|
3034 ("image/jpeg")
|
|
3035 ("image/png")
|
|
3036 ("image/gif")
|
|
3037 ("image/tiff")
|
|
3038 ("video/mpeg")
|
|
3039 ("application/postscript")
|
|
3040 ("application/octet-stream")
|
|
3041 ("message/rfc822")
|
30
|
3042 ("message/news")
|
20
|
3043 ))
|
|
3044 (defconst vm-mime-encoded-word-regexp
|
|
3045 "=\\?\\([^?]+\\)\\?\\([BQ]\\)\\?\\([^?]+\\)\\?=")
|
|
3046 ;; for MS-DOS and Windows NT
|
|
3047 ;; nil value means text file
|
|
3048 ;; t value means binary file
|
|
3049 ;; presumably it controls whether LF -> CRLF mapping is done
|
|
3050 ;; when writing to files.
|
|
3051 (defvar buffer-file-type)
|
|
3052 (defvar vm-frame-list nil)
|
|
3053 (if (not (boundp 'shell-command-switch))
|
|
3054 (defvar shell-command-switch "-c"))
|