Mercurial > hg > xemacs-beta
comparison lisp/vm/vm-vars.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | ac2d302a0011 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 ;;; VM user and internal variable initialization | |
2 ;;; Copyright (C) 1989, 1990, 1991, 1993, 1994, 1995 Kyle E. Jones | |
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 | |
24 (defvar vm-options-file "~/.vm.options" | |
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 | |
27 users to edit directly. Use the Options menu to change what | |
28 appears in this file.") | |
29 | |
30 (defvar vm-primary-inbox "~/INBOX" | |
31 "*Mail is moved from the system mailbox to this file for reading.") | |
32 | |
33 (defvar vm-crash-box "~/INBOX.CRASH" | |
34 "*File in which to store mail temporarily while it is transferred from | |
35 the system mailbox to the primary inbox. If a crash occurs | |
36 during this mail transfer, any missing mail will be found in this | |
37 file. VM will do crash recovery from this file automatically at | |
38 startup, as necessary.") | |
39 | |
40 (defvar vm-keep-crash-boxes nil | |
41 "*Non-nil value should be a string specifying a directory where | |
42 your crash boxes should be moved after VM has copied new mail | |
43 out of them. This is a safety measure. In at least one case a | |
44 pointer corruption bug inside Emacs has caused VM to believe that | |
45 it had copied information out of the crash box when it in fact | |
46 had not. VM then deleted the crash box, losing the batch of | |
47 incoming mail. This is an exceedingly rare problem, but if you | |
48 want to avoid losing mail if it happens, set vm-keep-crash-boxes | |
49 to point to a directory in the same filesystem as all your | |
50 crash boxes. Each saved crash box will have a unique name based | |
51 on the current date and time the box was saved. You will need to | |
52 clean out this directory from time to time; VM does not do so. | |
53 | |
54 A nil value means VM should just delete crash boxes after it | |
55 has copied out the mail.") | |
56 | |
57 ;; use this function to access vm-spool-files on the fly. this | |
58 ;; allows us to use environmental variables without setting | |
59 ;; vm-spool-files at load time and thereby making it hard to dump an | |
60 ;; Emacs containing a preloaded VM. | |
61 (defun vm-spool-files () | |
62 (or vm-spool-files | |
63 (and (setq vm-spool-files (getenv "MAILPATH")) | |
64 (setq vm-spool-files | |
65 (vm-parse vm-spool-files | |
66 "\\([^:%?]+\\)\\([%?][^:]*\\)?\\(:\\|$\\)"))) | |
67 (and (setq vm-spool-files (getenv "MAIL")) | |
68 (setq vm-spool-files (list vm-spool-files))))) | |
69 | |
70 (defvar vm-spool-files nil | |
71 "*If non-nil this variable's value should be a list of strings | |
72 or a list of lists. | |
73 | |
74 If the value is a list of strings, the strings should name files | |
75 that VM will check for incoming mail instead of the default place | |
76 VM thinks your system mailbox is. Mail will be moved from these | |
77 mailboxes to your primary inbox as specified by vm-primary-inbox, | |
78 using vm-crash-box as a waystation. | |
79 | |
80 If the value is a list of lists, each sublist should be of the form | |
81 | |
82 (INBOX SPOOLNAME CRASHBOX) | |
83 | |
84 INBOX, SPOOLNAME and CRASHBOX are all strings. | |
85 | |
86 INBOX is the folder where you want your new mail to be moved when | |
87 you type 'g' (running vm-get-new-mail) in VM. It is where you | |
88 will read the mail. | |
89 | |
90 SPOOLNAME is where the mail system leaves your incoming mail, | |
91 e.g. /var/spool/mail/kyle. It can also be a POP maildrop, | |
92 provided it can be matched by the value of vm-recognize-pop-maildrops. | |
93 | |
94 A POP maildrop specification has the following format: | |
95 | |
96 \"HOST:PORT:AUTH:USER:PASSWORD\" | |
97 | |
98 HOST is the host name of the POP server | |
99 PORT is the TCP port number to connect to (should normally be 110). | |
100 USER is the user name sent to the server. | |
101 PASSWORD is the secret shared by you and the server for | |
102 authentication purposes. How is it used depends on the value of | |
103 the AUTH parameter. If the PASSWORD is \"*\", VM will prompt | |
104 you for the password the first time you try to retrieve mail from | |
105 maildrop. If the password is valid, VM will not ask you for the | |
106 password again during this Emacs session. | |
107 | |
108 AUTH is the authentication method used to convince the server you | |
109 should have access to the maildrop. Acceptable values are | |
110 \"pass\", \"rpop\" and \"apop\". For \"pass\", the PASSWORD is sent to | |
111 the server with the POP PASS command. For \"rpop\", the PASSWORD | |
112 should be the string to be sent to the server via the RPOP | |
113 command. In this case the string is not really a secret; | |
114 authentication is done by other means. For \"apop\", an MD5 digest | |
115 of the PASSWORD appended to the server timestamp will be sent to | |
116 the server with the APOP command. In order to use \"apop\" you | |
117 will have to set the value of vm-pop-md5-program appropriately to | |
118 point at the program that will generate the MD5 digest that VM | |
119 needs. | |
120 | |
121 CRASHBOX is the temporary file that VM uses to store mail in | |
122 between the SPOOLNAME and the INBOX. If the system crashes or | |
123 Emacs dies while mail is being moved, and the new mail is not in | |
124 the SPOOLNAME or the INBOX, then it will be in the CRASHBOX. | |
125 | |
126 There can be multiple entries with the same INBOX value, but a | |
127 particular SPOOLNAME should appear only once. CRASHBOXes should | |
128 not be shared among different INBOXes, but you can use the same | |
129 CRASHBOX/INBOX pair with a different SPOOLNAME. | |
130 | |
131 NOTE: The values of vm-primary-inbox and vm-crash-box are ignored | |
132 when getting new mail if vm-spool-files is a list of lists. | |
133 | |
134 vm-spool-files will default to the value of the shell | |
135 environmental variables MAILPATH or MAIL if either of these | |
136 variables are defined and no particular value for vm-spool-files | |
137 has been specified.") | |
138 | |
139 (defvar vm-pop-md5-program "md5" | |
140 "*Program that reads a message on its standard input and writes an | |
141 MD5 digest on its output.") | |
142 | |
143 (defvar vm-recognize-pop-maildrops "^[^:]+:[^:]+:[^:]+:[^:]+:[^:]+" | |
144 "*Value if non-nil should be a regular expression that matches | |
145 spool names found in vm-spool-files that should be considered POP | |
146 maildrops. A nil value tells VM that all the spool names are to | |
147 be considered files.") | |
148 | |
149 (defvar vm-auto-get-new-mail t | |
150 "*Non-nil value causes VM to automatically move mail from spool files | |
151 to a mail folder when the folder is first visited. Nil means | |
152 you must always use vm-get-new-mail to pull in newly arrived messages. | |
153 | |
154 If the value is a number, then it specifies how often (in | |
155 seconds) VM should check for new mail and try to retrieve it. | |
156 This is done asynchronously and may occur while you are editing | |
157 other files. It should not disturb your editing, except perhaps | |
158 for a pause while the work is being done. The `itimer' package | |
159 must be installed for this to work. Otherwise a numeric value is | |
160 the same as a value of t.") | |
161 | |
162 (defvar vm-default-folder-type | |
163 (cond ((not (boundp 'system-configuration)) | |
164 'From_) | |
165 ((or (string-match "-solaris" system-configuration) | |
166 (string-match "usg-unix-v" system-configuration) | |
167 (string-match "-ibm-aix" system-configuration)) | |
168 'From_-with-Content-Length) | |
169 ((string-match "-sco" system-configuration) | |
170 'mmdf) | |
171 (t 'From_)) | |
172 "*Default folder type for empty folders. | |
173 If VM has to add messages that have no specific folder type to an | |
174 empty folder, the folder will become this default type. | |
175 Allowed types are: | |
176 | |
177 From_ | |
178 From_-with-Content-Length | |
179 mmdf | |
180 babyl | |
181 | |
182 Value must be a symbol, not a string. i.e. write | |
183 | |
184 (setq vm-default-folder-type 'From_) | |
185 | |
186 in your .emacs or .vm file. | |
187 | |
188 If you set this variable's value to From_-with-Content-Length you | |
189 must set vm-trust-From_-with-Content-Length non-nil.") | |
190 | |
191 (defvar vm-check-folder-types t | |
192 "*Non-nil value causes VM to check folder and message types for | |
193 compatibility before it performs certain operations. | |
194 | |
195 Before saving a message to a folder, VM will check that the destination folder | |
196 is of the same type as the message to be saved. | |
197 | |
198 Before incorporating message into a visited folder, VM will check that the | |
199 messages are of the same type as that folder. | |
200 | |
201 A nil value means don't do the checks. | |
202 | |
203 Depending on the value of vm-convert-folder-types VM will either | |
204 convert the messages to the appropriate type before saving or | |
205 incorporating them, or it will signal an error.") | |
206 | |
207 (defvar vm-convert-folder-types t | |
208 "*Non-nil value means that when VM checks folder types and finds | |
209 a mismatch (see vm-check-folder-types), it will convert the | |
210 source messages to the type of the destination folder, if it can. | |
211 | |
212 If vm-check-folder-types is nil, then this variable isn't | |
213 consulted.") | |
214 | |
215 (defvar vm-trust-From_-with-Content-Length | |
216 (eq vm-default-folder-type 'From_-with-Content-Length) | |
217 "*Non-nil value means that if the first message in a folder contains | |
218 a Content-Length header and begins with \"From \" VM can safely | |
219 assume that all messages in the folder have Content-Length headers | |
220 that specify the length of the text section of each message. VM | |
221 will then use these headers to determine message boundaries | |
222 instead of the usual way of searching for two newlines followed by a | |
223 line that begins with \"From \". | |
224 | |
225 If you set vm-default-folder-type to From_-with-Content-Length you | |
226 must set this variable non-nil.") | |
227 | |
228 (defvar vm-visible-headers | |
229 '("Resent-" | |
230 "From:" "Sender:" | |
231 "To:" "Apparently-To:" "Cc:" | |
232 "Subject:" | |
233 "Date:") | |
234 "*List of headers that should be visible when VM first displays a message. | |
235 These should be listed in the order you wish them presented. | |
236 Regular expressions are allowed. There's no need to anchor | |
237 patterns with \"^\", as searches always start at the beginning of | |
238 a line. Put a colon at the end of patterns to get exact matches. | |
239 For example, \"Date\" matches \"Date\" and \"Date-Sent\". Header names | |
240 are always matched case insensitively. | |
241 | |
242 If the value of vm-invisible-header-regexp is nil, only the | |
243 headers matched by vm-visible-headers will be displayed. | |
244 Otherwise all headers are displayed except those matched by | |
245 vm-invisible-header-regexp. In this case vm-visible-headers | |
246 specifies the order in which headers are displayed. Headers not | |
247 matching vm-visible-headers are display last.") | |
248 | |
249 (defvar vm-invisible-header-regexp nil | |
250 "*Non-nil value should be a regular expression that tells what headers | |
251 VM should NOT normally display when presenting a message. All other | |
252 headers will be displayed. The variable vm-visible-headers specifies | |
253 the presentation order of headers; headers not matched by | |
254 vm-visible-headers are displayed last. | |
255 | |
256 Nil value causes VM to display ONLY those headers specified in | |
257 vm-visible-headers.") | |
258 | |
259 (defvar vm-highlighted-header-regexp nil | |
260 "*Value specifies which headers to highlight. | |
261 This is a regular expression that matches the names of headers that should | |
262 be highlighted when a message is first presented. For example setting | |
263 this variable to \"From:\\\\|Subject:\" causes the From and Subject | |
264 headers to be highlighted. | |
265 | |
266 This does not work under version 18 Emacs. | |
267 | |
268 If you're using XEmacs, you might want to use the builtin | |
269 `highlight-headers' package instead. If so, then you should set | |
270 the variable vm-use-lucid-highlighting non-nil. You'll need to | |
271 set the various variables used by the highlight-headers package | |
272 to customize highlighting. vm-highlighted-header-regexp is | |
273 ignored in this case.") | |
274 | |
275 (defvar vm-use-lucid-highlighting | |
276 ;; (not (not ...)) to avoid the confusing value of 6. | |
277 (not (not (string-match "XEmacs" emacs-version))) | |
278 "*Non-nil means to use the `highlight-headers' package in XEmacs. | |
279 Nil means just use VM's builtin header highlighting code. | |
280 | |
281 FSF Emacs always uses VM's builtin highlighting code.") | |
282 | |
283 (defvar vm-highlighted-header-face 'bold | |
284 "*Face to be used to highlight headers. | |
285 This variable is ignored under Lucid Emacs. | |
286 See the documentation for the function `highlight-headers' | |
287 to find out how to customize header highlighting under Lucid Emacs.") | |
288 | |
289 (defvar vm-preview-lines 0 | |
290 "*Non-nil value N causes VM to display the visible headers + N lines of text | |
291 of a message when it is first presented. The message is not actually | |
292 flagged as read until it is exposed in its entirety. | |
293 | |
294 A value of t causes VM to display as much of the message as will | |
295 fit in the window associated with the folder buffer. | |
296 | |
297 A nil value causes VM not to preview messages; no text lines are hidden and | |
298 messages are immediately flagged as read.") | |
299 | |
300 (defvar vm-preview-read-messages nil | |
301 "*Non-nil value means to preview messages even if they've already been read. | |
302 A nil value causes VM to preview messages only if new or unread.") | |
303 | |
304 (defvar vm-auto-next-message t | |
305 "*Non-nil value causes VM to use vm-next-message to advance to the next | |
306 message in the folder if the user attempts to scroll past the end of the | |
307 current messages. A nil value disables this behavior.") | |
308 | |
309 (defvar vm-honor-page-delimiters nil | |
310 "*Non-nil value causes VM to honor page delimiters (as specified by the | |
311 Emacs page-delimiter variable) when scrolling through a message.") | |
312 | |
313 (defvar vm-default-window-configuration | |
314 ;; startup = full screan summary | |
315 ;; quitting = full screen folder | |
316 ;; reading-message = folder on bottom, summary on top | |
317 ;; composing-message = full screen composition | |
318 ;; editing-message = full screen edit | |
319 ;; vm-summarize = folder on bottom, summary on top | |
320 '( | |
321 (startup | |
322 ((((top . 70) (left . 70))) | |
323 (((- (0 0 80 10) (0 10 80 40)) | |
324 ((nil summary) (nil message)) | |
325 ((nil nil nil t) (nil nil nil nil)))))) | |
326 (quitting | |
327 ((((top . 70) (left . 70))) | |
328 (((0 0 80 40) | |
329 ((nil message)) | |
330 ((nil nil nil t)))))) | |
331 (reading-message | |
332 ((((top . 70) (left . 70))) | |
333 (((- (0 0 80 10) (0 10 80 40)) | |
334 ((nil summary) (nil message)) | |
335 ((nil nil nil t) (nil nil nil nil)))))) | |
336 (composing-message | |
337 ((((top . 70) (left . 70))) | |
338 (((0 0 80 40) | |
339 ((nil composition)) | |
340 ((nil nil nil t)))))) | |
341 (editing-message | |
342 ((((top . 70) (left . 70))) | |
343 (((0 0 80 40) | |
344 ((nil edit)) | |
345 ((nil nil nil t)))))) | |
346 (vm-summarize | |
347 ((((top . 70) (left . 70))) | |
348 (((- (0 0 80 10) (0 10 80 40)) | |
349 ((nil summary) (nil message)) | |
350 ((nil nil nil t) (nil nil nil nil)))))) | |
351 ) | |
352 "Default window configuration for VM if the user does not specify one. | |
353 If you want to completely turn off VM's window configuration | |
354 feature, set this variable and vm-window-configuration-file to | |
355 nil in your .vm file. | |
356 | |
357 If you want to have a different window configuration setup than | |
358 this, you should not set this variable directly. Rather you | |
359 should set the variable vm-window-configuration-file to point at | |
360 a file, and use the command vm-save-window-configuration | |
361 (normally bound to `WS') to modify part of this configuration to | |
362 your liking. | |
363 | |
364 WARNING: Don't point vm-window-configuration-file at your .vm or | |
365 .emacs file. Your window configuration file should start out as | |
366 an empty or nonexistent file. VM will repeatedly overwrite this | |
367 file as you update your window configuration settings, so | |
368 anything else you put into this file will go away.") | |
369 | |
370 (defvar vm-window-configuration-file "~/.vm.windows" | |
371 "*Non-nil value should be a string that tells VM where to load | |
372 and save your window configuration settings. Your window | |
373 configuration settings are loaded automatically the first time | |
374 you run VM in an Emacs session, and tells VM how to set up | |
375 windows depending on what you are doing inside VM. | |
376 | |
377 The commands vm-save-window-configuration (normally bound to `WS') and | |
378 vm-delete-window-configuration (bound to `WD') let you update this | |
379 information; see their documentation for more information. | |
380 | |
381 You cannot change your window configuration setup without giving | |
382 vm-window-configuration-file a non-nil value. A nil value causes | |
383 VM to use the default window setup specified by the value of | |
384 vm-default-window-configuration. | |
385 | |
386 WARNING: Don't point vm-window-configuration-file at your .vm or | |
387 .emacs file. Your window configuration file should start out as | |
388 an empty or nonexistent file. VM will repeatedly overwrite this | |
389 file as you update your window configuration settings, so | |
390 anything else you put into this file will go away.") | |
391 | |
392 (defvar vm-confirm-quit 0 | |
393 "*Value of t causes VM to always ask for confirmation before quitting | |
394 a VM visit of a folder. A nil value means VM will ask only when messages | |
395 will be lost unwittingly by quitting, i.e. not removed by intentional | |
396 delete and expunge. A value that is not nil and not t causes VM to ask | |
397 only when there are unsaved changes to message attributes, or when messages | |
398 will be unwittingly lost.") | |
399 | |
400 (defvar vm-folder-directory nil | |
401 "*Directory where folders of mail are kept.") | |
402 | |
403 (defvar vm-confirm-new-folders nil | |
404 "*Non-nil value causes interactive calls to vm-save-message | |
405 to ask for confirmation before creating a new folder.") | |
406 | |
407 (defvar vm-delete-empty-folders t | |
408 "*Non-nil value means remove empty (zero length) folders after saving | |
409 A value of t means always remove the folders. | |
410 A value of nil means never remove empty folders. | |
411 A value that's not t or nil means ask before removing empty folders.") | |
412 | |
413 (defvar vm-flush-interval t | |
414 "*Non-nil value specifies how often VM flushes its cached internal | |
415 data. A numeric value gives the number of seconds between | |
416 flushes. A value of t means flush every time there is a change. | |
417 Nil means don't do flushing until a message or folder is saved. | |
418 | |
419 Normally when a message attribute is changed. VM keeps the record | |
420 of the change in its internal memory and doesn't insert the | |
421 changed data into the folder buffer until a particular message or | |
422 the whole folder is saved to disk. This makes normal Emacs | |
423 auto-saving useless for VM folder buffers because the information | |
424 you'd want to auto-save, i.e. the attribute changes, isn't in | |
425 the buffer when it is auto-saved. | |
426 | |
427 Setting vm-flush-interval to a numeric value will cause the VM's | |
428 internal memory caches to be periodically flushed to the folder | |
429 buffer. This is done non-obtrusively, so that if you type | |
430 something while flushing is occurring, the flush will abort | |
431 cleanly and Emacs will respond to your keystrokes as usual.") | |
432 | |
433 (defvar vm-visit-when-saving 0 | |
434 "*Value determines whether VM will visit folders when saving messages. | |
435 `Visiting' means that VM will read the folder into Emacs and append the | |
436 message to the buffer instead of appending to the folder file directly. | |
437 This behavior is ideal when folders are encrypted or compressed since | |
438 appending plaintext directly to such folders is a ghastly mistake. | |
439 | |
440 A value of t means VM will always visit folders when saving. | |
441 | |
442 A nil value means VM will never visit folders before saving to them, and | |
443 VM will generate an error if you attempt to save messages to a folder | |
444 that is being visited. The latter restriction is necessary to insure | |
445 that the buffer and disk copies of the folder being visited remain | |
446 consistent. | |
447 | |
448 A value that is not nil and not t means VM will save to a folder's | |
449 buffer if that folder is being visited, otherwise VM saves to the folder | |
450 file itself.") | |
451 | |
452 (defvar vm-auto-folder-alist nil | |
453 "*Non-nil value should be an alist that VM will use to choose a default | |
454 folder name when messages are saved. The alist should be of the form | |
455 \((HEADER-NAME-REGEXP | |
456 (REGEXP . FOLDER-NAME) ... | |
457 ...)) | |
458 where HEADER-NAME-REGEXP and REGEXP are strings, and FOLDER-NAME | |
459 is a string or an s-expression that evaluates to a string. | |
460 | |
461 If any part of the contents of the message header whose name is | |
462 matched by HEADER-NAME-REGEXP is matched by the regular | |
463 expression REGEXP, VM will evaluate the corresponding FOLDER-NAME | |
464 and use the result as the default when prompting for a folder to | |
465 save the message in. If the resulting folder name is a relative | |
466 pathname, then it will be rooted in the directory named by | |
467 vm-folder-directory, or the default-directory of the currently | |
468 visited folder if vm-folder-directory is nil. | |
469 | |
470 When FOLDER-NAME is evaluated, the current buffer will contain | |
471 only the contents of the header matched by HEADER-NAME-REGEXP. | |
472 It is safe to modify this buffer. You can use the match data | |
473 from any \\( ... \\) grouping constructs in REGEXP along with the | |
474 function buffer-substring to build a folder name based on the | |
475 header information. If the result of evaluating FOLDER-NAME is a | |
476 list, then the list will be treated as another auto-folder-alist | |
477 and will be descended recursively. | |
478 | |
479 Whether REGEXP is matched case sensitively depends on the value | |
480 of the variable vm-auto-folder-case-fold-search. Header names | |
481 are always matched case insensitively.") | |
482 | |
483 (defvar vm-auto-folder-case-fold-search nil | |
484 "*Non-nil value means VM will ignore case when matching header | |
485 contents while doing automatic folder selection via the variable | |
486 vm-auto-folder-alist.") | |
487 | |
488 (defvar vm-virtual-folder-alist nil | |
489 "*Non-nil value should be a list of virtual folder definitions. | |
490 | |
491 A virtual folder is a mapping of messages from one or more real folders | |
492 into what appears to be a single folder. A virtual folder definition | |
493 specifies which real folders should be searched for prospective messages | |
494 and what the inclusion criteria are. | |
495 | |
496 Each virtual folder definition should have the following form: | |
497 | |
498 (VIRTUAL-FOLDER-NAME | |
499 ( (FOLDER-NAME ...) | |
500 (SELECTOR [ARG ...]) ... ) | |
501 ... ) | |
502 | |
503 VIRTUAL-FOLDER-NAME is the name of the virtual folder being defined. | |
504 This is the name by which you and VM will refer to this folder. | |
505 | |
506 FOLDER-NAME should be the name of a real folder. There may be more than | |
507 one FOLDER-NAME listed, the SELECTORs within that sublist will apply to | |
508 them all. If FOLDER-NAME is a directory, VM will assume this to mean that | |
509 all the folders in that directory should be searched. | |
510 | |
511 The SELECTOR is a Lisp symbol that tells VM how to decide whether a message | |
512 from one of the folders specified by the FOLDER-NAMEs should be included | |
513 in the virtual folder. Some SELECTORs require an argument ARG; unless | |
514 otherwise noted ARG may be omitted. | |
515 | |
516 The recognized SELECTORs are: | |
517 | |
518 author - matches message if ARG matches the author; ARG should be a | |
519 regular expression. | |
520 and - matches the message if all its argument | |
521 selectors match the message. Example: | |
522 (and (author \"Derek McGinty\") (new)) | |
523 matches all new messages from Derek McGinty. | |
524 `and' takes any number of arguments. | |
525 any - matches any message. | |
526 deleted - matches message if it is flagged for deletion. | |
527 edited - matches message if it has been edited. | |
528 filed - matched message if it has been saved with its headers. | |
529 forwarded - matches message if it has been forwarded. | |
530 header - matches message if ARG matches any part of the header | |
531 portion of the message; ARG should be a | |
532 regular expression. | |
533 label - matches message if message has a label named ARG. | |
534 less-chars-than - matches message if message has less than ARG | |
535 characters. ARG should be a number. | |
536 less-lines-than - matches message if message has less than ARG | |
537 lines. ARG should be a number. | |
538 more-chars-than - matches message if message has more than ARG | |
539 characters. ARG should be a number. | |
540 more-lines-than - matches message if message has more than ARG | |
541 lines. ARG should be a number. | |
542 marked - matches message if it is marked, as with vm-mark-message. | |
543 new - matches message if it is new. | |
544 not - matches message only if its selector argument | |
545 does NOT match the message. Example: | |
546 (not (deleted)) | |
547 matches messages that are not deleted. | |
548 or - matches the message if any of its argument | |
549 selectors match the message. Example: | |
550 (or (author \"Dave Weckl\") (subject \"drum\")) | |
551 matches messages from Dave Weckl or messages | |
552 with the word \"drum\" in their Subject header. | |
553 `or' takes any number of arguments. | |
554 read - matches message if it is neither new nor unread. | |
555 recipient - matches message if ARG matches any part of the recipient | |
556 list of the message. ARG should be a regular expression. | |
557 replied - matches message if it has been replied to. | |
558 sent-after - matches message if it was sent after the date ARG. | |
559 A fully specified date looks like this: | |
560 \"31 Dec 1999 23:59:59 GMT\" | |
561 although the parts can appear in any order. | |
562 You can leave out any part and it will | |
563 default to the current date's value for that | |
564 part, with the exception of the hh:mm:ss | |
565 part which defaults to midnight. | |
566 sent-before - matches message if it was sent before the date ARG. | |
567 A fully specified date looks like this: | |
568 \"31 Dec 1999 23:59:59 GMT\" | |
569 although the parts can appear in any order. | |
570 You can leave out any part and it will | |
571 default to the current date's value for that | |
572 part, with the exception of the hh:mm:ss | |
573 part which defaults to midnight. | |
574 subject - matches message if ARG matches any part of the message's | |
575 subject; ARG should be a regular expression. | |
576 text - matches message if ARG matches any part of the text | |
577 portion of the message; ARG should be a | |
578 regular expression. | |
579 unread - matches message if it is old but unread. | |
580 written - matches message if it has been saved without its headers. | |
581 ") | |
582 | |
583 (defvar vm-virtual-mirror t | |
584 "*Non-nil value causes the attributes of messages in virtual folders | |
585 to mirror the changes in the attributes of the underlying real messages. | |
586 Similarly, changes in the attributes of virtual messages will change the | |
587 attributes of the underlying real messages. A nil value causes virtual | |
588 messages to have their own distinct set of attributes, apart from the | |
589 underlying real message. | |
590 | |
591 This variable automatically becomes buffer-local when set in any | |
592 fashion. You should set this variable only in your .vm or .emacs | |
593 file. Use setq-default. Once VM has been started, you should not | |
594 set this variable directly, rather you should use the command | |
595 vm-toggle-virtual-mirror, normally bound to `V M'.") | |
596 (make-variable-buffer-local 'vm-virtual-mirror) | |
597 | |
598 (defvar vm-folder-read-only nil | |
599 "*Non-nil value causes a folder to be considered unmodifiable by VM. | |
600 Commands that modify message attributes or messages themselves are disallowed. | |
601 Commands that add or delete messages from the folder are disallowed. | |
602 Commands that scan or allow the reading of messages are allowed but the | |
603 `new' and `unread' message flags are not changed by them. | |
604 | |
605 This variable automatically becomes buffer-local when set in any | |
606 fashion. You should set this variable only in your .vm or .emacs | |
607 file. Use setq-default. Once VM has been started, you should not | |
608 set this variable directly, rather you should use the command | |
609 vm-toggle-read-only, normally bound to C-x C-q.") | |
610 (make-variable-buffer-local 'vm-folder-read-only) | |
611 | |
612 (defvar vm-included-text-prefix " > " | |
613 "*String used to prefix included text in replies.") | |
614 | |
615 (defvar vm-keep-sent-messages 1 | |
616 "*Non-nil value N causes VM to keep the last N messages sent from within VM. | |
617 `Keep' means that VM will not kill the VM mail buffer after you send a message | |
618 with C-c C-c (vm-mail-send-and-exit). A value of 0 or nil causes VM never | |
619 to keep such buffers. A value of t causes VM never to kill such buffers. | |
620 | |
621 Note that these buffers will vanish once you exit Emacs. To keep a permanent | |
622 record of your outgoing mail, use the mail-archive-file-name variable.") | |
623 | |
624 (defvar vm-confirm-mail-send nil | |
625 "*Non-nil means ask before sending a mail message. | |
626 This affects vm-mail-send and vm-mail-send-and-exit in Mail mode.") | |
627 | |
628 (defvar vm-mail-header-from nil | |
629 "*Non-nil value should be a string that will be appear as the body | |
630 of the From header in outbound mail messages. A nil value means don't | |
631 insert a From header. This variable also controls the inclusion and | |
632 format of the Resent-From header, when resending a message with | |
633 vm-resend-message.") | |
634 | |
635 (defvar vm-reply-subject-prefix nil | |
636 "*Non-nil value should be a string that VM should add to the beginning | |
637 of the Subject header in replies, if the string is not already present. | |
638 Nil means don't prefix the Subject header.") | |
639 | |
640 (defvar vm-reply-ignored-addresses nil | |
641 "*Non-nil value should be a list of regular expressions that match | |
642 addresses that VM should automatically remove from the recipient | |
643 headers of replies. These addresses are removed from the headers | |
644 before you are placed in the message composition buffer. So if | |
645 you see an address in the header you don't want you should remove | |
646 it yourself. | |
647 | |
648 Case is ignored when matching the addresses.") | |
649 | |
650 (defvar vm-reply-ignored-reply-tos nil | |
651 "*Non-nil value should be a list of regular expressions that match | |
652 addresses that, if VM finds in a message's Reply-To header, VM | |
653 should ignore the Reply-To header and not use it for replies. VM | |
654 will use the From header instead. | |
655 | |
656 Case is ignored when matching the addresses. | |
657 | |
658 This variable exists solely to provide a escape chute from | |
659 mailing lists that add a Reply-To: mailing list header, thereby | |
660 leaving no way to reply to just the author of a message.") | |
661 | |
662 (defvar vm-in-reply-to-format "%i" | |
663 "*String which specifies the format of the contents of the In-Reply-To | |
664 header that is generated for replies. See the documentation for the | |
665 variable vm-summary-format for information on what this string may | |
666 contain. The format should *not* end with a newline. | |
667 Nil means don't put an In-Reply-To header in replies.") | |
668 | |
669 (defvar vm-included-text-attribution-format "%F writes:\n" | |
670 "*String which specifies the format of the attribution that precedes the | |
671 included text from a message in a reply. See the documentation for the | |
672 variable vm-summary-format for information on what this string may contain. | |
673 Nil means don't attribute included text in replies.") | |
674 | |
675 (defvar vm-included-text-headers nil | |
676 "*List of headers that should be retained in a message included in | |
677 a reply. These should be listed in the order you wish them to | |
678 appear in the included text. Regular expressions are allowed. | |
679 There's no need to anchor patterns with \"^\", as searches always | |
680 start at the beginning of a line. Put a colon at the end of | |
681 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
682 and \"Date-Sent\".) Header names are always matched case | |
683 insensitively. | |
684 | |
685 If the value of vm-included-text-discard-header-regexp is nil, | |
686 the headers matched by vm-included-text-headers are the only | |
687 headers that will be retained. | |
688 | |
689 If vm-included-text-discard-header-regexp is non-nil, then only | |
690 headers matched by that variable will be omitted; all others will | |
691 be included. vm-included-text-headers determines the header | |
692 order in that case, with headers not matching any in the | |
693 vm-included-text-headers list appearing last in the header | |
694 section of the included text.") | |
695 | |
696 (defvar vm-included-text-discard-header-regexp nil | |
697 "*Non-nil value should be a regular expression header that tells | |
698 what headers should not be retained in a message included in a | |
699 reply. This variable along with vm-included-text-headers determines | |
700 which headers are retained. | |
701 | |
702 If the value of vm-included-text-discard-header-regexp is nil, | |
703 the headers matched by vm-included-text-headers are the only headers | |
704 that will be retained. | |
705 | |
706 If vm-included-text-discard-header-regexp is non-nil, then only | |
707 headers matched by this variable will not be retained; all | |
708 others will be included. vm-included-text-headers determines the | |
709 header order in that case, with headers not matching any in | |
710 the vm-included-text-headers list appearing last in the header | |
711 section of the included text.") | |
712 | |
713 (defvar vm-forwarding-subject-format "forwarded message from %F" | |
714 "*String which specifies the format of the contents of the Subject | |
715 header that is generated for a forwarded message. See the documentation | |
716 for the variable vm-summary-format for information on what this string | |
717 may contain. The format should *not* end with nor contain a newline. | |
718 Nil means leave the Subject header empty when forwarding.") | |
719 | |
720 (defvar vm-forwarded-headers nil | |
721 "*List of headers that should be forwarded by vm-forward-message. | |
722 These should be listed in the order you wish them to appear in | |
723 the forwarded message. Regular expressions are allowed. | |
724 There's no need to anchor patterns with \"^\", as searches always | |
725 start at the beginning of a line. Put a colon at the end of | |
726 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
727 and \"Date-Sent\".) Header names are always matched case | |
728 insensitively. | |
729 | |
730 If the value of vm-unforwarded-header-regexp is nil, the headers | |
731 matched by vm-forwarded-headers are the only headers that will be | |
732 forwarded. | |
733 | |
734 If vm-unforwarded-header-regexp is non-nil, then only headers | |
735 matched by that variable will be omitted; all others will be | |
736 forwarded. vm-forwarded-headers determines the forwarding order | |
737 in that case, with headers not matching any in the | |
738 vm-forwarded-headers list appearing last in the header section of | |
739 the forwarded message.") | |
740 | |
741 (defvar vm-unforwarded-header-regexp "only-drop-this-header" | |
742 "*Non-nil value should be a regular expression header that tells | |
743 what headers should not be forwarded by vm-forward-message. This | |
744 variable along with vm-forwarded-headers determines which headers | |
745 are forwarded. | |
746 | |
747 If the value of vm-unforwarded-header-regexp is nil, the headers | |
748 matched by vm-forwarded-headers are the only headers that will be | |
749 forwarded. | |
750 | |
751 If vm-unforwarded-header-regexp is non-nil, then only headers | |
752 matched by this variable will not be forwarded; all others will | |
753 be forwarded. vm-forwarded-headers determines the forwarding | |
754 order in that case, with headers not matching any in the | |
755 vm-forwarded-headers list appearing last in the header section of | |
756 the forwarded message.") | |
757 | |
758 (defvar vm-forwarding-digest-type "rfc934" | |
759 "*Non-nil value should be a string that specifies the type of | |
760 message encapsulation format to use when forwarding a message. | |
761 Legal values of this variable are: | |
762 | |
763 \"rfc934\" | |
764 \"rfc1153\" | |
765 nil | |
766 | |
767 A nil value means don't use a digest, just mark the beginning and | |
768 end of the forwarded message.") | |
769 | |
770 (defvar vm-digest-preamble-format "\"%s\" (%F)" | |
771 "*String which specifies the format of the preamble lines generated by | |
772 vm-send-digest when it is invoked with a prefix argument. One | |
773 line will be generated for each message put into the digest. See the | |
774 documentation for the variable vm-summary-format for information | |
775 on what this string may contain. The format should *not* end | |
776 with nor contain a newline.") | |
777 | |
778 (defvar vm-digest-center-preamble t | |
779 "*Non-nil value means VM will center the preamble lines that precede | |
780 the start of a digest. How the lines will be centered depends on the | |
781 ambient value of fill-column. A nil value suppresses centering.") | |
782 | |
783 (defvar vm-digest-identifier-header-format "X-Digest: %s\n" | |
784 "*Header to insert into messages burst from a digest. | |
785 Value should be a format string of the same type as vm-summary-format that describes a header to be inserted into each message burst from a digest. The format string must end with a newline.") | |
786 | |
787 (defvar vm-digest-burst-type "rfc934" | |
788 "*Value specifies the default digest type offered by vm-burst-digest | |
789 when it asks you what type of digest you want to unpack. Allowed | |
790 values of this variable are: | |
791 | |
792 \"rfc934\" | |
793 \"rfc1153\" | |
794 \"guess\" | |
795 | |
796 If the value is \"guess\", and you take the default | |
797 response when vm-burst-digest queries you, VM will try to guess | |
798 the digest type.") | |
799 | |
800 (defvar vm-digest-send-type "rfc934" | |
801 "*String that specifies the type of digest vm-send-digest will use. | |
802 Legal values of this variable are: | |
803 | |
804 \"rfc934\" | |
805 \"rfc1153\" | |
806 | |
807 ") | |
808 | |
809 (defvar vm-rfc934-digest-headers | |
810 '("Resent-" | |
811 "From:" "Sender:" | |
812 "To:" "Cc:" | |
813 "Subject:" | |
814 "Date:" | |
815 "Message-ID:" | |
816 "Keywords:") | |
817 "*List of headers that should be appear in RFC 934 digests | |
818 created by VM. These should be listed in the order you wish them | |
819 to appear in the digest. Regular expressions are allowed. | |
820 There's no need to anchor patterns with \"^\", as searches always | |
821 start at the beginning of a line. Put a colon at the end of | |
822 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
823 and \"Date-Sent\".) Header names are always matched case | |
824 insensitively. | |
825 | |
826 If the value of vm-rfc934-digest-discard-header-regexp is nil, the headers | |
827 matched by vm-rfc934-digest-headers are the only headers that will be | |
828 kept. | |
829 | |
830 If vm-rfc934-digest-discard-header-regexp is non-nil, then only | |
831 headers matched by that variable will be discarded; all others | |
832 will be kept. vm-rfc934-digest-headers determines the order of | |
833 appearance in that case, with headers not matching any in the | |
834 vm-rfc934-digest-headers list appearing last in the headers | |
835 of the digestified messages.") | |
836 | |
837 (defvar vm-rfc934-digest-discard-header-regexp nil | |
838 "*Non-nil value should be a regular expression header that tells | |
839 what headers should not appear in RFC 934 digests created by VM. This | |
840 variable along with vm-rfc934-digest-headers determines which headers | |
841 are kept and which are discarded. | |
842 | |
843 If the value of vm-rfc934-digest-discard-header-regexp is nil, the headers | |
844 matched by vm-rfc934-digest-headers are the only headers that will be | |
845 kept. | |
846 | |
847 If vm-rfc934-digest-discard-header-regexp is non-nil, then only | |
848 headers matched by this variable will be discarded; all others | |
849 will be kept. vm-rfc934-digest-headers determines the order of | |
850 appearance in that case, with headers not matching any in the | |
851 vm-rfc934-digest-headers list appearing last in the headers | |
852 of the digestified messages.") | |
853 | |
854 (defvar vm-rfc1153-digest-headers | |
855 '("Resent-" | |
856 "Date:" | |
857 "From:" "Sender:" | |
858 "To:" "Cc:" | |
859 "Subject:" | |
860 "Message-ID:" | |
861 "Keywords:") | |
862 "*List of headers that should be appear in RFC 1153 digests | |
863 created by VM. These should be listed in the order you wish them | |
864 to appear in the digest. Regular expressions are allowed. | |
865 There is no need to anchor patterns with \"^\", as searches always | |
866 start at the beginning of a line. Put a colon at the end of | |
867 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
868 and \"Date-Sent\".) Header names are always matched case | |
869 insensitively. | |
870 | |
871 If the value of vm-rfc1153-digest-discard-header-regexp is nil, the headers | |
872 matched by vm-rfc1153-digest-headers are the only headers that will be | |
873 kept. | |
874 | |
875 If vm-rfc1153-digest-discard-header-regexp is non-nil, then only | |
876 headers matched by that variable will be discarded; all others | |
877 will be kept. vm-rfc1153-digest-headers determines the order of | |
878 appearance in that case, with headers not matching any in the | |
879 vm-rfc1153-digest-headers list appearing last in the headers of | |
880 the digestified messages.") | |
881 | |
882 (defvar vm-rfc1153-digest-discard-header-regexp "\\(X400-\\)?Received:" | |
883 "*Non-nil value should be a regular expression header that tells | |
884 what headers should not appear in RFC 1153 digests created by VM. This | |
885 variable along with vm-rfc1153-digest-headers determines which headers | |
886 are kept and which headers are discarded. | |
887 | |
888 If the value of vm-rfc1153-digest-discard-header-regexp is nil, the headers | |
889 matched by vm-rfc1153-digest-headers are the only headers that will be | |
890 kept. | |
891 | |
892 If vm-rfc1153-digest-discard-header-regexp is non-nil, then only | |
893 headers matched by this variable will be discarded; all others | |
894 will be kept. vm-rfc1153-digest-headers determines the order of | |
895 appearance in that case, with headers not matching any in the | |
896 vm-rfc1153-digest-headers list appearing last in the headers of | |
897 the digestified messages.") | |
898 | |
899 (defvar vm-resend-bounced-headers | |
900 '("Resent-" | |
901 "From:" "Sender:" "Reply-To:" | |
902 "To:" "Cc:" | |
903 "Subject:" | |
904 "Newsgroups:" | |
905 "In-Reply-To:" "References:" | |
906 "Keywords:" | |
907 "X-") | |
908 "*List of headers that should be appear in messages resent with | |
909 vm-resend-bounced-message. These should be listed in the order you wish them | |
910 to appear in the message. Regular expressions are allowed. | |
911 There is no need to anchor patterns with \"^\", as searches always | |
912 start at the beginning of a line. Put a colon at the end of | |
913 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
914 and \"Date-Sent\".) Header names are always matched case | |
915 insensitively. | |
916 | |
917 If the value of vm-resend-bounced-discard-header-regexp is nil, the headers | |
918 matched by vm-resend-bounced-headers are the only headers that will be | |
919 kept. | |
920 | |
921 If vm-resend-bounced-discard-header-regexp is non-nil, then only | |
922 headers matched by that variable will be discarded; all others | |
923 will be kept. vm-resend-bounced-headers determines the order of | |
924 appearance in that case, with headers not matching any in the | |
925 vm-resend-bounced-headers list appearing last in the headers of | |
926 the message.") | |
927 | |
928 (defvar vm-resend-bounced-discard-header-regexp nil | |
929 "*Non-nil value should be a regular expression that tells | |
930 what headers should not appear in a resent bounced message. This | |
931 variable along with vm-resend-bounced-headers determines which headers | |
932 are kept and which headers are discarded. | |
933 | |
934 If the value of vm-resend-bounced-discard-header-regexp is nil, | |
935 the headers matched by vm-resend-bounced-headers are the only | |
936 headers that will be kept. | |
937 | |
938 If vm-resend-bounced-discard-header-regexp is non-nil, then only | |
939 headers matched by this variable will be discarded; all others | |
940 will be kept. vm-resend-bounced-headers determines the order of | |
941 appearance in that case, with headers not matching any in the | |
942 vm-resend-bounced-headers list appearing last in the headers of | |
943 the message.") | |
944 | |
945 (defvar vm-resend-headers nil | |
946 "*List of headers that should be appear in messages resent with | |
947 vm-resend-message. These should be listed in the order you wish them | |
948 to appear in the message. Regular expressions are allowed. | |
949 There is no need to anchor patterns with \"^\", as searches always | |
950 start at the beginning of a line. Put a colon at the end of | |
951 patterns to get exact matches. (E.g. \"Date\" matches \"Date\" | |
952 and \"Date-Sent\".) Header names are always matched case | |
953 insensitively. | |
954 | |
955 If the value of vm-resend-discard-header-regexp is nil, the headers | |
956 matched by vm-resend-headers are the only headers that will be | |
957 kept. | |
958 | |
959 If vm-resend-discard-header-regexp is non-nil, then only | |
960 headers matched by that variable will be discarded; all others | |
961 will be kept. vm-resend-headers determines the order of | |
962 appearance in that case, with headers not matching any in the | |
963 vm-resend-headers list appearing last in the headers of | |
964 the message.") | |
965 | |
966 (defvar vm-resend-discard-header-regexp "\\(\\(X400-\\)?Received:\\|Resent-\\)" | |
967 "*Non-nil value should be a regular expression that tells | |
968 what headers should not appear in a resent message. This | |
969 variable along with vm-resend-bounced-headers determines which | |
970 headers are kept and which headers are discarded. | |
971 | |
972 If the value of vm-resend-discard-header-regexp is nil, | |
973 the headers matched by vm-resend-headers are the only | |
974 headers that will be kept. | |
975 | |
976 If vm-resend-discard-header-regexp is non-nil, then only | |
977 headers matched by this variable will be discarded; all others | |
978 will be kept. vm-resend-headers determines the order of | |
979 appearance in that case, with headers not matching any in the | |
980 vm-resend-headers list appearing last in the headers of | |
981 the message.") | |
982 | |
983 (defvar vm-summary-format "%n %*%a %-17.17F %-3.3m %2d %4l/%-5c %I\"%s\"\n" | |
984 "*String which specifies the message summary line format. | |
985 The string may contain the printf-like `%' conversion specifiers which | |
986 substitute information about the message into the final summary line. | |
987 | |
988 Recognized specifiers are: | |
989 a - attribute indicators (always four characters wide) | |
990 The first char is `D', `N', `U' or ` ' for deleted, new, unread | |
991 and read messages respectively. | |
992 The second char is `F', `W' or ` ' for filed (saved) or written | |
993 messages. | |
994 The third char is `R', `Z' or ` ' for messages replied to, | |
995 and forwarded messages. | |
996 The fourth char is `E' if the message has been edited, ` ' otherwise. | |
997 A - longer version of attributes indicators (seven characters wide) | |
998 The first char is `D', `N', `U' or ` ' for deleted, new, unread | |
999 and read messages respectively. | |
1000 The second is `r' or ` ', for message replied to. | |
1001 The third is `z' or ` ', for messages forwarded. | |
1002 The fourth is `b' or ` ', for messages redistributed. | |
1003 The fifth is `f' or ` ', for messages filed. | |
1004 The sixth is `w' or ` ', for messages written. | |
1005 The seventh is `e' or ` ', for messages that have been edited. | |
1006 c - number of characters in message (ignoring headers) | |
1007 d - numeric day of month message sent | |
1008 f - author's address | |
1009 F - author's full name (same as f if full name not found) | |
1010 h - hour:min:sec message sent | |
1011 H - hour:min message sent | |
1012 i - message ID | |
1013 I - thread indentation | |
1014 l - number of lines in message (ignoring headers) | |
1015 L - labels (as a comma list) | |
1016 m - month message sent | |
1017 M - numeric month message sent (January = 1) | |
1018 n - message number | |
1019 s - message subject | |
1020 t - addresses of the recipients of the message, in a comma-separated list | |
1021 T - full names of the recipients of the message, in a comma-separated list | |
1022 If a full name cannot be found, the corresponding address is used | |
1023 instead. | |
1024 U - user defined specifier. The next character in the format | |
1025 string should be a letter. VM will call the function | |
1026 vm-summary-function-<letter> (e.g. vm-summary-function-A for | |
1027 \"%UA\") in the folder buffer with the message being summarized | |
1028 bracketed by (point-min) and (point-max). The function | |
1029 will be passed a message struct as an argument. | |
1030 The function should return a string, which VM will insert into | |
1031 the summary as it would for information from any other summary | |
1032 specifier. | |
1033 w - day of the week message sent | |
1034 y - year message sent | |
1035 z - timezone of date when the message was sent | |
1036 * - `*' if the message is marked, ` ' otherwise | |
1037 | |
1038 Use %% to get a single %. | |
1039 | |
1040 A numeric field width may be given between the `%' and the specifier; | |
1041 this causes right justification of the substituted string. A negative field | |
1042 width causes left justification. | |
1043 | |
1044 The field width may be followed by a `.' and a number specifying | |
1045 the maximum allowed length of the substituted string. If the | |
1046 string is longer than this value the right end of the string is | |
1047 truncated. If the value is negative, the string is truncated on | |
1048 on the left instead of the right. | |
1049 | |
1050 The summary format need not be one line per message but it must end with | |
1051 a newline, otherwise the message pointer will not be displayed correctly | |
1052 in the summary window.") | |
1053 | |
1054 (defvar vm-summary-arrow "->" | |
1055 "*String that is displayed to the left of the summary of the | |
1056 message VM consider to be the current message. The value takes | |
1057 effect when the summary buffer is created. Changing this | |
1058 variable's value has no effect on existing summary buffers.") | |
1059 | |
1060 (defvar vm-summary-highlight-face 'bold | |
1061 "*Face to use to highlight the summary entry for the current message. | |
1062 Nil means don't highlight the current message's summary entry.") | |
1063 | |
1064 (defvar vm-summary-show-threads nil | |
1065 "*Non-nil value means VM should display and maintain | |
1066 message thread trees in the summary buffer. This means that | |
1067 messages with a common ancestor will be displayed contiguously in | |
1068 the summary. (If you have vm-move-messages-physically set | |
1069 non-nil the folder itself will be reordered to match the thread | |
1070 ordering.) If you use the `%I' summary format specifier in your | |
1071 vm-summary-format, indentation will be provided as described in the | |
1072 documentation for vm-summary-thread-indent-level (which see). | |
1073 | |
1074 A nil value means don't display thread information. The `%I' | |
1075 specifier does nothing in the summary format. | |
1076 | |
1077 This variable automatically becomes buffer-local when set in any | |
1078 fashion. You should set this variable only in your .vm or .emacs | |
1079 file. Use setq-default. Once VM has been started, you should not | |
1080 set this variable directly, rather you should use the command | |
1081 vm-toggle-threads-display, normally bound to C-t.") | |
1082 (make-variable-buffer-local 'vm-summary-show-threads) | |
1083 | |
1084 (defvar vm-summary-thread-indent-level 2 | |
1085 "*Value should be a number that specifies how much | |
1086 indentation the '%I' summary format specifier should provide per | |
1087 thread level. A message's `thread level' refers to the number of | |
1088 direct ancestors from the message to the oldest ancestor the | |
1089 message has that is in the current folder. For example, the | |
1090 first message of a thread is generally a message about a new | |
1091 topic, e.g. a message that is not a reply to some other message. | |
1092 Therefore it has no ancestor and would cause %I to generate no | |
1093 indentation. A reply to this message will be indented by the value | |
1094 of vm-summary-thread-indent-level. A reply to that reply will be | |
1095 indented twice the value of vm-summary-thread-indent-level.") | |
1096 | |
1097 (defvar vm-thread-using-subject t | |
1098 "*Non-nil value causes VM to use the Subject header to thread messages. | |
1099 Messages with the same subject will be grouped together. | |
1100 | |
1101 A nil value means VM will disregard the Subject header when | |
1102 threading messages.") | |
1103 | |
1104 (defvar vm-summary-uninteresting-senders nil | |
1105 "*Non-nil value should be a regular expression that matches | |
1106 addresses that you don't consider interesting enough to | |
1107 appear in the summary. When such senders would be displayed by | |
1108 the %F or %f summary format specifiers VM will substitute the | |
1109 value of vm-summary-uninteresting-senders-arrow (default \"To: | |
1110 \") followed by what would be shown by the %T and %t specifiers | |
1111 respectively.") | |
1112 | |
1113 (defvar vm-summary-uninteresting-senders-arrow "To: " | |
1114 "*String to display before the string that is displayed instead of an | |
1115 \"uninteresting\" sender. See vm-summary-uninteresting-senders.") | |
1116 | |
1117 (defvar vm-auto-center-summary nil | |
1118 "*Value controls whether VM will keep the summary arrow vertically | |
1119 centered within the summary window. A value of t causes VM to always | |
1120 keep arrow centered. A value of nil means VM will never bother centering | |
1121 the arrow. A value that is not nil and not t causes VM to center the | |
1122 arrow only if the summary window is not the only existing window.") | |
1123 | |
1124 (defvar vm-summary-subject-no-newlines t | |
1125 "*Non-nil value means VM should replace newlines with spaces in the subject | |
1126 displayed in the summary.") | |
1127 | |
1128 (defvar vm-subject-ignored-prefix "^\\(re: *\\)+" | |
1129 "*Non-nil value should be a regular expression that matches | |
1130 strings at the beginning of the Subject header that you want VM to ignore | |
1131 when threading, sorting, marking, and killing messages by subject. | |
1132 | |
1133 Matches are done case-insensitively.") | |
1134 | |
1135 (defvar vm-subject-ignored-suffix "\\( (fwd)\\| \\)+$" | |
1136 "*Non-nil value should be a regular expression that matches | |
1137 strings at the end of the Subject header that you want VM to ignore | |
1138 when threading, sorting, marking and killing messages by subject. | |
1139 | |
1140 Matches are done case-insensitively.") | |
1141 | |
1142 (defvar vm-mutable-windows pop-up-windows | |
1143 "*This variable's value controls VM's window usage. | |
1144 | |
1145 A non-nil value gives VM free run of the Emacs display; it will commandeer | |
1146 the entire screen for its purposes. | |
1147 | |
1148 A value of nil restricts VM's window usage to the window from which | |
1149 it was invoked. VM will not create, delete, or use any other windows, | |
1150 nor will it resize its own window.") | |
1151 | |
1152 (defvar vm-mutable-frames nil | |
1153 "*Non-nil value means VM is allowed to create and destroy frames | |
1154 to display and undisplay buffers. | |
1155 | |
1156 VM can create a frame to display a buffer, and delete frame to | |
1157 undisplay a buffer. A nil value means VM should not create or | |
1158 delete frames. | |
1159 | |
1160 This variable is _not_ an analogue of vm-mutable-windows. VM | |
1161 still might create frames if this variable is nil. If you set | |
1162 the vm-frame-per-* variables VM will still create frames. Using | |
1163 the vm-frame-per-* variables you have more control over when it | |
1164 happens. | |
1165 | |
1166 Users should consider setting vm-frame-per-folder and | |
1167 vm-frame-per-composition and/or using the -other-frame commands | |
1168 instead of setting this variable. If vm-mutable-frames is set to t, | |
1169 then vm-mutable-windows should probably be set to nil so that you | |
1170 avoid splitting frames. | |
1171 | |
1172 This variable does not apply to the VM commands whose | |
1173 names end in -other-frame, which always create a new frame. | |
1174 | |
1175 This variable has no meaning if you're not running Emacs native | |
1176 under X Windows or some other window system that allows multiple | |
1177 Emacs frames.") | |
1178 | |
1179 (defvar vm-frame-per-folder t | |
1180 "*Non-nil value causes the folder visiting commands to visit in a new frame. | |
1181 Nil means the commands will use the current frame. This variable | |
1182 does not apply to the VM commands whose names end in | |
1183 -other-frame, which always create a new frame. | |
1184 | |
1185 This variable has no meaning if you're not running Emacs native | |
1186 under X Windows or some other window system that allows multiple | |
1187 Emacs frames.") | |
1188 | |
1189 (defvar vm-frame-per-summary nil | |
1190 "*Non-nil value causes VM to display the folder summary in its own frame. | |
1191 Nil means the vm-summarize command will use the current frame. | |
1192 This variable does not apply to vm-summarize-other-frame, which | |
1193 always create a new frame. | |
1194 | |
1195 This variable has no meaning if you're not running Emacs native | |
1196 under X Windows or some other window system that allows multiple | |
1197 Emacs frames.") | |
1198 | |
1199 (defvar vm-frame-per-composition t | |
1200 "*Non-nil value causes the mail composition commands to open a new frame. | |
1201 Nil means the commands will use the current frame. This variable | |
1202 does not apply to the VM commands whose names end in | |
1203 -other-frame, which always create a new frame. | |
1204 | |
1205 This variable has no meaning if you're not running Emacs native | |
1206 under X Windows or some other window system that allows multiple | |
1207 Emacs frames.") | |
1208 | |
1209 (defvar vm-frame-per-edit t | |
1210 "*Non-nil value causes vm-edit-message to open a new frame. | |
1211 Nil means the vm-edit-message will use the current frame. This | |
1212 variable does not apply to vm-edit-message-other-frame, which | |
1213 always create a new frame. | |
1214 | |
1215 This variable has no meaning if you're not running Emacs native | |
1216 under X Windows or some other window system that allows multiple | |
1217 Emacs frames.") | |
1218 | |
1219 ;; #### Chuck, I know you don't like external package mods but | |
1220 ;; this one is an absolute travesty, and VM has a simply | |
1221 ;; abominable time between releases. If you don't at least give | |
1222 ;; the VM frames a special name, it makes it impossible for lots | |
1223 ;; of other things to work sensibly. | |
1224 (defvar vm-frame-parameter-alist | |
1225 (if (string-match "XEmacs" emacs-version) | |
1226 '((folder ((name . "VM"))))) | |
1227 "*Non-nil value is an alist of types and lists of frame parameters. | |
1228 This list tells VM what frame parameters to associate with each | |
1229 new frame it creates of a specific type. | |
1230 | |
1231 The alist should be of this form | |
1232 | |
1233 ((SYMBOL PARAMLIST) (SYMBOL2 PARAMLIST2) ...) | |
1234 | |
1235 SYMBOL must be one of `composition', `edit', `folder' or `summary'. | |
1236 It specifies the type of frame that the following PARAMLIST applies to. | |
1237 | |
1238 `composition' specifies parameters for mail composition frames. | |
1239 `edit' specifies parameters for message edit frames | |
1240 (e.g. created by vm-edit-message-other-frame) | |
1241 `folder' specifies parameters for frames created by `vm' and the | |
1242 `vm-visit-' commands. | |
1243 `primary-folder' specifies parameters for the frame created by running | |
1244 `vm' without any arguments. | |
1245 `summary' specifies parameters for frames to display a summary buffer | |
1246 (e.g. created by vm-summarize-other-frame) | |
1247 | |
1248 PARAMLIST is a list of pairs as described in the documentation for | |
1249 the function `make-frame'. | |
1250 | |
1251 This variable has no effect on frames created as a result of | |
1252 having vm-mutable-frames set to non-nil.") | |
1253 | |
1254 (defvar vm-search-other-frames t | |
1255 "*Non-nil means VM should search frames other than the selected frame | |
1256 when looking for a window that is already displaying a buffer that | |
1257 VM wants to display or undisplay.") | |
1258 | |
1259 (defvar vm-use-toolbar | |
1260 '(next previous delete/undelete autofile file | |
1261 reply compose print visit quit nil help) | |
1262 "*Non-nil value causes VM to provide a toolbar interface. | |
1263 Value should be a list of symbols that will determine which | |
1264 toolbar buttons will appears and in what order. Valid symbol | |
1265 value within the list are: | |
1266 | |
1267 autofile | |
1268 compose | |
1269 delete/undelete | |
1270 file | |
1271 help | |
1272 next | |
1273 previous | |
1274 print | |
1275 quit | |
1276 reply | |
1277 visit | |
1278 nil | |
1279 | |
1280 If nil appears in the list, it should appear exactly once. All | |
1281 buttons after nil in the list will be displayed flushright in | |
1282 top/bottom toolbars and flush bottom in left/right toolbars. | |
1283 | |
1284 This variable only has meaning under XEmacs 19.12 and beyond. | |
1285 See also vm-toolbar-orientation to control where the toolbar is placed.") | |
1286 | |
1287 (defvar vm-toolbar-orientation 'left | |
1288 "*Value is a symbol that specifies where the VM toolbar is located. | |
1289 Legal values are `left', `right' `top' and `bottom'. Any other | |
1290 value will be interpreted as `top'. | |
1291 | |
1292 This variable only has meaning under XEmacs 19.12 and beyond.") | |
1293 | |
1294 (defvar vm-toolbar-pixmap-directory | |
1295 (expand-file-name (concat data-directory "vm/")) | |
1296 "*Value specifies the directory VM should find its toolbar pixmaps.") | |
1297 | |
1298 (defvar vm-use-menus '(folder motion send mark label sort | |
1299 virtual undo dispose emacs nil help) | |
1300 "*Non-nil value causes VM to provide a menu interface. | |
1301 A value that is a list causes VM to install its own menubar. | |
1302 A value of 1 causes VM to install a \"VM\" item in the Emacs menubar. | |
1303 | |
1304 If the value of vm-use-menus is a list, it should be a list of | |
1305 symbols. The symbols and the order that they are listed | |
1306 determine what menus will be in the menubar and how they are | |
1307 ordered. Valid symbols values are: | |
1308 | |
1309 dispose | |
1310 emacs | |
1311 folder | |
1312 help | |
1313 label | |
1314 mark | |
1315 motion | |
1316 send | |
1317 sort | |
1318 undo | |
1319 virtual | |
1320 nil | |
1321 | |
1322 If nil appears in the list, it should appear exactly once. All | |
1323 menus after nil in the list will be displayed flushright in | |
1324 menubar. | |
1325 | |
1326 This variable only has meaning in Emacs environments where menus | |
1327 are provided, which usually means Emacs has to be running under a | |
1328 window system.") | |
1329 | |
1330 (defvar vm-warp-mouse-to-new-frame nil | |
1331 "*Non-nil value causes VM to move the mouse cursor into newly created frames. | |
1332 This is useful to give the new frame the focus under some window managers | |
1333 that randomly place newly created frames. | |
1334 | |
1335 Nil means don't move the mouse cursor.") | |
1336 | |
1337 ;; if browse-url is around (always will be in XEmacs 19.14) use it; | |
1338 ;; otherwise do our own support. | |
1339 (if (boundp 'browse-url-browser-function) | |
1340 (defvaralias 'vm-url-browser 'browse-url-browser-function) | |
1341 (defvar vm-url-browser | |
1342 (cond ((fboundp 'w3-fetch-other-frame) | |
1343 'w3-fetch-other-frame) | |
1344 ((fboundp 'w3-fetch) | |
1345 'w3-fetch) | |
1346 (t 'vm-mouse-send-url-to-netscape)) | |
1347 "*Non-nil value means VM should enable URL passing. | |
1348 This means that VM will search for URLs (Universal Resource | |
1349 Locators) in messages and make it possible for you to pass them | |
1350 to a World Wide Web browser. | |
1351 | |
1352 Clicking mouse-2 on the URL will send it to the browser. | |
1353 | |
1354 Clicking mouse-3 on the URL will pop up a menu of browsers and | |
1355 you can pick which one you want to use. | |
1356 | |
1357 Moving point to a character within the URL and pressing RETURN | |
1358 will send the URL to the browser (Only in XEmacs). | |
1359 | |
1360 If the value of vm-url-browser is a string, it should specify | |
1361 name of an external browser to run. The URL will be passed to | |
1362 the program as its first argument. | |
1363 | |
1364 If the value of vm-url-browser is a symbol, if should specifiy a | |
1365 Lisp function to call. The URL will be passed to the program as | |
1366 its first and only argument. Use | |
1367 | |
1368 (setq vm-url-browser 'vm-mouse-send-url-to-netscape) | |
1369 | |
1370 for Netscape, and | |
1371 | |
1372 (setq vm-url-browser 'vm-mouse-send-url-to-mosaic) | |
1373 | |
1374 for Mosaic. The advantage of using them is that they will display | |
1375 an URL using on existing Mosaic or Netscape process, if possible. | |
1376 | |
1377 A nil value means VM should not enable URL passing to browsers.")) | |
1378 | |
1379 (defvar vm-highlight-url-face 'bold-italic | |
1380 "*Non-nil value should be a face to use display URLs found in messages. | |
1381 Nil means don't highlight URLs.") | |
1382 | |
1383 (defvar vm-url-search-limit 12000 | |
1384 "*Non-nil numeric value tells VM how hard to search for URLs. | |
1385 The number specifies the maximum message size in characters that | |
1386 VM will search for URLs. For message larger than this value, VM | |
1387 will search from the beginning of the mssage to a point | |
1388 vm-url-search-limit / 2 characters into the message. Then VM will | |
1389 search from a point vm-url-search-limit / 2 characters from the | |
1390 end of the message to the end of message.") | |
1391 | |
1392 (defvar vm-display-xfaces nil | |
1393 "*Non-nil means display images as specifies in X-Face headers. | |
1394 This requires at least XEmacs 19.12 with native xface support compiled in.") | |
1395 | |
1396 (defvar vm-startup-with-summary t | |
1397 "*Value tells VM whether to generate a summary when a folder is visited. | |
1398 Nil means don't automatically generate a summary. | |
1399 | |
1400 A value of t means always generate a summary. | |
1401 | |
1402 A positive numeric value N means only generate a summary if there | |
1403 are N or more messages. | |
1404 | |
1405 A negative numeric value -N means only generate a summary if | |
1406 there are N or less messages.") | |
1407 | |
1408 (defvar vm-follow-summary-cursor t | |
1409 "*Non-nil value causes VM to select the message under the cursor in the | |
1410 summary window before executing commands that operate on the current message. | |
1411 This occurs only when the summary buffer window is the selected window.") | |
1412 | |
1413 (defvar vm-jump-to-new-messages t | |
1414 "*Non-nil value causes VM to jump to the first new message | |
1415 whenever such messages arrive in a folder or the first time a | |
1416 folder is visited. | |
1417 | |
1418 See also vm-jump-to-unread-messages.") | |
1419 | |
1420 (defvar vm-jump-to-unread-messages t | |
1421 "*Non-nil value causes VM to jump to the first unread message | |
1422 whenever such messages arrive in a folder or the first time a | |
1423 folder is visited. New messages are considered unread in this | |
1424 context so new messages will be jumped to as well. | |
1425 | |
1426 The value of vm-jump-to-new-messages takes precedence over the | |
1427 setting of this variable. So if there are unread messages and | |
1428 new messages VM will jump to the first new message, even if an | |
1429 unread message appears before it in the folder, provided | |
1430 vm-jump-to-new-messages is non-nil.") | |
1431 | |
1432 (defvar vm-skip-deleted-messages t | |
1433 "*Non-nil value causes VM's `n' and 'p' commands to skip over | |
1434 deleted messages. A value of t causes deleted messages to always be skipped. | |
1435 A value that is not nil and not t causes deleted messages to be skipped only | |
1436 if there are other messages that are not flagged for deletion in the desired | |
1437 direction of motion.") | |
1438 | |
1439 (defvar vm-skip-read-messages nil | |
1440 "*Non-nil value causes VM's `n' and `p' commands to skip over | |
1441 messages that have already been read, in favor of new or unread messages. | |
1442 A value of t causes read messages to always be skipped. A value that is | |
1443 not nil and not t causes read messages to be skipped only if there are | |
1444 unread messages in the desired direction of motion.") | |
1445 | |
1446 (defvar vm-move-after-deleting nil | |
1447 "*Non-nil value causes VM's `d' command to automatically invoke | |
1448 vm-next-message or vm-previous-message after deleting, to move | |
1449 past the deleted messages. A value of t means motion should | |
1450 honor the value of vm-circular-folders. A value that is not t | |
1451 and not nil means that motion should be done as if | |
1452 vm-circular-folders is set to nil.") | |
1453 | |
1454 (defvar vm-move-after-undeleting nil | |
1455 "*Non-nil value causes VM's `u' command to automatically invoke | |
1456 vm-next-message or vm-previous-message after undeleting, to move | |
1457 past the undeleted messages. A value of t means motion should | |
1458 honor the value of vm-circular-folders. A value that is not t | |
1459 and not nil means that motion should be done as if | |
1460 vm-circular-folders is set to nil.") | |
1461 | |
1462 (defvar vm-delete-after-saving nil | |
1463 "*Non-nil value causes VM automatically to mark messages for deletion | |
1464 after successfully saving them to a folder.") | |
1465 | |
1466 (defvar vm-delete-after-archiving nil | |
1467 "*Non-nil value causes VM automatically to mark messages for deletion | |
1468 after successfully auto-archiving them with the vm-auto-archive-messages | |
1469 command.") | |
1470 | |
1471 (defvar vm-delete-after-bursting nil | |
1472 "*Non-nil value causes VM automatically to mark a message for deletion | |
1473 after it has been successfully burst by the vm-burst-digest command.") | |
1474 | |
1475 (defvar vm-circular-folders 0 | |
1476 "*Value determines whether VM folders will be considered circular by | |
1477 various commands. `Circular' means VM will wrap from the end of the folder | |
1478 to the start and vice versa when moving the message pointer, or deleting, | |
1479 undeleting or saving messages before or after the current message. | |
1480 | |
1481 A value of t causes all VM commands to consider folders circular. | |
1482 | |
1483 A value of nil causes all of VM commands to signal an error if the start | |
1484 or end of the folder would have to be passed to complete the command. | |
1485 For movement commands, this occurs after the message pointer has been | |
1486 moved as far as possible in the specified direction. For other commands, | |
1487 the error occurs before any part of the command has been executed, i.e. | |
1488 no deletions, saves, etc. will be done unless they can be done in their | |
1489 entirety. | |
1490 | |
1491 A value that is not nil and not t causes only VM's movement commands to | |
1492 consider folders circular. Saves, deletes and undelete commands will | |
1493 behave the same as if the value is nil.") | |
1494 | |
1495 (defvar vm-search-using-regexps nil | |
1496 "*Non-nil value causes VM's search command to interpret user input as a | |
1497 regular expression instead of as a literal string.") | |
1498 | |
1499 (defvar vm-move-messages-physically nil | |
1500 "*Non-nil value causes VM's commands that change the message order | |
1501 of a folder to always move the physical messages involved and not | |
1502 just change the presentation order. Nil means that commands just | |
1503 change the order in which VM displays messages and leave the | |
1504 folder itself undisturbed.") | |
1505 | |
1506 (defvar vm-edit-message-mode 'text-mode | |
1507 "*Major mode to use when editing messages in VM.") | |
1508 | |
1509 (defvar vm-print-command lpr-command | |
1510 "*Command VM uses to print messages.") | |
1511 | |
1512 (defvar vm-print-command-switches lpr-switches | |
1513 "*Command line flags passed to the command named by vm-print-command. | |
1514 VM uses vm-print-command to print messages.") | |
1515 | |
1516 (defvar vm-berkeley-mail-compatibility | |
1517 (memq system-type '(berkeley-unix netbsd)) | |
1518 "*Non-nil means to read and write BSD Mail(1) style Status: headers. | |
1519 This makes sense if you plan to use VM to read mail archives created by | |
1520 Mail.") | |
1521 | |
1522 (defvar vm-strip-reply-headers nil | |
1523 "*Non-nil value causes VM to strip away all comments and extraneous text | |
1524 from the headers generated in reply messages. If you use the \"fakemail\" | |
1525 program as distributed with Emacs, you probably want to set this variable to | |
1526 to t, because as of Emacs v18.52 \"fakemail\" could not handle unstripped | |
1527 headers.") | |
1528 | |
1529 (defvar vm-inhibit-startup-message nil | |
1530 "*Non-nil causes VM not to display its copyright notice, disclaimers | |
1531 etc. when started in the usual way.") | |
1532 | |
1533 (defvar vm-select-new-message-hook nil | |
1534 "*List of hook functions called every time a message with the 'new' | |
1535 attribute is made to be the current message. When the hooks are run the | |
1536 current buffer will be the folder containing the message and the | |
1537 start and end of the message will be bracketed by (point-min) and | |
1538 (point-max).") | |
1539 | |
1540 (defvar vm-select-unread-message-hook nil | |
1541 "*List of hook functions called every time a message with the 'unread' | |
1542 attribute is made to be the current message. When the hooks are run the | |
1543 current buffer will be the folder containing the message and the | |
1544 start and end of the message will be bracketed by (point-min) and | |
1545 (point-max).") | |
1546 | |
1547 (defvar vm-select-message-hook nil | |
1548 "*List of hook functions called every time a message | |
1549 is made to be the current message. When the hooks are run the | |
1550 current buffer will be the folder containing the message and the | |
1551 start and end of the message will be bracketed by (point-min) and | |
1552 (point-max).") | |
1553 | |
1554 (defvar vm-arrived-message-hook nil | |
1555 "*List of hook functions called once for each message gathered from | |
1556 the system mail spool, or from another folder with | |
1557 vm-get-new-mail, or from a digest with vm-burst-digest. When the | |
1558 hooks are run the current buffer will be the folder containing | |
1559 the message and the start and end of the message will be | |
1560 bracketed by (point-min) and (point-max).") | |
1561 | |
1562 (defvar vm-arrived-messages-hook nil | |
1563 "*List of hook functions called after VM has gathered a group of | |
1564 messages from the system mail spool, or from another folder with | |
1565 vm-get-new-mail, or from a digest with vm-burst-digest. When the | |
1566 hooks are run, the new messages will have already been added to | |
1567 the message list but may not yet appear in the summary. When the | |
1568 hooks are run the current buffer will be the folder containing | |
1569 the messages.") | |
1570 | |
1571 (defvar vm-reply-hook nil | |
1572 "*List of hook functions to be run after a Mail mode | |
1573 composition buffer has been created for a reply. VM runs this | |
1574 hook and then runs vm-mail-mode-hook before leaving the user in | |
1575 the Mail mode buffer.") | |
1576 | |
1577 (defvar vm-forward-message-hook nil | |
1578 "*List of hook functions to be run after a Mail mode | |
1579 composition buffer has been created to forward a message. VM | |
1580 runs this hook and then runs vm-mail-mode-hook before leaving the | |
1581 user in the Mail mode buffer.") | |
1582 | |
1583 (defvar vm-resend-bounced-message-hook nil | |
1584 "*List of hook functions to be run after a Mail mode | |
1585 composition buffer has been created to resend a bounced message. | |
1586 VM runs this hook and then runs vm-mail-mode-hook before leaving | |
1587 the user in the Mail mode buffer.") | |
1588 | |
1589 (defvar vm-resend-message-hook nil | |
1590 "*List of hook functions to be run after a Mail mode | |
1591 composition buffer has been created to resend a message. | |
1592 VM runs this hook and then runs vm-mail-mode-hook before leaving | |
1593 the user in the Mail mode buffer.") | |
1594 | |
1595 (defvar vm-send-digest-hook nil | |
1596 "*List of hook functions to be run after a Mail mode | |
1597 composition buffer has been created to send a digest. | |
1598 VM runs this hook and then runs vm-mail-mode-hook before leaving | |
1599 the user in the Mail mode buffer.") | |
1600 | |
1601 (defvar vm-mail-hook nil | |
1602 "*List of hook functions to be run after a Mail mode | |
1603 composition buffer has been created to send a non specialized | |
1604 message, i.e. a message that is not a reply, forward, digest, | |
1605 etc. VM runs this hook and then runs vm-mail-mode-hook before | |
1606 leaving the user in the Mail mode buffer.") | |
1607 | |
1608 (defvar vm-summary-update-hook nil | |
1609 "*List of hook functions called just after VM updates an existing | |
1610 entry a folder summary.") | |
1611 | |
1612 (defvar vm-summary-redo-hook nil | |
1613 "*List of hook functions called just after VM adds or deletes | |
1614 entries from a folder summary.") | |
1615 | |
1616 (defvar vm-visit-folder-hook nil | |
1617 "*List of hook functions called just after VM visits a folder. | |
1618 It doesn't matter if the folder buffer already exists, this hook | |
1619 is run each time vm or vm-visit-folder is called interactively. | |
1620 It is NOT run after vm-mode is called.") | |
1621 | |
1622 (defvar vm-retrieved-spooled-mail-hook nil | |
1623 "*List of hook functions called just after VM has retrieved | |
1624 a group of messages from your system mailbox(es). When these | |
1625 hooks are run, the messages have been added to the folder buffer | |
1626 but not the message list or summary. When the hooks are run, the | |
1627 current buffer will be the folder where the messages were | |
1628 incorporated.") | |
1629 | |
1630 (defvar vm-edit-message-hook nil | |
1631 "*List of hook functions to be run just before a message is edited. | |
1632 This is the last thing vm-edit-message does before leaving the user | |
1633 in the edit buffer.") | |
1634 | |
1635 (defvar vm-mail-mode-hook nil | |
1636 "*List of hook functions to be run after a Mail mode | |
1637 composition buffer has been created. This is the last thing VM | |
1638 does before leaving the user in the Mail mode buffer.") | |
1639 | |
1640 (defvar vm-mode-hook nil | |
1641 "*List of hook functions to run when a buffer enters vm-mode. | |
1642 These hook functions should generally be used to set key bindings | |
1643 and local variables.") | |
1644 | |
1645 (defvar vm-mode-hooks nil | |
1646 "*Old name for vm-mode-hook. | |
1647 Supported for backward compatibility. | |
1648 You should use the new name.") | |
1649 | |
1650 (defvar vm-summary-mode-hook nil | |
1651 "*List of hook functions to run when a VM summary buffer is created. | |
1652 The current buffer will be that buffer when the hooks are run.") | |
1653 | |
1654 (defvar vm-summary-mode-hooks nil | |
1655 "*Old name for vm-summary-mode-hook. | |
1656 Supported for backward compatibility. | |
1657 You should use the new name.") | |
1658 | |
1659 (defvar vm-virtual-mode-hook nil | |
1660 "*List of hook functions to run when a VM virtual folder buffer is created. | |
1661 The current buffer will be that buffer when the hooks are run.") | |
1662 | |
1663 (defvar vm-quit-hook nil | |
1664 "*List of hook functions to run when you quit VM. | |
1665 This applies to any VM quit command.") | |
1666 | |
1667 (defvar vm-summary-pointer-update-hook nil | |
1668 "*List of hook functions to run when VM summary pointer is updated. | |
1669 When the hooks are run, the current buffer will be the summary buffer.") | |
1670 | |
1671 (defvar vm-display-buffer-hook nil | |
1672 "*List of hook functions that are run every time VM wants to | |
1673 display a buffer. When the hooks are run the current buffer will | |
1674 be the buffer that VM wants to display. The hooks are expected | |
1675 to select a window and VM will display the buffer in that | |
1676 window. | |
1677 | |
1678 If you use display hooks, you should not use VM's builtin window | |
1679 configuration system as the result is likely to be confusing.") | |
1680 | |
1681 (defvar vm-undisplay-buffer-hook nil | |
1682 "*List of hook functions that are run every time VM wants to | |
1683 remove a buffer from the display. When the hooks are run the | |
1684 current buffer will be the buffer that VM wants to disappear. | |
1685 The hooks are expected to do the work of removing the buffer from | |
1686 the display. The hook functions should not kill the buffer. | |
1687 | |
1688 If you use undisplay hooks, you should not use VM's builtin | |
1689 window configuration system as the result is likely to be | |
1690 confusing.") | |
1691 | |
1692 (defvar vm-iconify-frame-hook nil | |
1693 "*List of hook functions that are run whenever VM iconifies a frame.") | |
1694 | |
1695 (defvar vm-menu-setup-hook nil | |
1696 "*List of hook function that are run just after all menus are initialized.") | |
1697 | |
1698 (defvar mail-yank-hooks nil | |
1699 "Hooks called after a message is yanked into a mail composition. | |
1700 | |
1701 (This hook is deprecated, you should use mail-citation-hook instead.) | |
1702 | |
1703 Value is a list of functions to be run. | |
1704 Each hook function can find the newly yanked message between point and mark. | |
1705 Each hook function should return with point and mark around the yanked message. | |
1706 | |
1707 See the documentation for vm-yank-message to see when VM will run | |
1708 these hooks.") | |
1709 | |
1710 (defvar mail-citation-hook nil | |
1711 "*Hook for modifying a citation just inserted in the mail buffer. | |
1712 Each hook function can find the citation between (point) and (mark t). | |
1713 And each hook function should leave point and mark around the citation | |
1714 text as modified. | |
1715 | |
1716 If this hook is entirely empty (nil), a default action is taken | |
1717 instead of no action.") | |
1718 | |
1719 (defvar mail-default-headers nil | |
1720 "*A string containing header lines, to be inserted in outgoing messages. | |
1721 It is inserted before you edit the message, | |
1722 so you can edit or delete these lines.") | |
1723 | |
1724 (defvar mail-signature nil | |
1725 "*Text inserted at end of mail buffer when a message is initialized. | |
1726 If t, it means to insert the contents of the file `~/.signature'.") | |
1727 | |
1728 (defvar vm-rename-current-buffer-function nil | |
1729 "*Non-nil value should be a function to call to rename a buffer. | |
1730 Value should be something that can be passed to `funcall'. If | |
1731 this variable is non-nil, VM will use this function instead of | |
1732 its own buffer renaming code. The buffer to be renamed will be | |
1733 the current buffer when the function is called.") | |
1734 | |
1735 (defvar mode-popup-menu nil | |
1736 "The mode-specific popup menu. Automatically buffer local. | |
1737 By default, when you press mouse-3 in VM, this menu is popped up.") | |
1738 (make-variable-buffer-local 'mode-popup-menu) | |
1739 | |
1740 (defvar vm-movemail-program "movemail" | |
1741 "*Name of program to use to move mail from the system spool | |
1742 to another location. Normally this should be the movemail program | |
1743 distributed with Emacs.") | |
1744 | |
1745 (defvar vm-netscape-program "netscape" | |
1746 "*Name of program to use to run Netscape. | |
1747 vm-mouse-send-url-to-netscape uses this.") | |
1748 | |
1749 (defvar vm-mosaic-program "Mosaic" | |
1750 "*Name of program to use to run Mosaic. | |
1751 vm-mouse-send-url-to-mosaic uses this.") | |
1752 | |
1753 (defvar vm-tale-is-an-idiot nil | |
1754 "*Non-nil value causes vm-mail-send to check multi-line recipient | |
1755 headers of outbound mail for lines that don't end with a | |
1756 comma. If such a line is found, an error is signaled and the | |
1757 mail is not sent.") | |
1758 | |
1759 (defvar vm-maintainer-address "bug-vm@uunet.uu.net" | |
1760 "Where to send VM bug reports.") | |
1761 | |
1762 (defvar vm-mode-map | |
1763 (let ((map (make-sparse-keymap))) | |
1764 ;; unneeded now that VM buffers all have buffer-read-only == t. | |
1765 ;; (suppress-keymap map) | |
1766 (define-key map "h" 'vm-summarize) | |
1767 (define-key map "\M-n" 'vm-next-unread-message) | |
1768 (define-key map "\M-p" 'vm-previous-unread-message) | |
1769 (define-key map "n" 'vm-next-message) | |
1770 (define-key map "p" 'vm-previous-message) | |
1771 (define-key map "N" 'vm-next-message-no-skip) | |
1772 (define-key map "P" 'vm-previous-message-no-skip) | |
1773 (define-key map "\C-\M-n" 'vm-move-message-forward) | |
1774 (define-key map "\C-\M-p" 'vm-move-message-backward) | |
1775 (define-key map "\t" 'vm-goto-message-last-seen) | |
1776 (define-key map "\r" 'vm-goto-message) | |
1777 (define-key map "^" 'vm-goto-parent-message) | |
1778 (define-key map "t" 'vm-expose-hidden-headers) | |
1779 (define-key map " " 'vm-scroll-forward) | |
1780 (define-key map "b" 'vm-scroll-backward) | |
1781 (define-key map "\C-?" 'vm-scroll-backward) | |
1782 (define-key map "d" 'vm-delete-message) | |
1783 (define-key map "\C-d" 'vm-delete-message-backward) | |
1784 (define-key map "u" 'vm-undelete-message) | |
1785 (define-key map "U" 'vm-unread-message) | |
1786 (define-key map "e" 'vm-edit-message) | |
1787 (define-key map "a" 'vm-set-message-attributes) | |
1788 (define-key map "j" 'vm-discard-cached-data) | |
1789 (define-key map "k" 'vm-kill-subject) | |
1790 (define-key map "f" 'vm-followup) | |
1791 (define-key map "F" 'vm-followup-include-text) | |
1792 (define-key map "r" 'vm-reply) | |
1793 (define-key map "R" 'vm-reply-include-text) | |
1794 (define-key map "\M-r" 'vm-resend-bounced-message) | |
1795 (define-key map "B" 'vm-resend-message) | |
1796 (define-key map "z" 'vm-forward-message) | |
1797 (define-key map "c" 'vm-continue-composing-message) | |
1798 (define-key map "@" 'vm-send-digest) | |
1799 (define-key map "*" 'vm-burst-digest) | |
1800 (define-key map "m" 'vm-mail) | |
1801 (define-key map "g" 'vm-get-new-mail) | |
1802 (define-key map "G" 'vm-sort-messages) | |
1803 (define-key map "v" 'vm-visit-folder) | |
1804 (define-key map "s" 'vm-save-message) | |
1805 (define-key map "w" 'vm-save-message-sans-headers) | |
1806 (define-key map "A" 'vm-auto-archive-messages) | |
1807 (define-key map "S" 'vm-save-folder) | |
1808 (define-key map "|" 'vm-pipe-message-to-command) | |
1809 (define-key map "#" 'vm-expunge-folder) | |
1810 (define-key map "q" 'vm-quit) | |
1811 (define-key map "x" 'vm-quit-no-change) | |
1812 (define-key map "i" 'vm-iconify-frame) | |
1813 (define-key map "?" 'vm-help) | |
1814 (define-key map "\C-_" 'vm-undo) | |
1815 (define-key map "\C-xu" 'vm-undo) | |
1816 (define-key map "!" 'shell-command) | |
1817 (define-key map "<" 'vm-beginning-of-message) | |
1818 (define-key map ">" 'vm-end-of-message) | |
1819 (define-key map "\M-s" 'vm-isearch-forward) | |
1820 (define-key map "=" 'vm-summarize) | |
1821 (define-key map "L" 'vm-load-init-file) | |
1822 (define-key map "l" (make-sparse-keymap)) | |
1823 (define-key map "la" 'vm-add-message-labels) | |
1824 (define-key map "ld" 'vm-delete-message-labels) | |
1825 (define-key map "V" (make-sparse-keymap)) | |
1826 (define-key map "VV" 'vm-visit-virtual-folder) | |
1827 (define-key map "VC" 'vm-create-virtual-folder) | |
1828 (define-key map "VA" 'vm-apply-virtual-folder) | |
1829 (define-key map "VM" 'vm-toggle-virtual-mirror) | |
1830 (define-key map "V?" 'vm-virtual-help) | |
1831 (define-key map "M" (make-sparse-keymap)) | |
1832 (define-key map "MN" 'vm-next-command-uses-marks) | |
1833 (define-key map "Mn" 'vm-next-command-uses-marks) | |
1834 (define-key map "MM" 'vm-mark-message) | |
1835 (define-key map "MU" 'vm-unmark-message) | |
1836 (define-key map "Mm" 'vm-mark-all-messages) | |
1837 (define-key map "Mu" 'vm-clear-all-marks) | |
1838 (define-key map "MC" 'vm-mark-matching-messages) | |
1839 (define-key map "Mc" 'vm-unmark-matching-messages) | |
1840 (define-key map "MT" 'vm-mark-thread-subtree) | |
1841 (define-key map "Mt" 'vm-unmark-thread-subtree) | |
1842 (define-key map "MS" 'vm-mark-messages-same-subject) | |
1843 (define-key map "Ms" 'vm-unmark-messages-same-subject) | |
1844 (define-key map "MA" 'vm-mark-messages-same-author) | |
1845 (define-key map "Ma" 'vm-unmark-messages-same-author) | |
1846 (define-key map "M?" 'vm-mark-help) | |
1847 (define-key map "W" (make-sparse-keymap)) | |
1848 (define-key map "WW" 'vm-apply-window-configuration) | |
1849 (define-key map "WS" 'vm-save-window-configuration) | |
1850 (define-key map "WD" 'vm-delete-window-configuration) | |
1851 (define-key map "W?" 'vm-window-help) | |
1852 (define-key map "\C-t" 'vm-toggle-threads-display) | |
1853 (define-key map "\C-x\C-s" 'vm-save-buffer) | |
1854 (define-key map "\C-x\C-w" 'vm-write-file) | |
1855 (define-key map "\C-x\C-q" 'vm-toggle-read-only) | |
1856 (define-key map "%" 'vm-change-folder-type) | |
1857 (define-key map "\M-C" 'vm-show-copying-restrictions) | |
1858 (define-key map "\M-W" 'vm-show-no-warranty) | |
1859 ;; suppress-keymap provides these, but now that we don't use | |
1860 ;; suppress-keymap anymore... | |
1861 (define-key map "0" 'digit-argument) | |
1862 (define-key map "1" 'digit-argument) | |
1863 (define-key map "2" 'digit-argument) | |
1864 (define-key map "3" 'digit-argument) | |
1865 (define-key map "4" 'digit-argument) | |
1866 (define-key map "5" 'digit-argument) | |
1867 (define-key map "6" 'digit-argument) | |
1868 (define-key map "7" 'digit-argument) | |
1869 (define-key map "8" 'digit-argument) | |
1870 (define-key map "9" 'digit-argument) | |
1871 (define-key map "-" 'negative-argument) | |
1872 map ) | |
1873 "Keymap for VM mode.") | |
1874 | |
1875 (defvar vm-summary-mode-map vm-mode-map | |
1876 "Keymap for VM Summary mode") | |
1877 | |
1878 (defvar vm-mail-mode-map | |
1879 (let ((map (make-sparse-keymap))) | |
1880 (define-key map "\C-c\C-v" vm-mode-map) | |
1881 (define-key map "\C-c\C-y" 'vm-yank-message) | |
1882 (define-key map "\C-c\C-s" 'vm-mail-send) | |
1883 (define-key map "\C-c\C-c" 'vm-mail-send-and-exit) | |
1884 (define-key map "\C-c\C-w" 'mail-signature) | |
1885 (define-key map "\C-c\C-t" 'mail-text) | |
1886 (define-key map "\C-c\C-q" 'mail-fill-yanked-message) | |
1887 (define-key map "\C-c\C-f\C-t" 'mail-to) | |
1888 (define-key map "\C-c\C-f\C-b" 'mail-bcc) | |
1889 (define-key map "\C-c\C-f\C-s" 'mail-subject) | |
1890 (define-key map "\C-c\C-f\C-c" 'mail-cc) | |
1891 (define-key map "\C-c\C-f\C-f" 'mail-fcc) | |
1892 map ) | |
1893 "Keymap for VM Mail mode buffers.") | |
1894 | |
1895 (defvar vm-edit-message-map | |
1896 (let ((map (make-sparse-keymap))) | |
1897 (define-key map "\C-c\C-v" vm-mode-map) | |
1898 (define-key map "\C-c\e" 'vm-edit-message-end) | |
1899 (define-key map "\C-c\C-c" 'vm-edit-message-end) | |
1900 (define-key map "\C-c\C-]" 'vm-edit-message-abort) | |
1901 map ) | |
1902 "Keymap for the buffers created by VM's vm-edit-message command.") | |
1903 | |
1904 (defvar vm-folder-history nil | |
1905 "List of folders visited this Emacs session.") | |
1906 | |
1907 ;; internal vars | |
1908 (defvar vm-folder-type nil) | |
1909 (make-variable-buffer-local 'vm-folder-type) | |
1910 (defvar vm-message-list nil) | |
1911 (make-variable-buffer-local 'vm-message-list) | |
1912 (defvar vm-virtual-folder-definition nil) | |
1913 (make-variable-buffer-local 'vm-virtual-folder-definition) | |
1914 (defvar vm-virtual-buffers nil) | |
1915 (make-variable-buffer-local 'vm-virtual-buffers) | |
1916 (defvar vm-real-buffers nil) | |
1917 (make-variable-buffer-local 'vm-real-buffers) | |
1918 (defvar vm-message-pointer nil) | |
1919 (make-variable-buffer-local 'vm-message-pointer) | |
1920 (defvar vm-message-order-changed nil) | |
1921 (make-variable-buffer-local 'vm-message-order-changed) | |
1922 (defvar vm-message-order-header-present nil) | |
1923 (make-variable-buffer-local 'vm-message-order-header-present) | |
1924 (defvar vm-last-message-pointer nil) | |
1925 (make-variable-buffer-local 'vm-last-message-pointer) | |
1926 (defvar vm-mail-buffer nil) | |
1927 (make-variable-buffer-local 'vm-mail-buffer) | |
1928 (defvar vm-summary-buffer nil) | |
1929 (make-variable-buffer-local 'vm-summary-buffer) | |
1930 (defvar vm-summary-pointer nil) | |
1931 (make-variable-buffer-local 'vm-summary-pointer) | |
1932 (defvar vm-system-state nil) | |
1933 (make-variable-buffer-local 'vm-system-state) | |
1934 (defvar vm-undo-record-list nil) | |
1935 (make-variable-buffer-local 'vm-undo-record-list) | |
1936 (defvar vm-saved-undo-record-list nil) | |
1937 (make-variable-buffer-local 'vm-saved-undo-record-list) | |
1938 (defvar vm-undo-record-pointer nil) | |
1939 (make-variable-buffer-local 'vm-undo-record-pointer) | |
1940 (defvar vm-last-save-folder nil) | |
1941 (make-variable-buffer-local 'vm-last-save-folder) | |
1942 (defvar vm-last-written-file nil) | |
1943 (make-variable-buffer-local 'vm-last-written-file) | |
1944 (defvar vm-last-visit-folder nil) | |
1945 (defvar vm-last-pipe-command nil) | |
1946 (make-variable-buffer-local 'vm-last-pipe-command) | |
1947 (defvar vm-messages-not-on-disk 0) | |
1948 (make-variable-buffer-local 'vm-messages-not-on-disk) | |
1949 (defvar vm-totals nil) | |
1950 (make-variable-buffer-local 'vm-totals) | |
1951 (defvar vm-modification-counter 0) | |
1952 (make-variable-buffer-local 'vm-modification-counter) | |
1953 (defvar vm-flushed-modification-counter nil) | |
1954 (make-variable-buffer-local 'vm-flushed-modification-counter) | |
1955 (defvar vm-messages-needing-summary-update nil) | |
1956 (defvar vm-buffers-needing-display-update nil) | |
1957 (defvar vm-numbering-redo-start-point nil) | |
1958 (make-variable-buffer-local 'vm-numbering-redo-start-point) | |
1959 (defvar vm-numbering-redo-end-point nil) | |
1960 (make-variable-buffer-local 'vm-numbering-redo-end-point) | |
1961 (defvar vm-summary-redo-start-point nil) | |
1962 (make-variable-buffer-local 'vm-summary-redo-start-point) | |
1963 (defvar vm-need-summary-pointer-update nil) | |
1964 (make-variable-buffer-local 'vm-need-summary-pointer-update) | |
1965 (defvar vm-thread-obarray nil) | |
1966 (make-variable-buffer-local 'vm-thread-obarray) | |
1967 (defvar vm-thread-subject-obarray nil) | |
1968 (make-variable-buffer-local 'vm-thread-subject-obarray) | |
1969 (defvar vm-label-obarray nil) | |
1970 (make-variable-buffer-local 'vm-label-obarray) | |
1971 (defvar vm-block-new-mail nil) | |
1972 (make-variable-buffer-local 'vm-block-new-mail) | |
1973 (defvar vm-saved-buffer-modified-p nil) | |
1974 (make-variable-buffer-local 'vm-saved-buffer-modified-p) | |
1975 (defvar vm-kept-mail-buffers nil) | |
1976 (defvar vm-inhibit-write-file-hook nil) | |
1977 (defvar vm-chop-full-name-function 'vm-choose-chop-full-name-function) | |
1978 (defvar vm-session-beginning t) | |
1979 (defvar vm-init-file-loaded nil) | |
1980 (defvar vm-window-configurations nil) | |
1981 (defvar vm-window-configuration nil) | |
1982 (defvar vm-message-id-number 0) | |
1983 (defconst vm-spool-directory | |
1984 (or (and (boundp 'rmail-spool-directory) rmail-spool-directory) | |
1985 "/usr/spool/mail/")) | |
1986 (defconst vm-content-length-search-regexp "^Content-Length:.*\n\\|\\(\n\n\\)") | |
1987 (defconst vm-content-length-header "Content-Length:") | |
1988 (defconst vm-attributes-header-regexp | |
1989 "^X-VM-\\(Attributes\\|v5-Data\\):\\(.*\n\\([ \t].*\n\\)*\\)") | |
1990 (defconst vm-attributes-header "X-VM-v5-Data:") | |
1991 (defconst vm-message-order-header-regexp "^X-VM-Message-Order:") | |
1992 (defconst vm-message-order-header "X-VM-Message-Order:") | |
1993 (defconst vm-bookmark-header-regexp "^X-VM-Bookmark:") | |
1994 (defconst vm-bookmark-header "X-VM-Bookmark:") | |
1995 (defconst vm-summary-header-regexp "^X-VM-Summary-Format:") | |
1996 (defconst vm-summary-header "X-VM-Summary-Format:") | |
1997 (defconst vm-vheader-header-regexp "^X-VM-VHeader:") | |
1998 (defconst vm-vheader-header "X-VM-VHeader:") | |
1999 (defconst vm-labels-header-regexp "^X-VM-Labels:") | |
2000 (defconst vm-labels-header "X-VM-Labels:") | |
2001 (defconst vm-berkeley-mail-status-header "Status: ") | |
2002 (defconst vm-berkeley-mail-status-header-regexp "^Status: \\(..?\\)\n") | |
2003 (defvar vm-matched-header-vector (make-vector 6 nil)) | |
2004 (defconst vm-supported-folder-types | |
2005 '("From_" "From_-with-Content-Length" "mmdf" "babyl")) | |
2006 (defconst vm-supported-window-configurations | |
2007 '(("default") | |
2008 ("startup") | |
2009 ("quitting") | |
2010 ("composing-message") | |
2011 ("editing-message") | |
2012 ("marking-message") | |
2013 ("reading-message") | |
2014 ("searching-message") | |
2015 ("vm-delete-message") | |
2016 ("vm-delete-message-backward") | |
2017 ("vm-undelete-message") | |
2018 ("vm-kill-subject") | |
2019 ("vm-expunge-folder") | |
2020 ("vm-burst-digest") | |
2021 ("vm-burst-rfc934-digest") | |
2022 ("vm-burst-rfc1153-digest") | |
2023 ("vm-edit-message") | |
2024 ("vm-discard-cached-data") | |
2025 ("vm-edit-message-end") | |
2026 ("vm-edit-message-abort") | |
2027 ("vm-unread-message") | |
2028 ("vm-quit-no-change") | |
2029 ("vm-quit") | |
2030 ("vm-save-buffer") | |
2031 ("vm-write-file") | |
2032 ("vm-save-folder") | |
2033 ("vm-save-and-expunge-folder") | |
2034 ("vm-visit-folder") | |
2035 ("vm-visit-folder-other-frame") | |
2036 ("vm-visit-folder-other-window") | |
2037 ("vm-help") | |
2038 ("vm-get-new-mail") | |
2039 ("vm-load-init-file") | |
2040 ("vm") | |
2041 ("vm-other-frame") | |
2042 ("vm-other-window") | |
2043 ("vm-toggle-read-only") | |
2044 ("vm-mode") | |
2045 ("vm-show-copying-restrictions") | |
2046 ("vm-show-no-warranty") | |
2047 ("vm-clear-all-marks") | |
2048 ("vm-mark-all-messages") | |
2049 ("vm-mark-message") | |
2050 ("vm-unmark-message") | |
2051 ("vm-mark-messages-same-subject") | |
2052 ("vm-unmark-messages-same-subject") | |
2053 ("vm-mark-messages-same-author") | |
2054 ("vm-unmark-messages-same-author") | |
2055 ("vm-mark-matching-messages") | |
2056 ("vm-unmark-matching-messages") | |
2057 ("vm-mark-thread-subtree") | |
2058 ("vm-unmark-thread-subtree") | |
2059 ("vm-next-command-uses-marks") | |
2060 ("vm-mark-help") | |
2061 ("vm-submit-bug-report") | |
2062 ("vm-goto-message") | |
2063 ("vm-goto-message-last-seen") | |
2064 ("vm-next-message") | |
2065 ("vm-previous-message") | |
2066 ("vm-next-message-no-skip") | |
2067 ("vm-previous-message-no-skip") | |
2068 ("vm-next-unread-message") | |
2069 ("vm-previous-unread-message") | |
2070 ("vm-scroll-forward") | |
2071 ("vm-scroll-backward") | |
2072 ("vm-expose-hidden-headers") | |
2073 ("vm-beginning-of-message") | |
2074 ("vm-end-of-message") | |
2075 ("vm-yank-message-other-folder") | |
2076 ("vm-yank-message") | |
2077 ("vm-mail-send-and-exit") | |
2078 ("vm-mail-send") | |
2079 ("vm-reply") | |
2080 ("vm-reply-include-text") | |
2081 ("vm-followup") | |
2082 ("vm-followup-include-text") | |
2083 ("vm-forward-message") | |
2084 ("vm-forward-message-all-headers") | |
2085 ("vm-mail") | |
2086 ("vm-resend-bounced-message") | |
2087 ("vm-resend-message") | |
2088 ("vm-send-digest") | |
2089 ("vm-send-rfc934-digest") | |
2090 ("vm-send-rfc1153-digest") | |
2091 ("vm-reply-other-frame") | |
2092 ("vm-reply-include-text-other-frame") | |
2093 ("vm-followup-other-frame") | |
2094 ("vm-followup-include-text-other-frame") | |
2095 ("vm-forward-message-other-frame") | |
2096 ("vm-forward-message-all-headers-other-frame") | |
2097 ("vm-mail-other-frame") | |
2098 ("vm-mail-other-window") | |
2099 ("vm-resend-bounced-message-other-frame") | |
2100 ("vm-resend-message-other-frame") | |
2101 ("vm-send-digest-other-frame") | |
2102 ("vm-send-rfc934-digest-other-frame") | |
2103 ("vm-send-rfc1153-digest-other-frame") | |
2104 ("vm-continue-composing-message") | |
2105 ("vm-auto-archive-messages") | |
2106 ("vm-save-message") | |
2107 ("vm-save-message-sans-headers") | |
2108 ("vm-pipe-message-to-command") | |
2109 ("vm-isearch-forward") | |
2110 ("vm-move-message-forward") | |
2111 ("vm-move-message-backward") | |
2112 ("vm-move-message-forward-physically") | |
2113 ("vm-move-message-backward-physically") | |
2114 ("vm-sort-messages") | |
2115 ("vm-toggle-threads-display") | |
2116 ("vm-summarize") | |
2117 ("vm-summarize-other-frame") | |
2118 ("vm-undo") | |
2119 ("vm-visit-virtual-folder") | |
2120 ("vm-visit-virtual-folder-other-frame") | |
2121 ("vm-visit-virtual-folder-other-window"))) | |
2122 (defconst vm-supported-sort-keys | |
2123 '("date" "reversed-date" | |
2124 "author" "reversed-author" | |
2125 "subject" "reversed-subject" | |
2126 "recipients" "reversed-recipients" | |
2127 "line-count" "reversed-line-count" | |
2128 "byte-count" "reversed-byte-count" | |
2129 "physical-order" "reversed-physical-order")) | |
2130 (defconst vm-supported-interactive-virtual-selectors | |
2131 '(("any") | |
2132 ("header") | |
2133 ("label") | |
2134 ("text") | |
2135 ("recipient") | |
2136 ("author") | |
2137 ("subject") | |
2138 ("sent-before") | |
2139 ("sent-after") | |
2140 ("more-chars-than") | |
2141 ("less-chars-than") | |
2142 ("more-lines-than") | |
2143 ("less-lines-than") | |
2144 ("new") | |
2145 ("unread") | |
2146 ("read") | |
2147 ("deleted") | |
2148 ("replied") | |
2149 ("forwarded") | |
2150 ("filed") | |
2151 ("written") | |
2152 ("edited") | |
2153 ("marked"))) | |
2154 (defconst vm-supported-attribute-names | |
2155 '("new" | |
2156 "unread" | |
2157 "read" | |
2158 "deleted" | |
2159 "replied" | |
2160 "forwarded" | |
2161 "redistributed" | |
2162 "filed" | |
2163 "written" | |
2164 "edited" | |
2165 "undeleted" | |
2166 "unreplied" | |
2167 "unforwarded" | |
2168 "unredistributed" | |
2169 "unfiled" | |
2170 "unwritten" | |
2171 "unedited" | |
2172 ;; for babyl cogniscenti | |
2173 "recent" | |
2174 "unseen" | |
2175 "answered" | |
2176 "unanswered")) | |
2177 | |
2178 (defvar vm-key-functions nil) | |
2179 (defconst vm-digest-type-alist '(("rfc934") ("rfc1153"))) | |
2180 (defvar vm-completion-auto-correct t | |
2181 "Non-nil means that minibuffer-complete-file should aggressively erase | |
2182 the trailing part of a word that caused completion to fail, and retry | |
2183 the completion with the resulting word.") | |
2184 (defvar vm-minibuffer-completion-table nil | |
2185 "Completion table used by vm-minibuffer-complete-word. | |
2186 Should be just a list of strings, not an alist or an obarray.") | |
2187 (defvar vm-completion-auto-space t | |
2188 "Non-nil value means that vm-minibuffer-complete-word should automatically | |
2189 append a space to words that complete unambiguously.") | |
2190 (defconst vm-attributes-vector-length 9) | |
2191 (defconst vm-cache-vector-length 20) | |
2192 (defconst vm-softdata-vector-length 16) | |
2193 (defconst vm-location-data-vector-length 6) | |
2194 (defconst vm-mirror-data-vector-length 5) | |
2195 (defconst vm-startup-message-lines | |
2196 '("Please use \\[vm-submit-bug-report] to report bugs." | |
2197 "You may give out copies of VM. Type \\[vm-show-copying-restrictions] to see the conditions" | |
2198 "VM comes with ABSOLUTELY NO WARRANTY; type \\[vm-show-no-warranty] for full details" | |
2199 "In Stereo (where available)")) | |
2200 (defconst vm-startup-message-displayed nil) | |
2201 ;; for the mode line | |
2202 (defvar vm-mode-line-format | |
2203 '("" " %&%& " | |
2204 ("VM: " | |
2205 (vm-folder-read-only "read-only ") | |
2206 (vm-virtual-folder-definition (vm-virtual-mirror "mirrored ")) | |
2207 "%b" | |
2208 (vm-mail-buffer (vm-ml-sort-keys ("" " by " vm-ml-sort-keys))) | |
2209 (vm-message-list | |
2210 (" " vm-ml-message-number | |
2211 " (of " vm-ml-highest-message-number ")") | |
2212 (vm-folder-type | |
2213 " (unrecognized folder type)" | |
2214 " (no messages)"))) | |
2215 (vm-message-list | |
2216 (" %[ " vm-ml-message-attributes-alist | |
2217 (vm-ml-labels ("; " vm-ml-labels)) " %] ") | |
2218 (" %[%] ")) | |
2219 "%p" " " global-mode-string)) | |
2220 | |
2221 (defvar vm-ml-message-attributes-alist | |
2222 '((vm-ml-message-new | |
2223 "new" | |
2224 (vm-ml-message-unread | |
2225 "unread" | |
2226 (vm-ml-message-read "read"))) | |
2227 (vm-ml-message-edited " edited") | |
2228 (vm-ml-message-filed " filed") | |
2229 (vm-ml-message-written " written") | |
2230 (vm-ml-message-replied " replied") | |
2231 (vm-ml-message-forwarded " forwarded") | |
2232 (vm-ml-message-redistributed " redistributed") | |
2233 (vm-ml-message-deleted " deleted") | |
2234 (vm-ml-message-marked " MARKED"))) | |
2235 (defvar vm-ml-message-number nil) | |
2236 (make-variable-buffer-local 'vm-ml-message-number) | |
2237 (defvar vm-ml-highest-message-number nil) | |
2238 (make-variable-buffer-local 'vm-ml-highest-message-number) | |
2239 (defvar vm-ml-sort-keys nil) | |
2240 (make-variable-buffer-local 'vm-ml-sort-keys) | |
2241 (defvar vm-ml-labels nil) | |
2242 (make-variable-buffer-local 'vm-ml-labels) | |
2243 ; unused now | |
2244 ;(defvar vm-ml-attributes-string nil) | |
2245 ;(make-variable-buffer-local 'vm-ml-attributes-string) | |
2246 (defvar vm-ml-message-new nil) | |
2247 (make-variable-buffer-local 'vm-ml-message-new) | |
2248 (defvar vm-ml-message-unread nil) | |
2249 (make-variable-buffer-local 'vm-ml-message-unread) | |
2250 (defvar vm-ml-message-read nil) | |
2251 (make-variable-buffer-local 'vm-ml-message-read) | |
2252 (defvar vm-ml-message-edited nil) | |
2253 (make-variable-buffer-local 'vm-ml-message-edited) | |
2254 (defvar vm-ml-message-replied nil) | |
2255 (make-variable-buffer-local 'vm-ml-message-replied) | |
2256 (defvar vm-ml-message-forwarded nil) | |
2257 (make-variable-buffer-local 'vm-ml-message-forwarded) | |
2258 (defvar vm-ml-message-redistributed nil) | |
2259 (make-variable-buffer-local 'vm-ml-message-redistributed) | |
2260 (defvar vm-ml-message-deleted nil) | |
2261 (make-variable-buffer-local 'vm-ml-message-deleted) | |
2262 (defvar vm-ml-message-filed nil) | |
2263 (make-variable-buffer-local 'vm-ml-message-filed) | |
2264 (defvar vm-ml-message-written nil) | |
2265 (make-variable-buffer-local 'vm-ml-message-written) | |
2266 (defvar vm-ml-message-marked nil) | |
2267 (make-variable-buffer-local 'vm-ml-message-marked) | |
2268 ;; to make the tanjed compiler shut up | |
2269 (defvar vm-pop-read-point nil) | |
2270 (defvar vm-reply-list nil) | |
2271 (defvar vm-forward-list nil) | |
2272 (defvar vm-redistribute-list nil) | |
2273 (defvar current-itimer nil) | |
2274 (defvar mode-popup-menu nil) | |
2275 (defvar current-menubar nil) | |
2276 (defvar scrollbar-height nil) | |
2277 (defvar top-toolbar nil) | |
2278 (defvar top-toolbar-height nil) | |
2279 (defvar bottom-toolbar nil) | |
2280 (defvar bottom-toolbar-height nil) | |
2281 (defvar right-toolbar nil) | |
2282 (defvar right-toolbar-width nil) | |
2283 (defvar left-toolbar nil) | |
2284 (defvar left-toolbar-width nil) | |
2285 ;; this defvar matches the XEmacs one so it doesn't matter if VM | |
2286 ;; is loaded before highlight-headers.el | |
2287 (defvar highlight-headers-regexp "Subject[ \t]*:") | |
2288 (defvar vm-url-regexp | |
2289 "\\(file\\|ftp\\|gopher\\|http\\|https\\|news\\|wais\\|www\\)://[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]" | |
2290 "Regular expression that matches an absolute URL.") | |
2291 (defconst vm-month-alist | |
2292 '(("jan" "January" "1") | |
2293 ("feb" "February" "2") | |
2294 ("mar" "March" "3") | |
2295 ("apr" "April" "4") | |
2296 ("may" "May" "5") | |
2297 ("jun" "June" "6") | |
2298 ("jul" "July" "7") | |
2299 ("aug" "August" "8") | |
2300 ("sep" "September" "9") | |
2301 ("oct" "October" "10") | |
2302 ("nov" "November" "11") | |
2303 ("dec" "December" "12"))) | |
2304 (defvar vm-pop-passwords nil) | |
2305 (defvar pop-up-frames nil) | |
2306 (defvar vm-parse-date-workspace (make-vector 6 nil)) | |
2307 ;; cache so we don't call timezone-make-date-sortable so much. | |
2308 ;; messages have their own cache; this is for the virtual folder | |
2309 ;; alist selectors. | |
2310 (defvar vm-sortable-date-alist nil) | |
2311 (defvar vm-summary-=> nil) | |
2312 (defvar vm-summary-no-=> nil) | |
2313 (defvar vm-summary-overlay nil) | |
2314 (make-variable-buffer-local 'vm-summary-overlay) | |
2315 (defvar vm-thread-loop-obarray (make-vector 29 0)) | |
2316 (defvar vm-delete-duplicates-obarray (make-vector 29 0)) | |
2317 (defvar vm-mail-mode-map-parented nil) | |
2318 (defvar vm-xface-cache (make-vector 29 0)) |