annotate lisp/vm/vm-startup.el @ 7:c153ca296910

Added tag r19-15b4 for changeset 27bc7f280385
author cvs
date Mon, 13 Aug 2007 08:47:16 +0200
parents 376386a54a3c
children 49a24b4fd526
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 ;;; Entry points for VM
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 ;;; Copyright (C) 1994, 1995 Kyle E. Jones
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 ;;; This program is free software; you can redistribute it and/or modify
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 ;;; it under the terms of the GNU General Public License as published by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 ;;; the Free Software Foundation; either version 1, or (at your option)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 ;;; any later version.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 ;;; This program is distributed in the hope that it will be useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 ;;; GNU General Public License for more details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 ;;; You should have received a copy of the GNU General Public License
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 ;;; along with this program; if not, write to the Free Software
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 (provide 'vm-startup)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 (defun vm (&optional folder read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 "Read mail under Emacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 Optional first arg FOLDER specifies the folder to visit. It defaults
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 to the value of vm-primary-inbox. The folder buffer is put into VM
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 mode, a major mode for reading mail.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 Prefix arg or optional second arg READ-ONLY non-nil indicates
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 that the folder should be considered read only. No attribute
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 changes, messages additions or deletions will be allowed in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 visited folder.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 Visiting the primary inbox causes any contents of the system mailbox to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 be moved and appended to the resulting buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 All the messages can be read by repeatedly pressing SPC. Use `n'ext and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 `p'revious to move about in the folder. Messages are marked for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 deletion with `d', and saved to another folder with `s'. Quitting VM
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 with `q' expunges deleted messages and saves the buffered folder to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 disk.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 See the documentation for vm-mode for more information."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 (interactive (list nil current-prefix-arg))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 ;; set inhibit-local-variables non-nil to protect
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 ;; against letter bombs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 ;; set enable-local-variables to nil for newer Emacses
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 (catch 'done
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 (let ((full-startup (not (bufferp folder)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 folder-buffer first-time totals-blurb
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 preserve-auto-save-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 (setq folder-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 (if (bufferp folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 (let ((file (or folder (expand-file-name vm-primary-inbox
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 vm-folder-directory))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 (if (file-directory-p file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 ;; MH code perhaps... ?
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 (error "%s is a directory" file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 (or (vm-get-file-buffer file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 (let ((default-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 (or (and vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 (expand-file-name vm-folder-directory))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 default-directory))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 (inhibit-local-variables t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 (enable-local-variables nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 (vm-unsaved-message "Reading %s..." file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 (prog1 (find-file-noselect file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 ;; update folder history
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 (let ((item (or folder vm-primary-inbox)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 (if (not (equal item (car vm-folder-history)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 (setq vm-folder-history
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 (cons item vm-folder-history))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 (vm-unsaved-message "Reading %s... done" file))))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 (set-buffer folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 (vm-check-for-killed-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 ;; If the buffer's not modified then we know that there can be no
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 ;; messages in the folder that are not on disk.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 (or (buffer-modified-p) (setq vm-messages-not-on-disk 0))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 (setq first-time (not (eq major-mode 'vm-mode))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 preserve-auto-save-file (and buffer-file-name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 (not (buffer-modified-p))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 (file-newer-than-file-p
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 (make-auto-save-file-name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 buffer-file-name)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 ;; Force the folder to be read only if the auto
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 ;; save file contains information the user might not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 ;; want overwritten, i.e. recover-file might be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 ;; desired. What we want to avoid is an auto-save.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 ;; Making the folder read only will keep it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 ;; subsequent actions from modifying the buffer in a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 ;; way that triggers an auto save.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 ;; Also force the folder read-only if it was read only and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 ;; not already in vm-mode, since there's probably a good
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 ;; reason for this.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 (setq vm-folder-read-only (or preserve-auto-save-file read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 (default-value 'vm-folder-read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 (and first-time buffer-read-only)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 ;; If this is not a VM mode buffer then some initialization
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 ;; needs to be done
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 (if first-time
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 (if (fboundp 'buffer-disable-undo)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 (buffer-disable-undo (current-buffer))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 ;; obfuscation to make the v19 compiler not whine
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 ;; about obsolete functions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 (let ((x 'buffer-flush-undo))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 (funcall x (current-buffer))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 (abbrev-mode 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 (auto-fill-mode 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 (vm-mode-internal)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111 (vm-assimilate-new-messages nil t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 (if first-time
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 (vm-gobble-visible-header-variables)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 (vm-gobble-bookmark)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 (vm-gobble-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 (vm-gobble-labels)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 (vm-start-itimers-if-needed)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 ;; make a new frame if the user wants one. reuse an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 ;; existing frame that is showing this folder.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 (if (and full-startup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 vm-frame-per-folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 ;; this so that "emacs -f vm" doesn't create a frame.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 this-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 (let ((w (or (vm-get-buffer-window (current-buffer))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 ;; summary == folder for the purpose
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 ;; of frame reuse.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 (and vm-summary-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 (vm-get-buffer-window vm-summary-buffer)))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 (if (null w)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 (if folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 (vm-goto-new-frame 'folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 (vm-goto-new-frame 'primary-folder 'folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 (vm-set-hooks-for-frame-deletion))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 (select-window w)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 (and vm-warp-mouse-to-new-frame
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 (vm-warp-mouse-to-frame-maybe (vm-window-frame w)))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 ;; say this NOW, before the non-previewers read a message,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 ;; alter the new message count and confuse themselves.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 (if full-startup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 ;; save blurb so we can repeat it later as necessary.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 (setq totals-blurb (vm-emit-totals-blurb)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 (vm-thoughtfully-select-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 (if vm-message-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 (vm-preview-current-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 (vm-update-summary-and-mode-line))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 (if full-startup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 (vm-display (current-buffer) t nil nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155 ;; need to do this after any frame creation because the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 ;; toolbar sets frame-specific height and width specifiers.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 (and full-startup (vm-toolbar-support-possible-p) vm-use-toolbar
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 (vm-toolbar-install-toolbar)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 (vm-toolbar-update-toolbar)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 (and vm-use-menus (vm-menu-support-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 (vm-menu-install-visited-folders-menu))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 (if full-startup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 (vm-display (current-buffer) t nil nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 (if (and (vm-should-generate-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169 ;; don't generate a summary if recover-file is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 ;; likely to happen, since recover-file does
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 ;; nothing useful in a summary buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 (not preserve-auto-save-file))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 (vm-summarize t))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 ;; People were confused that (vm) behaved differently
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 ;; than M-x vm. We used to list all the various VM
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 ;; startup commands here, but now we just accept any
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 ;; command and treat it as if it were VM. It's
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178 ;; probably just as well, since any command that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 ;; calls VM probably does want the window
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 ;; configuration to be setup.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 (vm-display nil nil (list this-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 (list (or this-command 'vm) 'startup))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 (run-hooks 'vm-visit-folder-hook)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 (if full-startup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187 (message totals-blurb))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 ;; Warn user about auto save file, if appropriate.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 (if (and full-startup preserve-auto-save-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 (message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 (substitute-command-keys
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 "Auto save file is newer; consider \\[recover-file]. FOLDER IS READ ONLY.")))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 ;; if we're not doing a full startup or if doing more would
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 ;; trash the auto save file that we need to preserve,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 ;; stop here.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 (if (or (not full-startup) preserve-auto-save-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 (throw 'done t))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 (if (and vm-auto-get-new-mail
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 (not vm-block-new-mail)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 (not vm-folder-read-only))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 (vm-unsaved-message "Checking for new mail for %s..."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 (or buffer-file-name (buffer-name)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204 (if (and (vm-get-spooled-mail) (vm-assimilate-new-messages t))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206 (setq totals-blurb (vm-emit-totals-blurb))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 (if (vm-thoughtfully-select-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 (vm-preview-current-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 (vm-update-summary-and-mode-line))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 (message totals-blurb)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 ;; Display copyright and copying info unless
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213 ;; user says no.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 ;; Check this-command so we don't make the user wait if
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 ;; they call vm non-interactively from some other program.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 (if (and (not vm-inhibit-startup-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217 (not vm-startup-message-displayed)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 (or (memq this-command '(vm vm-visit-folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 ;; for emacs -f vm
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 (null last-command)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222 (vm-display-startup-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 (if (not (input-pending-p))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 (message totals-blurb)))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 (defun vm-other-frame (&optional folder read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 "Like vm, but run in a newly created frame."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 (interactive (list nil current-prefix-arg))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 (if folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 (vm-goto-new-frame 'folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233 (vm-goto-new-frame 'primary-folder 'folder)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236 (vm folder read-only))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 (vm-set-hooks-for-frame-deletion)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 (defun vm-other-window (&optional folder read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
241 "Like vm, but run in a different window."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
242 (interactive (list nil current-prefix-arg))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
243 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
244 (if (one-window-p t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
245 (split-window))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
246 (other-window 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
247 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
248 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
249 (vm folder read-only)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
250
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
251 (put 'vm-mode 'mode-class 'special)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
252
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
253 (defun vm-mode (&optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
254 "Major mode for reading mail.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
255
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
256 This is VM 5.96 (beta).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
257
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
258 Commands:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
259 h - summarize folder contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
260 C-t - toggle threads display
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
261
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
262 n - go to next message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
263 p - go to previous message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
264 N - like `n' but ignores skip-variable settings
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
265 P - like `p' but ignores skip-variable settings
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
266 M-n - go to next unread message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
267 M-p - go to previous unread message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
268 RET - go to numbered message (uses prefix arg or prompts in minibuffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
269 TAB - go to last message seen
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
270 ^ - go to parent of this message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
271 M-s - incremental search through the folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
272
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
273 t - display hidden headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
274 SPC - expose message body or scroll forward a page
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
275 b - scroll backward a page
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
276 < - go to beginning of current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
277 > - go to end of current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
278
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
279 d - delete message, prefix arg deletes messages forward
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
280 C-d - delete message, prefix arg deletes messages backward
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
281 u - undelete
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
282 k - flag for deletion all messages with same subject as the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
283
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
284 r - reply (only to the sender of the message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
285 R - reply with included text from the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
286 M-r - extract and resend bounced message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
287 f - followup (reply to all recipients of message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
288 F - followup with included text from the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
289 z - forward the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
290 m - send a message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
291 B - resend the current message to another user.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
292 c - continue composing the most recent message you were composing
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
293
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
294 @ - digestify and mail entire folder contents (the folder is not modified)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
295 * - burst a digest into individual messages, and append and assimilate these
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
296 message into the current folder.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
297
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
298 G - sort messages by various keys
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
299
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
300 g - get any new mail that has arrived in the system mailbox
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
301 (new mail is appended to the disk and buffer copies of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
302 primary inbox.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
303 v - visit another mail folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
304
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
305 e - edit the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
306 j - discard cached information about the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
307
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
308 s - save current message in a folder (appends if folder already exists)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
309 w - write current message to a file without its headers (appends if exists)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
310 S - save entire folder to disk, does not expunge
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
311 A - save unfiled messages to their vm-auto-folder-alist specified folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
312 # - expunge deleted messages (without saving folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
313 q - quit VM, deleted messages are not expunged, folder is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
314 saved to disk if it is modified. new messages are changed
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
315 to be flagged as just unread.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
316 x - exit VM with no change to the folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
317
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
318 M N - use marks; the next vm command will affect only marked messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
319 if it makes sense for the command to do so
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
320
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
321 M M - mark the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
322 M U - unmark the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
323 M m - mark all messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
324 M u - unmark all messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
325 M C - mark messages matches by a virtual folder selector
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
326 M c - unmark messages matches by a virtual folder selector
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
327 M T - mark thread tree rooted at the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
328 M t - unmark thread tree rooted at the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
329 M S - mark messages with the same subject as the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
330 M s - unmark messages with the same subject as the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
331 M A - mark messages with the same author as the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
332 M a - unmark messages with the same author as the current message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
333
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
334 M ? - partial help for mark commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
335
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
336 W S - save the current window configuration to a name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
337 W D - delete a window configuration
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
338 W W - apply a configuration
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
339 W ? - help for the window configuration commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
340
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
341 V V - visit a virtual folder (must be defined in vm-virtual-folder-alist)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
342 V C - create a virtual folder composed of a subset of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
343 current folder's messages.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
344 V A - apply the selectors of a named virtual folder to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
345 messages in the current folder and create a virtual folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
346 containing the selected messages.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
347 V M - toggle whether this virtual folder's messages mirror the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
348 underlying real messages' attributes.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
349 V ? - help for virtual folder commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
350
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
351 C-_ - undo, special undo that retracts the most recent
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
352 changes in message attributes and labels. Expunges
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
353 message edits, and saves cannot be undone. C-x u is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
354 also bound to this command.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
355
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
356 a - set message attributes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
357
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
358 l a - add labels to message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
359 l d - delete labels from message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
360
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
361 L - reload your VM init file, ~/.vm
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
362
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
363 % - change a folder to another type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
364
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
365 ? - help
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
366
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
367 ! - run a shell command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
368 | - run a shell command with the current message as input
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
369
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
370 M-C - view conditions under which you may redistribute VM
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
371 M-W - view the details of VM's lack of a warranty
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
372
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
373 Use M-x vm-submit-bug-report to submit a bug report.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
374
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
375 Variables:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
376 vm-arrived-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
377 vm-arrived-messages-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
378 vm-auto-center-summary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
379 vm-auto-folder-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
380 vm-auto-folder-case-fold-search
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
381 vm-auto-get-new-mail
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
382 vm-auto-next-message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
383 vm-berkeley-mail-compatibility
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
384 vm-check-folder-types
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
385 vm-convert-folder-types
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
386 vm-circular-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
387 vm-confirm-new-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
388 vm-confirm-quit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
389 vm-crash-box
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
390 vm-default-folder-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
391 vm-delete-after-archiving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
392 vm-delete-after-bursting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
393 vm-delete-after-saving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
394 vm-delete-empty-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
395 vm-digest-burst-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
396 vm-digest-center-preamble
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
397 vm-digest-preamble-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
398 vm-digest-send-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
399 vm-display-buffer-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
400 vm-edit-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
401 vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
402 vm-folder-read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
403 vm-follow-summary-cursor
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
404 vm-forward-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
405 vm-forwarded-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
406 vm-forwarding-digest-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
407 vm-forwarding-subject-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
408 vm-frame-parameter-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
409 vm-frame-per-composition
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
410 vm-frame-per-folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
411 vm-highlighted-header-face
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
412 vm-highlighted-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
413 vm-honor-page-delimiters
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
414 vm-in-reply-to-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
415 vm-included-text-attribution-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
416 vm-included-text-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
417 vm-included-text-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
418 vm-included-text-prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
419 vm-inhibit-startup-message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
420 vm-invisible-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
421 vm-jump-to-new-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
422 vm-jump-to-unread-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
423 vm-keep-sent-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
424 vm-keep-crash-boxes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
425 vm-mail-header-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
426 vm-mail-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
427 vm-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
428 vm-mosaic-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
429 vm-move-after-deleting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
430 vm-move-after-undeleting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
431 vm-move-messages-physically
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
432 vm-mutable-windows
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
433 vm-mutable-frames
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
434 vm-netscape-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
435 vm-options-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
436 vm-pop-md5-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
437 vm-preview-lines
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
438 vm-preview-read-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
439 vm-primary-inbox
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
440 vm-quit-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
441 vm-recognize-pop-maildrops
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
442 vm-reply-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
443 vm-reply-ignored-reply-tos
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
444 vm-reply-ignored-addresses
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
445 vm-reply-subject-prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
446 vm-resend-bounced-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
447 vm-resend-bounced-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
448 vm-resend-bounced-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
449 vm-resend-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
450 vm-resend-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
451 vm-resend-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
452 vm-retrieved-spooled-mail-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
453 vm-rfc1153-digest-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
454 vm-rfc1153-digest-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
455 vm-rfc934-digest-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
456 vm-rfc934-digest-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
457 vm-search-using-regexps
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
458 vm-select-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
459 vm-select-new-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
460 vm-select-unread-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
461 vm-send-digest-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
462 vm-skip-deleted-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
463 vm-skip-read-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
464 vm-spool-files
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
465 vm-startup-with-summary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
466 vm-strip-reply-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
467 vm-summary-arrow
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
468 vm-summary-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
469 vm-summary-highlight-face
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
470 vm-summary-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
471 vm-summary-redo-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
472 vm-summary-show-threads
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
473 vm-summary-subject-no-newlines
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
474 vm-summary-thread-indent-level
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
475 vm-trust-From_-with-Content-Length
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
476 vm-undisplay-buffer-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
477 vm-unforwarded-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
478 vm-url-browser
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
479 vm-url-search-limit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
480 vm-use-menus
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
481 vm-virtual-folder-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
482 vm-virtual-mirror
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
483 vm-visible-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
484 vm-visit-folder-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
485 vm-visit-when-saving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
486 vm-warp-mouse-to-new-frame
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
487 vm-window-configuration-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
488 "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
489 (interactive "P")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
490 (vm (current-buffer) read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
491 (vm-display nil nil '(vm-mode) '(vm-mode)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
492
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
493 (defun vm-visit-folder (folder &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
494 "Visit a mail file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
495 VM will parse and present its messages to you in the usual way.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
496
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
497 First arg FOLDER specifies the mail file to visit. When this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
498 command is called interactively the file name is read from the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
499 minibuffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
500
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
501 Prefix arg or optional second arg READ-ONLY non-nil indicates
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
502 that the folder should be considered read only. No attribute
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
503 changes, messages additions or deletions will be allowed in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
504 visited folder."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
505 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
506 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
507 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
508 (vm-select-folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
509 (let ((default-directory (if vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
510 (expand-file-name vm-folder-directory)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
511 default-directory))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
512 (default (or vm-last-visit-folder vm-last-save-folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
513 (this-command this-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
514 (last-command last-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
515 (list (vm-read-file-name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
516 (format "Visit%s folder:%s "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
517 (if current-prefix-arg " read only" "")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
518 (if default
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
519 (format " (default %s)" default)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
520 ""))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
521 default-directory default nil nil 'vm-folder-history)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
522 current-prefix-arg))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
523 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
524 (vm-select-folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
525 (vm-check-for-killed-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
526 (setq vm-last-visit-folder folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
527 (let ((default-directory (or vm-folder-directory default-directory)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
528 (setq folder (expand-file-name folder)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
529 (vm folder read-only))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
530
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
531 (defun vm-visit-folder-other-frame (folder &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
532 "Like vm-visit-folder, but run in a newly created frame."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
533 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
534 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
535 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
536 (vm-select-folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
537 (let ((default-directory (if vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
538 (expand-file-name vm-folder-directory)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
539 default-directory))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
540 (default (or vm-last-visit-folder vm-last-save-folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
541 (this-command this-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
542 (last-command last-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
543 (list (vm-read-file-name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
544 (format "Visit%s folder in other frame:%s "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
545 (if current-prefix-arg " read only" "")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
546 (if default
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
547 (format " (default %s)" default)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
548 ""))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
549 default-directory default nil nil 'vm-folder-history)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
550 current-prefix-arg))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
551 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
552 (vm-goto-new-frame 'folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
553 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
554 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
555 (vm-visit-folder folder read-only))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
556 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
557 (vm-set-hooks-for-frame-deletion)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
558
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
559 (defun vm-visit-folder-other-window (folder &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
560 "Like vm-visit-folder, but run in a different window."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
561 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
562 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
563 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
564 (vm-select-folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
565 (let ((default-directory (if vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
566 (expand-file-name vm-folder-directory)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
567 default-directory))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
568 (default (or vm-last-visit-folder vm-last-save-folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
569 (this-command this-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
570 (last-command last-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
571 (list (vm-read-file-name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
572 (format "Visit%s folder in other window:%s "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
573 (if current-prefix-arg " read only" "")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
574 (if default
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
575 (format " (default %s)" default)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
576 ""))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
577 default-directory default nil nil 'vm-folder-history)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
578 current-prefix-arg))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
579 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
580 (if (one-window-p t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
581 (split-window))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
582 (other-window 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
583 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
584 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
585 (vm-visit-folder folder read-only)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
586
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
587 (put 'vm-virtual-mode 'mode-class 'special)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
588
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
589 (defun vm-virtual-mode (&rest ignored)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
590 "Mode for reading multiple mail folders as one folder.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
591
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
592 The commands available are the same commands that are found in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
593 vm-mode, except that a few of them are not applicable to virtual
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
594 folders.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
595
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
596 vm-virtual-mode is not a normal major mode. If you run it, it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
597 will not do anything. The entry point to vm-virtual-mode is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
598 vm-visit-virtual-folder.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
599
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
600 (defun vm-visit-virtual-folder (folder-name &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
601 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
602 (let ((last-command last-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
603 (this-command this-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
604 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
605 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
606 (vm-read-string "Visit virtual folder: " vm-virtual-folder-alist)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
607 current-prefix-arg)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
608 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
609 (if (not (assoc folder-name vm-virtual-folder-alist))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
610 (error "No such virtual folder, %s" folder-name))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
611 (let ((buffer-name (concat "(" folder-name ")"))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
612 first-time blurb)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
613 (set-buffer (get-buffer-create buffer-name))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
614 (setq first-time (not (eq major-mode 'vm-virtual-mode)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
615 (if first-time
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
616 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
617 (if (fboundp 'buffer-disable-undo)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
618 (buffer-disable-undo (current-buffer))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
619 ;; obfuscation to make the v19 compiler not whine
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
620 ;; about obsolete functions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
621 (let ((x 'buffer-flush-undo))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
622 (funcall x (current-buffer))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
623 (abbrev-mode 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
624 (auto-fill-mode 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
625 (setq mode-name "VM Virtual"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
626 mode-line-format vm-mode-line-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
627 buffer-read-only t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
628 vm-folder-read-only read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
629 vm-label-obarray (make-vector 29 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
630 vm-virtual-folder-definition
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
631 (assoc folder-name vm-virtual-folder-alist))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
632 (vm-build-virtual-message-list nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
633 (use-local-map vm-mode-map)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
634 (and (vm-menu-support-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
635 (vm-menu-install-menus))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
636 ;; save this for last in case the user interrupts.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
637 ;; an interrupt anywhere before this point will cause
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
638 ;; everything to be redone next revisit.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
639 (setq major-mode 'vm-virtual-mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
640 (run-hooks 'vm-virtual-mode-hook)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
641 ;; must come after the setting of major-mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
642 (setq mode-popup-menu (and vm-use-menus
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
643 (vm-menu-support-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
644 (vm-menu-mode-menu)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
645 (setq blurb (vm-emit-totals-blurb))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
646 (if vm-summary-show-threads
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
647 (vm-sort-messages "thread"))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
648 (if (vm-thoughtfully-select-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
649 (vm-preview-current-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
650 (vm-update-summary-and-mode-line))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
651 (message blurb)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
652 ;; make a new frame if the user wants one. reuse an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
653 ;; existing frame that is showing this folder.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
654 (if (and vm-frame-per-folder (vm-multiple-frames-possible-p))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
655 (let ((w (or (vm-get-buffer-window (current-buffer))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
656 ;; summary == folder for the purpose
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
657 ;; of frame reuse.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
658 (and vm-summary-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
659 (vm-get-buffer-window (current-buffer))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
660 (if (null w)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
661 (vm-goto-new-frame 'folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
662 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
663 (select-window w)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
664 (and vm-warp-mouse-to-new-frame
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
665 (vm-warp-mouse-to-frame-maybe (vm-window-frame w)))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
666 (vm-set-hooks-for-frame-deletion)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
667 (vm-display (current-buffer) t nil nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
668 (and (vm-toolbar-support-possible-p) vm-use-toolbar
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
669 (vm-toolbar-install-toolbar))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
670 (if first-time
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
671 (if (vm-should-generate-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
672 (progn (vm-summarize t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
673 (message blurb))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
674 (vm-display nil nil '(vm-visit-virtual-folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
675 vm-visit-virtual-folder-other-frame
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
676 vm-visit-virtual-folder-other-window
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
677 vm-create-virtual-folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
678 vm-apply-virtual-folder)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
679 (list this-command 'startup))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
680 ;; check interactive-p so as not to bog the user down if they
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
681 ;; run this function from within another function.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
682 (and (interactive-p) (not vm-inhibit-startup-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
683 (not vm-startup-message-displayed)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
684 (vm-display-startup-message)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
685 (message blurb))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
686
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
687 (defun vm-visit-virtual-folder-other-frame (folder-name &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
688 "Like vm-visit-virtual-folder, but run in a newly created frame."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
689 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
690 (let ((last-command last-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
691 (this-command this-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
692 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
693 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
694 (vm-read-string "Visit virtual folder in other frame: "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
695 vm-virtual-folder-alist)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
696 current-prefix-arg)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
697 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
698 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
699 (vm-goto-new-frame 'folder))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
700 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
701 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
702 (vm-visit-virtual-folder folder-name read-only))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
703 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
704 (vm-set-hooks-for-frame-deletion)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
705
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
706 (defun vm-visit-virtual-folder-other-window (folder-name &optional read-only)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
707 "Like vm-visit-virtual-folder, but run in a different window."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
708 (interactive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
709 (let ((last-command last-command)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
710 (this-command this-command))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
711 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
712 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
713 (vm-read-string "Visit virtual folder in other window: "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
714 vm-virtual-folder-alist)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
715 current-prefix-arg)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
716 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
717 (if (one-window-p t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
718 (split-window))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
719 (other-window 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
720 (let ((vm-frame-per-folder nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
721 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
722 (vm-visit-virtual-folder folder-name read-only)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
723
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
724 (defun vm-mail ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
725 "Send a mail message from within VM, or from without."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
726 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
727 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
728 (vm-select-folder-buffer)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
729 (vm-check-for-killed-summary)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
730 (vm-mail-internal)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
731 (run-hooks 'vm-mail-hook)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
732 (run-hooks 'vm-mail-mode-hook))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
733
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
734 (defun vm-mail-other-frame ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
735 "Like vm-mail, but run in a newly created frame."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
736 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
737 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
738 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
739 (vm-goto-new-frame 'composition))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
740 (let ((vm-frame-per-composition nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
741 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
742 (vm-mail))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
743 (if (vm-multiple-frames-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
744 (vm-set-hooks-for-frame-deletion)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
745
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
746 (defun vm-mail-other-window ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
747 "Like vm-mail, but run in a different window."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
748 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
749 (vm-session-initialization)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
750 (if (one-window-p t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
751 (split-window))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
752 (other-window 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
753 (let ((vm-frame-per-composition nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
754 (vm-search-other-frames nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
755 (vm-mail)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
756
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
757 (defun vm-submit-bug-report ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
758 "Submit a bug report, with pertinent information to the VM bug list."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
759 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
760 (require 'reporter)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
761 ;; make sure the user doesn't try to use vm-mail here.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
762 (let ((reporter-mailer '(mail)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
763 (delete-other-windows)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
764 (reporter-submit-bug-report
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
765 vm-maintainer-address
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
766 (concat "VM " vm-version)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
767 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
768 'vm-arrived-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
769 'vm-arrived-messages-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
770 'vm-auto-center-summary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
771 ;; don't send this by default, might be personal stuff in here.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
772 ;; 'vm-auto-folder-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
773 'vm-auto-folder-case-fold-search
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
774 'vm-auto-get-new-mail
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
775 'vm-auto-next-message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
776 'vm-berkeley-mail-compatibility
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
777 'vm-check-folder-types
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
778 'vm-circular-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
779 'vm-confirm-new-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
780 'vm-confirm-quit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
781 'vm-convert-folder-types
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
782 'vm-crash-box
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
783 'vm-default-folder-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
784 'vm-delete-after-archiving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
785 'vm-delete-after-bursting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
786 'vm-delete-after-saving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
787 'vm-delete-empty-folders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
788 'vm-digest-burst-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
789 'vm-digest-identifier-header-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
790 'vm-digest-center-preamble
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
791 'vm-digest-preamble-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
792 'vm-digest-send-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
793 'vm-display-buffer-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
794 'vm-edit-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
795 'vm-edit-message-mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
796 'vm-flush-interval
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
797 'vm-folder-directory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
798 'vm-folder-read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
799 'vm-follow-summary-cursor
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
800 'vm-forward-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
801 'vm-forwarded-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
802 'vm-forwarding-digest-type
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
803 'vm-forwarding-subject-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
804 'vm-frame-parameter-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
805 'vm-frame-per-composition
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
806 'vm-frame-per-folder
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
807 'vm-highlight-url-face
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
808 'vm-highlighted-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
809 'vm-honor-page-delimiters
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
810 'vm-in-reply-to-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
811 'vm-included-text-attribution-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
812 'vm-included-text-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
813 'vm-included-text-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
814 'vm-included-text-prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
815 'vm-inhibit-startup-message
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
816 'vm-init-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
817 'vm-invisible-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
818 'vm-jump-to-new-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
819 'vm-jump-to-unread-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
820 'vm-keep-crash-boxes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
821 'vm-keep-sent-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
822 'vm-mail-header-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
823 'vm-mail-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
824 'vm-mail-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
825 'vm-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
826 'vm-mode-hooks
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
827 'vm-mosaic-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
828 'vm-move-after-deleting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
829 'vm-move-after-undeleting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
830 'vm-move-messages-physically
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
831 'vm-movemail-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
832 'vm-mutable-frames
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
833 'vm-mutable-windows
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
834 'vm-netscape-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
835 'vm-options-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
836 'vm-pop-md5-program
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
837 'vm-preview-lines
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
838 'vm-preview-read-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
839 'vm-primary-inbox
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
840 'vm-quit-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
841 'vm-recognize-pop-maildrops
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
842 'vm-reply-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
843 'vm-reply-ignored-addresses
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
844 'vm-reply-ignored-reply-tos
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
845 'vm-reply-subject-prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
846 'vm-resend-bounced-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
847 'vm-resend-bounced-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
848 'vm-resend-bounced-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
849 'vm-resend-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
850 'vm-resend-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
851 'vm-resend-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
852 'vm-retrieved-spooled-mail-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
853 'vm-rfc1153-digest-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
854 'vm-rfc1153-digest-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
855 'vm-rfc934-digest-discard-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
856 'vm-rfc934-digest-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
857 'vm-search-using-regexps
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
858 'vm-select-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
859 'vm-select-new-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
860 'vm-select-unread-message-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
861 'vm-send-digest-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
862 'vm-skip-deleted-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
863 'vm-skip-read-messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
864 ;; don't send vm-spool-files by default, might contain passwords
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
865 ;; 'vm-spool-files
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
866 'vm-startup-with-summary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
867 'vm-strip-reply-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
868 'vm-summary-format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
869 'vm-summary-highlight-face
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
870 'vm-summary-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
871 'vm-summary-mode-hooks
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
872 'vm-summary-redo-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
873 'vm-summary-show-threads
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
874 'vm-summary-subject-no-newlines
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
875 'vm-summary-thread-indent-level
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
876 'vm-summary-uninteresting-senders
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
877 'vm-summary-uninteresting-senders-arrow
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
878 'vm-tale-is-an-idiot
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
879 'vm-trust-From_-with-Content-Length
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
880 'vm-undisplay-buffer-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
881 'vm-unforwarded-header-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
882 'vm-url-browser
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
883 'vm-url-search-limit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
884 'vm-use-menus
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
885 'vm-virtual-folder-alist
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
886 'vm-virtual-mirror
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
887 'vm-visible-headers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
888 'vm-visit-folder-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
889 'vm-visit-when-saving
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
890 'vm-warp-mouse-to-new-frame
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
891 'vm-window-configuration-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
892 ;; see what the user had loaded
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
893 'features
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
894 )
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
895 nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
896 nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
897 "Please change the Subject header to a concise bug description.\nRemember to cover the basics, that is, what you expected to\nhappen and what in fact did happen. Please remove these instructions from your message.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
898 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
899 (goto-char (point-min))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
900 (mail-position-on-field "Subject")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
901 (beginning-of-line)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
902 (delete-region (point) (progn (forward-line) (point)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
903 (insert "Subject: VM " vm-version " induces a brain tumor in the user.\n It is the tumor that creates the hallucinations.\n"))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
904
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
905 (defun vm-load-init-file (&optional interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
906 (interactive "p")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
907 (if (or (not vm-init-file-loaded) interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
908 (load vm-init-file (not interactive) (not interactive) t))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
909 (setq vm-init-file-loaded t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
910 (vm-display nil nil '(vm-load-init-file) '(vm-load-init-file)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
911
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
912 (defun vm-session-initialization ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
913 ;; If this is the first time VM has been run in this Emacs session,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
914 ;; do some necessary preparations.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
915 (if (or (not (boundp 'vm-session-beginning))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
916 vm-session-beginning)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
917 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
918 (random t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
919 (vm-load-init-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
920 (if (not vm-window-configuration-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
921 (setq vm-window-configurations vm-default-window-configuration)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
922 (or (vm-load-window-configurations vm-window-configuration-file)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
923 (setq vm-window-configurations vm-default-window-configuration)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
924 (setq vm-buffers-needing-display-update (make-vector 29 0))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
925 (and (vm-mouse-support-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
926 (vm-mouse-install-mouse))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
927 (and (vm-menu-support-possible-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
928 vm-use-menus
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
929 (vm-menu-fsfemacs-menus-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
930 (vm-menu-initialize-vm-mode-menu-map))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
931 (setq vm-session-beginning nil))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
932
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
933 (autoload 'reporter-submit-bug-report "reporter")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
934 (autoload 'timezone-make-date-sortable "timezone")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
935 (autoload 'rfc822-addresses "rfc822")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
936 (autoload 'mail-strip-quoted-names "mail-utils")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
937 (autoload 'mail-fetch-field "mail-utils")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
938 (autoload 'mail-position-on-field "mail-utils")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
939 (autoload 'mail-send "sendmail")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
940 (autoload 'mail-mode "sendmail")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
941 (autoload 'mail-extract-address-components "mail-extr")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
942 (autoload 'set-tapestry "tapestry")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
943 (autoload 'tapestry "tapestry")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
944 (autoload 'tapestry-replace-tapestry-element "tapestry")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
945 (autoload 'tapestry-nullify-tapestry-elements "tapestry")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
946 (autoload 'tapestry-remove-frame-parameters "tapestry")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
947 (autoload 'vm-easy-menu-define "vm-easymenu" nil 'macro)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
948 (autoload 'vm-easy-menu-do-define "vm-easymenu")