Mercurial > emacs
comparison lisp/mh-e/mh-customize.el @ 49459:06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
release version 7.2.
* lisp/mail/mh-alias.el, lisp/mail/mh-comp.el,
lisp/mail/mh-customize.el, lisp/mail/mh-e.el, lisp/mail/mh-funcs.el,
lisp/mail/mh-identity.el, lisp/mail/mh-index.el,
lisp/mail/mh-loaddefs.el, lisp/mail/mh-mime.el, lisp/mail/mh-pick.el,
lisp/mail/mh-seq.el, lisp/mail/mh-speed.el, lisp/mail/mh-utils.el,
lisp/mail/mh-xemacs-compat.el: Moved to mh-e. Note that reply2.pbm and
reply2.xpm, which were created by the MH-E package, were left in mail
since they can probably be used by other mail packages.
* makefile.w32-in (WINS): Added mh-e.
* makefile.nt (WINS): Added mh-e.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Sun, 26 Jan 2003 02:38:37 +0000 |
parents | |
children | b35587af8747 |
comparison
equal
deleted
inserted
replaced
49458:5ddabc4c81b0 | 49459:06b77df47802 |
---|---|
1 ;;; mh-customize.el --- MH-E customization | |
2 | |
3 ;; Copyright (C) 2002 Free Software Foundation, Inc. | |
4 | |
5 ;; Author: Bill Wohler <wohler@newt.com> | |
6 ;; Maintainer: Bill Wohler <wohler@newt.com> | |
7 ;; Keywords: mail | |
8 ;; See: mh-e.el | |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;; All of the defgroups, defcustoms, and deffaces in MH-E are found here. This | |
30 ;; makes it possible to customize modules that aren't loaded yet. It also | |
31 ;; makes it easier to organize the customization groups. | |
32 | |
33 ;; This file contains the following sections: | |
34 ;; | |
35 ;; 1. MH-E Customization Groups | |
36 ;; | |
37 ;; These are the customization group definitions. These are organized in a | |
38 ;; logical order. High-level, windows and toolbar, folder, message, | |
39 ;; composing and hooks. | |
40 ;; | |
41 ;; 2. MH-E Customization | |
42 ;; | |
43 ;; Here are the actual customization variables. There is a sub-section for | |
44 ;; each group in the MH-E Customization Groups section. Within each | |
45 ;; section, variables are sorted alphabetically. The manual section | |
46 ;; dictates which group a variable should be placed. New variables should | |
47 ;; be placed in the section where they would most likely be defined. | |
48 ;; | |
49 ;; All hooks should be placed in the 'mh-hook group; in addition, add the | |
50 ;; group in which the hook is defined in the manual (or, if it is new, | |
51 ;; where it would be defined). These two actions insures that the hooks | |
52 ;; appear last in each group. | |
53 ;; | |
54 ;; 3. Faces | |
55 | |
56 ;;; Change Log: | |
57 | |
58 ;; $Id: mh-customize.el,v 1.1 2003/01/08 23:21:16 wohler Exp $ | |
59 | |
60 ;;; Code: | |
61 | |
62 ;;;###mh-autoload | |
63 (defun mh-customize () | |
64 "Customize MH-E variables." | |
65 (interactive) | |
66 (customize-group 'mh)) | |
67 | |
68 ;;; MH-E Customization Groups | |
69 | |
70 (defgroup mh nil | |
71 "GNU Emacs interface to the MH mail system." | |
72 :link '(custom-manual "(mh-e)Top") | |
73 :group 'mail) | |
74 | |
75 (defgroup mh-toolbar nil | |
76 "Toolbar configuration." | |
77 :prefix "mh-" | |
78 :group 'mh) | |
79 | |
80 (defgroup mh-speed nil | |
81 "Speedbar and folder configuration." | |
82 :prefix "mh-" | |
83 :link '(custom-manual "(mh-e)Customizing Moving Mail") | |
84 :group 'mh) | |
85 | |
86 (defgroup mh-folder nil | |
87 "Options for controlling scan listing." | |
88 :prefix "mh-" | |
89 :link '(custom-manual "(mh-e)Customizing Moving Mail") | |
90 :group 'mh) | |
91 | |
92 (defgroup mh-show nil | |
93 "Message display." | |
94 :prefix "mh-" | |
95 :link '(custom-manual "(mh-e)Customizing Reading") | |
96 :group 'mh) | |
97 | |
98 (defgroup mh-letter nil | |
99 "Composing messages." | |
100 :prefix "mh-" | |
101 :link '(custom-manual "(mh-e)Customizing Sending") | |
102 :group 'mh) | |
103 | |
104 (defgroup mh-alias nil | |
105 "Alias handling." | |
106 :link '(custom-manual "(mh-e)Customizing mh-e") | |
107 :prefix "mh-alias-" | |
108 :group 'mh) | |
109 | |
110 (defgroup mh-index nil | |
111 "Indexed searching." | |
112 :link '(custom-manual "(mh-e)Customizing mh-e") | |
113 :prefix "mh-" | |
114 :group 'mh) | |
115 | |
116 (defgroup mh-identity nil | |
117 "Multiple personalities." | |
118 :link '(custom-manual "(mh-e)Customizing mh-e") | |
119 :prefix "mh-" | |
120 :group 'mh) | |
121 | |
122 (defgroup mh-faces nil | |
123 "Faces used in MH-E." | |
124 :link '(custom-manual "(mh-e)Customizing mh-e") | |
125 :prefix "mh-" | |
126 :group 'faces | |
127 :group 'mh) | |
128 | |
129 (defgroup mh-hooks nil | |
130 "MH-E hooks." | |
131 :link '(custom-manual "(mh-e)Customizing mh-e") | |
132 :prefix "mh-" | |
133 :group 'mh) | |
134 | |
135 ;;; Faces | |
136 | |
137 (defgroup mh-speed-faces nil | |
138 "Faces used in speedbar." | |
139 :link '(custom-manual "(mh-e)Customizing mh-e") | |
140 :prefix "mh-" | |
141 :group 'mh-faces | |
142 :group 'mh-speed) | |
143 | |
144 (defgroup mh-folder-faces nil | |
145 "Faces used in scan listing." | |
146 :link '(custom-manual "(mh-e)Customizing mh-e") | |
147 :prefix "mh-" | |
148 :group 'mh-faces | |
149 :group 'mh-folder) | |
150 | |
151 (defgroup mh-show-faces nil | |
152 "Faces used in message display." | |
153 :link '(custom-manual "(mh-e)Customizing mh-e") | |
154 :prefix "mh-" | |
155 :group 'mh-faces | |
156 :group 'mh-show) | |
157 | |
158 (defgroup mh-index-faces nil | |
159 "Faces used in indexed searches." | |
160 :link '(custom-manual "(mh-e)Customizing mh-e") | |
161 :prefix "mh-" | |
162 :group 'mh-faces | |
163 :group 'mh-index) | |
164 | |
165 | |
166 | |
167 ;;; MH-E Customization (:group mh) | |
168 | |
169 ;;; Toolbar configuration (:group 'mh-toolbar) | |
170 | |
171 (defconst mh-tool-bar-item-inc "Incorporate new mail in Inbox") | |
172 (defconst mh-tool-bar-item-save-mime "Save MIME parts") | |
173 (defconst mh-tool-bar-item-prev-msg "Previous message") | |
174 (defconst mh-tool-bar-item-page-msg "Page this message") | |
175 (defconst mh-tool-bar-item-next-msg "Next message") | |
176 (defconst mh-tool-bar-item-delete "Mark for deletion") | |
177 (defconst mh-tool-bar-item-refile "Refile this message") | |
178 (defconst mh-tool-bar-item-undo "Undo this mark") | |
179 (defconst mh-tool-bar-item-perform "Perform moves and deletes") | |
180 (defconst mh-tool-bar-item-toggle-show "Toggle showing message") | |
181 (defconst mh-tool-bar-item-reply-from "Reply to \"from\"") | |
182 (defconst mh-tool-bar-item-reply-to "Reply to \"to\"") | |
183 (defconst mh-tool-bar-item-reply-all "Reply to \"all\"") | |
184 (defconst mh-tool-bar-item-reply "Reply to this message") | |
185 (defconst mh-tool-bar-item-alias "Grab From alias") | |
186 (defconst mh-tool-bar-item-compose "Compose new message") | |
187 (defconst mh-tool-bar-item-rescan "Rescan this folder") | |
188 (defconst mh-tool-bar-item-repack "Repack this folder") | |
189 (defconst mh-tool-bar-item-search "Search") | |
190 (defconst mh-tool-bar-item-visit "Visit other folder") | |
191 (defconst mh-tool-bar-item-prefs "MH-E preferences") | |
192 (defconst mh-tool-bar-item-help "Help") | |
193 (defconst mh-tool-bar-item-widen "Widen from this sequence") | |
194 | |
195 (defconst mh-tool-bar-item-send "Send this letter") | |
196 (defconst mh-tool-bar-item-attach "Insert attachment") | |
197 (defconst mh-tool-bar-item-spell "Check spelling") | |
198 (defconst mh-tool-bar-item-save "Save current buffer to its file") | |
199 (defconst mh-tool-bar-item-undo-op "Undo last operation") | |
200 (defconst mh-tool-bar-item-kill | |
201 "Cut (kill) text in region between mark and current position") | |
202 (defconst mh-tool-bar-item-copy | |
203 "Copy text in region between mark and current position") | |
204 (defconst mh-tool-bar-item-paste | |
205 "Paste (yank) text cut or copied earlier") | |
206 (defconst mh-tool-bar-item-kill-draft "Kill this draft") | |
207 (defconst mh-tool-bar-item-comp-prefs "MH-E composition preferences") | |
208 | |
209 (defcustom mh-tool-bar-reply-3-buttons-flag nil | |
210 "*Non-nil means use three buttons for reply commands in tool-bar. | |
211 If you have room on your tool-bar because you are using a large font, you | |
212 may set this variable to expand the single reply button into three buttons | |
213 that won't lead to minibuffer prompt about who to reply to." | |
214 :type 'boolean | |
215 :group 'mh-toolbar) | |
216 | |
217 (defcustom mh-tool-bar-search-function 'mh-search-folder | |
218 "*Function called by the tool-bar search button. | |
219 See `mh-search-folder' and `mh-index-search' for details." | |
220 :type '(choice (const mh-search-folder) | |
221 (const mh-index-search) | |
222 (function :tag "Other function")) | |
223 :group 'mh-toolbar) | |
224 | |
225 (eval-when-compile (defvar tool-bar-map)) | |
226 (defvar mh-show-tool-bar-map nil) | |
227 (defun mh-tool-bar-show-set () | |
228 "Construct toolbar for `mh-show-mode'." | |
229 (when (fboundp 'tool-bar-add-item) | |
230 (setq | |
231 mh-show-tool-bar-map | |
232 (let ((tool-bar-map (make-sparse-keymap))) | |
233 (if (member mh-tool-bar-item-inc mh-tool-bar-folder-buttons) | |
234 (tool-bar-add-item "mail" 'mh-inc-folder 'mh-showtoolbar-inc-folder | |
235 :help mh-tool-bar-item-inc)) | |
236 (if (member mh-tool-bar-item-save-mime mh-tool-bar-folder-buttons) | |
237 (tool-bar-add-item "attach" 'mh-mime-save-parts | |
238 'mh-showtoolbar-mime-save-parts | |
239 :help mh-tool-bar-item-save-mime)) | |
240 (if (member mh-tool-bar-item-prev-msg mh-tool-bar-folder-buttons) | |
241 (tool-bar-add-item "left_arrow" 'mh-show-previous-undeleted-msg | |
242 'mh-showtoolbar-prev | |
243 :help mh-tool-bar-item-prev-msg)) | |
244 (if (member mh-tool-bar-item-page-msg mh-tool-bar-folder-buttons) | |
245 (tool-bar-add-item "page-down" 'mh-show-page-msg 'mh-showtoolbar-page | |
246 :help mh-tool-bar-item-page-msg)) | |
247 (if (member mh-tool-bar-item-next-msg mh-tool-bar-folder-buttons) | |
248 (tool-bar-add-item "right_arrow" 'mh-show-next-undeleted-msg | |
249 'mh-showtoolbar-next | |
250 :help mh-tool-bar-item-next-msg)) | |
251 (if (member mh-tool-bar-item-delete mh-tool-bar-folder-buttons) | |
252 (tool-bar-add-item "close" 'mh-show-delete-msg | |
253 'mh-showtoolbar-delete | |
254 :help mh-tool-bar-item-delete)) | |
255 (if (member mh-tool-bar-item-refile mh-tool-bar-folder-buttons) | |
256 (tool-bar-add-item "refile" 'mh-show-refile-msg | |
257 'mh-showtoolbar-refile | |
258 :help mh-tool-bar-item-refile)) | |
259 (if (member mh-tool-bar-item-undo mh-tool-bar-folder-buttons) | |
260 (tool-bar-add-item "undo" 'mh-show-undo 'mh-showtoolbar-undo | |
261 :help mh-tool-bar-item-undo)) | |
262 (if (member mh-tool-bar-item-perform mh-tool-bar-folder-buttons) | |
263 (tool-bar-add-item "execute" 'mh-show-execute-commands | |
264 'mh-showtoolbar-exec | |
265 :help mh-tool-bar-item-perform)) | |
266 (if (member mh-tool-bar-item-toggle-show mh-tool-bar-folder-buttons) | |
267 (tool-bar-add-item "show" 'mh-show-toggle-showing | |
268 'mh-showtoolbar-toggle-show | |
269 :help mh-tool-bar-item-toggle-show)) | |
270 (if (member mh-tool-bar-item-reply-from mh-tool-bar-folder-buttons) | |
271 (tool-bar-add-item "reply-from" | |
272 (lambda (&optional arg) | |
273 (interactive "P") | |
274 (set-buffer mh-show-folder-buffer) | |
275 (mh-reply (mh-get-msg-num nil) "from" arg)) | |
276 'mh-showtoolbar-reply-from | |
277 :help mh-tool-bar-item-reply-from)) | |
278 (if (member mh-tool-bar-item-reply-to mh-tool-bar-folder-buttons) | |
279 (tool-bar-add-item "reply-to" | |
280 (lambda (&optional arg) | |
281 (interactive "P") | |
282 (set-buffer mh-show-folder-buffer) | |
283 (mh-reply (mh-get-msg-num nil) "to" arg)) | |
284 'mh-showtoolbar-reply-to | |
285 :help mh-tool-bar-item-reply-to)) | |
286 (if (member mh-tool-bar-item-reply-all mh-tool-bar-folder-buttons) | |
287 (tool-bar-add-item "reply-all" | |
288 (lambda (&optional arg) | |
289 (interactive "P") | |
290 (set-buffer mh-show-folder-buffer) | |
291 (mh-reply (mh-get-msg-num nil) "all" arg)) | |
292 'mh-showtoolbar-reply-all | |
293 :help mh-tool-bar-item-reply-all)) | |
294 (if (member mh-tool-bar-item-reply mh-tool-bar-folder-buttons) | |
295 (tool-bar-add-item "mail/reply2" 'mh-show-reply | |
296 'mh-showtoolbar-reply | |
297 :help mh-tool-bar-item-reply)) | |
298 (if (member mh-tool-bar-item-alias mh-tool-bar-folder-buttons) | |
299 (tool-bar-add-item "alias" 'mh-alias-grab-from-field | |
300 'mh-showtoolbar-alias | |
301 :help mh-tool-bar-item-alias | |
302 :enable '(mh-alias-from-has-no-alias-p))) | |
303 (if (member mh-tool-bar-item-compose mh-tool-bar-folder-buttons) | |
304 (tool-bar-add-item "mail_compose" 'mh-send 'mh-showtoolbar-compose | |
305 :help mh-tool-bar-item-compose)) | |
306 (if (member mh-tool-bar-item-rescan mh-tool-bar-folder-buttons) | |
307 (tool-bar-add-item "rescan" 'mh-show-rescan-folder | |
308 'mh-showtoolbar-rescan | |
309 :help mh-tool-bar-item-rescan)) | |
310 (if (member mh-tool-bar-item-repack mh-tool-bar-folder-buttons) | |
311 (tool-bar-add-item "repack" 'mh-show-pack-folder | |
312 'mh-showtoolbar-pack | |
313 :help mh-tool-bar-item-repack)) | |
314 (if (member mh-tool-bar-item-search mh-tool-bar-folder-buttons) | |
315 (tool-bar-add-item "search" | |
316 (lambda (&optional arg) | |
317 (interactive "P") | |
318 (call-interactively | |
319 mh-tool-bar-search-function)) | |
320 'mh-showtoolbar-search | |
321 :help mh-tool-bar-item-search)) | |
322 (if (member mh-tool-bar-item-visit mh-tool-bar-folder-buttons) | |
323 (tool-bar-add-item "fld_open" 'mh-visit-folder | |
324 'mh-showtoolbar-visit | |
325 :help mh-tool-bar-item-visit)) | |
326 (if (member mh-tool-bar-item-prefs mh-tool-bar-folder-buttons) | |
327 (tool-bar-add-item "preferences" (lambda () | |
328 (interactive) | |
329 (customize-group "mh")) | |
330 'mh-showtoolbar-customize | |
331 :help mh-tool-bar-item-prefs)) | |
332 (if (member mh-tool-bar-item-help mh-tool-bar-folder-buttons) | |
333 (tool-bar-add-item "help" (lambda () | |
334 (interactive) | |
335 (Info-goto-node "(mh-e)Top")) | |
336 'mh-showtoolbar-help | |
337 :help mh-tool-bar-item-help)) | |
338 tool-bar-map)))) | |
339 | |
340 (defvar mh-letter-tool-bar-map nil) | |
341 ;;;###mh-autoload | |
342 (defun mh-tool-bar-letter-set () | |
343 "Construct toolbar for `mh-letter-mode'." | |
344 (when (fboundp 'tool-bar-add-item) | |
345 (setq | |
346 mh-letter-tool-bar-map | |
347 (let ((tool-bar-map (make-sparse-keymap))) | |
348 (if (member mh-tool-bar-item-send mh-tool-bar-letter-buttons) | |
349 (tool-bar-add-item "mail_send" 'mh-send-letter | |
350 'mh-lettertoolbar-send | |
351 :help mh-tool-bar-item-send)) | |
352 (if (member mh-tool-bar-item-attach mh-tool-bar-letter-buttons) | |
353 (tool-bar-add-item "attach" 'mh-compose-insertion | |
354 'mh-lettertoolbar-compose | |
355 :help mh-tool-bar-item-attach)) | |
356 (if (member mh-tool-bar-item-spell mh-tool-bar-letter-buttons) | |
357 (tool-bar-add-item "spell" 'ispell-message 'mh-lettertoolbar-ispell | |
358 :help mh-tool-bar-item-spell)) | |
359 (if (member mh-tool-bar-item-save mh-tool-bar-letter-buttons) | |
360 (tool-bar-add-item-from-menu 'save-buffer "save")) | |
361 (if (member mh-tool-bar-item-undo-op mh-tool-bar-letter-buttons) | |
362 (tool-bar-add-item-from-menu 'undo "undo")) | |
363 (if (member mh-tool-bar-item-kill mh-tool-bar-letter-buttons) | |
364 (tool-bar-add-item-from-menu 'kill-region "cut")) | |
365 (if (member mh-tool-bar-item-copy mh-tool-bar-letter-buttons) | |
366 (tool-bar-add-item-from-menu 'menu-bar-kill-ring-save "copy")) | |
367 (if (member mh-tool-bar-item-paste mh-tool-bar-letter-buttons) | |
368 (tool-bar-add-item-from-menu 'yank "paste")) | |
369 (if (member mh-tool-bar-item-kill-draft mh-tool-bar-letter-buttons) | |
370 (tool-bar-add-item "close" 'mh-fully-kill-draft | |
371 'mh-lettertoolbar-kill | |
372 :help mh-tool-bar-item-kill-draft)) | |
373 (if (member mh-tool-bar-item-comp-prefs mh-tool-bar-letter-buttons) | |
374 (tool-bar-add-item "preferences" (lambda () | |
375 (interactive) | |
376 (customize-group "mh-compose")) | |
377 'mh-lettertoolbar-customize | |
378 :help mh-tool-bar-item-comp-prefs)) | |
379 (if (member mh-tool-bar-item-help mh-tool-bar-letter-buttons) | |
380 (tool-bar-add-item "help" (lambda () | |
381 (interactive) | |
382 (Info-goto-node "(mh-e)Draft Editing")) | |
383 'mh-lettertoolbar-help | |
384 :help mh-tool-bar-item-help)) | |
385 tool-bar-map)))) | |
386 | |
387 (defvar mh-folder-tool-bar-map nil) | |
388 (defvar mh-folder-seq-tool-bar-map nil | |
389 "Tool-bar to use when narrowed to a sequence in MH-Folder buffers.") | |
390 ;;;###mh-autoload | |
391 (defun mh-tool-bar-folder-set () | |
392 "Construct toolbar for `mh-folder-mode'." | |
393 (when (fboundp 'tool-bar-add-item) | |
394 (setq | |
395 mh-folder-tool-bar-map | |
396 (let ((tool-bar-map (make-sparse-keymap))) | |
397 (if (member mh-tool-bar-item-inc mh-tool-bar-folder-buttons) | |
398 (tool-bar-add-item "mail" 'mh-inc-folder | |
399 'mh-foldertoolbar-inc-folder | |
400 :help mh-tool-bar-item-inc)) | |
401 (if (member mh-tool-bar-item-save-mime mh-tool-bar-folder-buttons) | |
402 (tool-bar-add-item "attach" 'mh-mime-save-parts | |
403 'mh-foldertoolbar-mime-save-parts | |
404 :help mh-tool-bar-item-save-mime)) | |
405 (if (member mh-tool-bar-item-prev-msg mh-tool-bar-folder-buttons) | |
406 (tool-bar-add-item "left_arrow" 'mh-previous-undeleted-msg | |
407 'mh-foldertoolbar-prev | |
408 :help mh-tool-bar-item-prev-msg)) | |
409 (if (member mh-tool-bar-item-page-msg mh-tool-bar-folder-buttons) | |
410 (tool-bar-add-item "page-down" 'mh-page-msg 'mh-foldertoolbar-page | |
411 :help mh-tool-bar-item-page-msg)) | |
412 (if (member mh-tool-bar-item-next-msg mh-tool-bar-folder-buttons) | |
413 (tool-bar-add-item "right_arrow" 'mh-next-undeleted-msg | |
414 'mh-foldertoolbar-next | |
415 :help mh-tool-bar-item-next-msg)) | |
416 (if (member mh-tool-bar-item-delete mh-tool-bar-folder-buttons) | |
417 (tool-bar-add-item "close" 'mh-delete-msg 'mh-foldertoolbar-delete | |
418 :help mh-tool-bar-item-delete)) | |
419 (if (member mh-tool-bar-item-refile mh-tool-bar-folder-buttons) | |
420 (tool-bar-add-item "refile" 'mh-refile-msg 'mh-foldertoolbar-refile | |
421 :help mh-tool-bar-item-refile)) | |
422 (if (member mh-tool-bar-item-undo mh-tool-bar-folder-buttons) | |
423 (tool-bar-add-item "undo" 'mh-undo 'mh-foldertoolbar-undo | |
424 :help mh-tool-bar-item-undo)) | |
425 (if (member mh-tool-bar-item-perform mh-tool-bar-folder-buttons) | |
426 (tool-bar-add-item "execute" 'mh-execute-commands | |
427 'mh-foldertoolbar-exec | |
428 :help mh-tool-bar-item-perform)) | |
429 (if (member mh-tool-bar-item-toggle-show mh-tool-bar-folder-buttons) | |
430 (tool-bar-add-item "show" 'mh-toggle-showing | |
431 'mh-foldertoolbar-toggle-show | |
432 :help mh-tool-bar-item-toggle-show)) | |
433 (if (member mh-tool-bar-item-reply-from mh-tool-bar-folder-buttons) | |
434 (tool-bar-add-item "reply-from" | |
435 (lambda (&optional arg) | |
436 (interactive "P") | |
437 (mh-reply (mh-get-msg-num nil) "from" arg)) | |
438 'mh-foldertoolbar-reply-from | |
439 :help mh-tool-bar-item-reply-from)) | |
440 (if (member mh-tool-bar-item-reply-to mh-tool-bar-folder-buttons) | |
441 (tool-bar-add-item "reply-to" | |
442 (lambda (&optional arg) | |
443 (interactive "P") | |
444 (mh-reply (mh-get-msg-num nil) "to" arg)) | |
445 'mh-foldertoolbar-reply-to | |
446 :help mh-tool-bar-item-reply-to)) | |
447 (if (member mh-tool-bar-item-reply-all mh-tool-bar-folder-buttons) | |
448 (tool-bar-add-item "reply-all" | |
449 (lambda (&optional arg) | |
450 (interactive "P") | |
451 (mh-reply (mh-get-msg-num nil) "all" arg)) | |
452 'mh-foldertoolbar-reply-all | |
453 :help mh-tool-bar-item-reply-all)) | |
454 (if (member mh-tool-bar-item-reply mh-tool-bar-folder-buttons) | |
455 (tool-bar-add-item "mail/reply2" 'mh-reply | |
456 'mh-foldertoolbar-reply | |
457 :help mh-tool-bar-item-reply)) | |
458 (if (member mh-tool-bar-item-alias mh-tool-bar-folder-buttons) | |
459 (tool-bar-add-item "alias" 'mh-alias-grab-from-field | |
460 'mh-foldertoolbar-alias | |
461 :help mh-tool-bar-item-alias | |
462 :enable '(mh-alias-from-has-no-alias-p))) | |
463 (if (member mh-tool-bar-item-compose mh-tool-bar-folder-buttons) | |
464 (tool-bar-add-item "mail_compose" 'mh-send 'mh-foldertoolbar-compose | |
465 :help mh-tool-bar-item-compose)) | |
466 (if (member mh-tool-bar-item-rescan mh-tool-bar-folder-buttons) | |
467 (tool-bar-add-item "rescan" 'mh-rescan-folder | |
468 'mh-foldertoolbar-rescan | |
469 :help mh-tool-bar-item-rescan)) | |
470 (if (member mh-tool-bar-item-repack mh-tool-bar-folder-buttons) | |
471 (tool-bar-add-item "repack" 'mh-pack-folder 'mh-foldertoolbar-pack | |
472 :help mh-tool-bar-item-repack)) | |
473 (if (member mh-tool-bar-item-search mh-tool-bar-folder-buttons) | |
474 (tool-bar-add-item "search" | |
475 (lambda (&optional arg) | |
476 (interactive "P") | |
477 (call-interactively | |
478 mh-tool-bar-search-function)) | |
479 'mh-foldertoolbar-search | |
480 :help mh-tool-bar-item-search)) | |
481 (if (member mh-tool-bar-item-visit mh-tool-bar-folder-buttons) | |
482 (tool-bar-add-item "fld_open" 'mh-visit-folder | |
483 'mh-foldertoolbar-visit | |
484 :help mh-tool-bar-item-visit)) | |
485 (if (member mh-tool-bar-item-prefs mh-tool-bar-folder-buttons) | |
486 (tool-bar-add-item "preferences" (lambda () | |
487 (interactive) | |
488 (customize-group "mh")) | |
489 'mh-foldertoolbar-customize | |
490 :help mh-tool-bar-item-prefs)) | |
491 (if (member mh-tool-bar-item-help mh-tool-bar-folder-buttons) | |
492 (tool-bar-add-item "help" (lambda () | |
493 (interactive) | |
494 (Info-goto-node "(mh-e)Top")) | |
495 'mh-foldertoolbar-help | |
496 :help mh-tool-bar-item-help)) | |
497 tool-bar-map)) | |
498 | |
499 (setq mh-folder-seq-tool-bar-map | |
500 (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map))) | |
501 (if (member mh-tool-bar-item-widen mh-tool-bar-folder-buttons) | |
502 (tool-bar-add-item "widen" 'mh-widen 'mh-foldertoolbar-widen | |
503 :help mh-tool-bar-item-widen)) | |
504 tool-bar-map)))) | |
505 | |
506 (defun mh-tool-bar-folder-buttons-set (symbol value) | |
507 "Update the `mh-tool-bar-folder-buttons' variable, and rebuild the tool-bar. | |
508 Sets the default for SYMBOL (e.g. `mh-tool-bar-folder-buttons') to VALUE (as | |
509 set in customization). This is called after 'customize is used to alter | |
510 `mh-tool-bar-folder-buttons'." | |
511 (set-default symbol value) | |
512 (mh-tool-bar-show-set) | |
513 (mh-tool-bar-folder-set)) | |
514 | |
515 (custom-declare-variable | |
516 'mh-tool-bar-folder-buttons | |
517 '(append | |
518 (list mh-tool-bar-item-inc | |
519 mh-tool-bar-item-save-mime | |
520 mh-tool-bar-item-prev-msg | |
521 mh-tool-bar-item-page-msg | |
522 mh-tool-bar-item-next-msg | |
523 mh-tool-bar-item-delete | |
524 mh-tool-bar-item-refile | |
525 mh-tool-bar-item-undo | |
526 mh-tool-bar-item-perform | |
527 ;;; mh-tool-bar-item-toggle-show | |
528 ) | |
529 (if mh-tool-bar-reply-3-buttons-flag | |
530 (list mh-tool-bar-item-reply-from | |
531 mh-tool-bar-item-reply-to | |
532 mh-tool-bar-item-reply-all) | |
533 (list mh-tool-bar-item-reply)) | |
534 (list mh-tool-bar-item-alias | |
535 mh-tool-bar-item-compose | |
536 mh-tool-bar-item-rescan | |
537 ;;; mh-tool-bar-item-repack | |
538 mh-tool-bar-item-search | |
539 mh-tool-bar-item-visit | |
540 mh-tool-bar-item-prefs | |
541 mh-tool-bar-item-help | |
542 mh-tool-bar-item-widen)) | |
543 "Buttons to include in MH-E folder/show toolbar." | |
544 :group 'mh-toolbar | |
545 :set 'mh-tool-bar-folder-buttons-set | |
546 :type `(set (const ,mh-tool-bar-item-inc) | |
547 (const ,mh-tool-bar-item-save-mime) | |
548 (const ,mh-tool-bar-item-prev-msg) | |
549 (const ,mh-tool-bar-item-page-msg) | |
550 (const ,mh-tool-bar-item-next-msg) | |
551 (const ,mh-tool-bar-item-delete) | |
552 (const ,mh-tool-bar-item-refile) | |
553 (const ,mh-tool-bar-item-undo) | |
554 (const ,mh-tool-bar-item-perform) | |
555 (const ,mh-tool-bar-item-toggle-show) | |
556 (const ,mh-tool-bar-item-reply-from) | |
557 (const ,mh-tool-bar-item-reply-to) | |
558 (const ,mh-tool-bar-item-reply-all) | |
559 (const ,mh-tool-bar-item-reply) | |
560 (const ,mh-tool-bar-item-alias) | |
561 (const ,mh-tool-bar-item-compose) | |
562 (const ,mh-tool-bar-item-rescan) | |
563 (const ,mh-tool-bar-item-repack) | |
564 (const ,mh-tool-bar-item-search) | |
565 (const ,mh-tool-bar-item-visit) | |
566 (const ,mh-tool-bar-item-prefs) | |
567 (const ,mh-tool-bar-item-help) | |
568 (const ,mh-tool-bar-item-widen))) | |
569 | |
570 (defun mh-tool-bar-letter-buttons-set (symbol value) | |
571 "Update the `mh-tool-bar-letter-buttons' variable, and rebuild the tool-bar. | |
572 Sets the default for SYMBOL (e.g. `mh-tool-bar-letter-buttons') to VALUE (as | |
573 set in customization). This is called after 'customize is used to alter | |
574 `mh-tool-bar-letter-buttons'." | |
575 (set-default symbol value) | |
576 (mh-tool-bar-letter-set)) | |
577 | |
578 (custom-declare-variable | |
579 'mh-tool-bar-letter-buttons | |
580 '(list mh-tool-bar-item-send | |
581 mh-tool-bar-item-attach | |
582 mh-tool-bar-item-spell | |
583 mh-tool-bar-item-save | |
584 mh-tool-bar-item-undo-op | |
585 mh-tool-bar-item-kill | |
586 mh-tool-bar-item-copy | |
587 mh-tool-bar-item-paste | |
588 mh-tool-bar-item-kill-draft | |
589 mh-tool-bar-item-comp-prefs | |
590 mh-tool-bar-item-help) | |
591 "Buttons to include in MH-E letter toolbar." | |
592 :group 'mh-toolbar | |
593 :set 'mh-tool-bar-letter-buttons-set | |
594 :type `(set (const ,mh-tool-bar-item-send) | |
595 (const ,mh-tool-bar-item-attach) | |
596 (const ,mh-tool-bar-item-spell) | |
597 (const ,mh-tool-bar-item-save) | |
598 (const ,mh-tool-bar-item-undo-op) | |
599 (const ,mh-tool-bar-item-kill) | |
600 (const ,mh-tool-bar-item-copy) | |
601 (const ,mh-tool-bar-item-paste) | |
602 (const ,mh-tool-bar-item-kill-draft) | |
603 (const ,mh-tool-bar-item-comp-prefs) | |
604 (const ,mh-tool-bar-item-help))) | |
605 | |
606 | |
607 | |
608 ;;; Speedbar and folder configuration (:group 'mh-speed) | |
609 | |
610 (defcustom mh-large-folder 200 | |
611 "The number of messages that indicates a large folder. | |
612 If a folder is deemed to be large, that is the number of messages in it exceed | |
613 this value, then confirmation is needed when it is visited. Even when | |
614 `mh-show-threads-flag' is non-nil, the folder is not automatically threaded, if | |
615 it is large. If set to nil all folders are treated as if they are small." | |
616 :type '(choice (const :tag "No limit") integer) | |
617 :group 'mh-speed) | |
618 | |
619 (defcustom mh-speed-flists-interval 60 | |
620 "Time between calls to flists in seconds. | |
621 If 0, flists is not called repeatedly." | |
622 :type 'integer | |
623 :group 'mh-speed) | |
624 | |
625 (defcustom mh-speed-run-flists-flag t | |
626 "Non-nil means flists is used. | |
627 If non-nil, flists is executed every `mh-speed-flists-interval' seconds to | |
628 update the display of the number of unseen and total messages in each folder. | |
629 If resources are limited, this can be set to nil and the speedbar display can | |
630 be updated manually with the \\[mh-speed-flists] command." | |
631 :type 'boolean | |
632 :group 'mh-speed) | |
633 | |
634 ;;; Options for controlling scan listing (:group 'mh-folder) | |
635 | |
636 (defcustom mh-adaptive-cmd-note-flag t | |
637 "*Non-nil means that the message number width is determined dynamically. | |
638 This is done once when a folder is first opened by running scan on the last | |
639 message of the folder. The message number for the last message is extracted | |
640 and its width calculated. This width is used when calling `mh-set-cmd-note'. | |
641 | |
642 If you prefer fixed-width message numbers, set this variable to nil and call | |
643 `mh-set-cmd-note' with the width specified by the scan format in | |
644 `mh-scan-format-file'. For example, the default width is 4, so you would use | |
645 \"(mh-set-cmd-note 4)\" if `mh-scan-format-file' were nil." | |
646 :type 'boolean | |
647 :group 'mh-folder) | |
648 | |
649 (defcustom mh-auto-folder-collect-flag t | |
650 "*Non-nil means to collect all folder names at startup in the background. | |
651 Otherwise, the internal list of folder names is built as folders are | |
652 referenced." | |
653 :type 'boolean | |
654 :group 'mh-folder) | |
655 | |
656 (defcustom mh-inc-prog "inc" | |
657 "*Program to run to incorporate new mail into a folder. | |
658 Normally \"inc\". This file is searched for relative to | |
659 the `mh-progs' directory unless it is an absolute pathname." | |
660 :type 'string | |
661 :group 'mh-folder) | |
662 | |
663 (defcustom mh-lpr-command-format "lpr -J '%s'" | |
664 "*Format for Unix command that prints a message. | |
665 The string should be a Unix command line, with the string '%s' where | |
666 the job's name (folder and message number) should appear. The formatted | |
667 message text is piped to this command when you type \\<mh-folder-mode-map>`\\[mh-print-msg]'." | |
668 :type 'string | |
669 :group 'mh-folder) | |
670 | |
671 (defcustom mh-mime-save-parts-default-directory t | |
672 "Default directory to use for `mh-mime-save-parts'. | |
673 If nil, prompt and set for next time the command is used during same session. | |
674 If t, prompt always" | |
675 :type '(choice (const :tag "Prompt the first time" nil) | |
676 (const :tag "Prompt always" t) | |
677 directory) | |
678 :group 'mh-folder) | |
679 | |
680 (defcustom mh-recenter-summary-flag nil | |
681 "*Non-nil means to recenter the summary window. | |
682 Recenter the summary window when the show window is toggled off if non-nil." | |
683 :type 'boolean | |
684 :group 'mh-folder) | |
685 | |
686 (defcustom mh-print-background-flag nil | |
687 "*Non-nil means messages should be printed in the background. | |
688 WARNING: do not delete the messages until printing is finished; | |
689 otherwise, your output may be truncated." | |
690 :type 'boolean | |
691 :group 'mh-folder) | |
692 | |
693 (defcustom mh-recursive-folders-flag nil | |
694 "*Non-nil means that commands which operate on folders do so recursively." | |
695 :type 'boolean | |
696 :group 'mh-folder) | |
697 | |
698 (defcustom mh-scan-format-file t | |
699 "Specifies the format file to pass to the scan program. | |
700 If t, the format string will be taken from the either `mh-scan-format-mh' | |
701 or `mh-scan-format-nmh' depending on whether MH or nmh is in use. | |
702 If nil, the default scan output will be used. | |
703 | |
704 If you customize the scan format, you may need to modify a few variables | |
705 containing regexps that MH-E uses to identify specific portions of the output. | |
706 Use `M-x apropos RET mh-scan.*regexp' to obtain a list of these variables. You | |
707 may also have to call `mh-set-cmd-note' with the width of your message | |
708 numbers. See also `mh-adaptive-cmd-note-flag'." | |
709 :type '(choice (const :tag "Use MH-E scan format" t) | |
710 (const :tag "Use default scan format" nil) | |
711 (file :tag "Specify a scan format file")) | |
712 :group 'mh-folder) | |
713 | |
714 (defcustom mh-scan-prog "scan" | |
715 "*Program to run to generate one-line-per-message listing of a folder. | |
716 Normally \"scan\" or a file name linked to scan. This file is searched | |
717 for relative to the `mh-progs' directory unless it is an absolute pathname." | |
718 :type 'string | |
719 :group 'mh-folder) | |
720 (make-variable-buffer-local 'mh-scan-prog) | |
721 | |
722 (defcustom mh-show-threads-flag nil | |
723 "Non-nil means new folders start in threaded mode. | |
724 Threading large number of messages can be time consuming. So if the flag is | |
725 non-nil then threading will be done only if the number of messages being | |
726 threaded is less than `mh-large-folder'." | |
727 :type 'boolean | |
728 :group 'mh-folder) | |
729 | |
730 (defcustom mh-store-default-directory nil | |
731 "*Last directory used by \\[mh-store-msg]; default for next store. | |
732 A directory name string, or nil to use current directory." | |
733 :type '(choice (const :tag "Current" nil) | |
734 directory) | |
735 :group 'mh-folder) | |
736 | |
737 (defcustom mh-update-sequences-after-mh-show-flag t | |
738 "*Non-nil means `mh-update-sequence' is called from `mh-show-mode'. | |
739 If set, `mh-update-sequence' is run every time a message is shown, telling | |
740 MH or nmh that this is your current message. It's useful, for example, to | |
741 display MIME content using \"M-! mhshow RET\"" | |
742 :type 'boolean | |
743 :group 'mh-folder) | |
744 | |
745 ;;; Message display (:group 'mh-show) | |
746 | |
747 (defcustom mh-bury-show-buffer-flag t | |
748 "*Non-nil means that the displayed show buffer for a folder is buried." | |
749 :type 'boolean | |
750 :group 'mh-show) | |
751 | |
752 (defcustom mh-clean-message-header-flag t | |
753 "*Non-nil means clean headers of messages that are displayed or inserted. | |
754 The variables `mh-invisible-headers' and `mh-visible-headers' control | |
755 what is removed." | |
756 :type 'boolean | |
757 :group 'mh-show) | |
758 | |
759 (defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode"))) | |
760 "*Non-nil means that Gnus is used to show MIME attachments with Gnus." | |
761 :type 'boolean | |
762 :group 'mh-show) | |
763 | |
764 (defcustom mh-decode-quoted-printable-flag | |
765 (not (null (and (fboundp 'executable-find)(executable-find "mimedecode")))) | |
766 "Non-nil means decode quoted-printable MIME part with `mimedecode'. | |
767 | |
768 Quoted-printable message parts are translated to 8-bit characters by the | |
769 `mimedecode' command. However, unless there is only one quoted-printable body | |
770 part, Gnus will have already decoded the quoted-printable parts. | |
771 | |
772 This variable is initialized t if `mimedecode' is available. | |
773 | |
774 The source code for `mimedecode' can be obtained from | |
775 http://www.freesoft.org/CIE/FAQ/mimedeco.c." | |
776 :type 'boolean | |
777 :group 'mh-show) | |
778 | |
779 (defcustom mh-display-buttons-for-inline-parts-flag nil | |
780 "*Non-nil means display buttons for all inline MIME parts. | |
781 If non-nil, buttons are displayed for all MIME parts. Inline parts start off | |
782 in displayed state but they can be hidden by clicking the button. If nil no | |
783 buttons are shown for inline parts." | |
784 :type 'boolean | |
785 :group 'mh-show) | |
786 | |
787 (defcustom mh-do-not-confirm-flag nil | |
788 "*Non-nil means do not prompt for confirmation. | |
789 Commands such as `mh-pack-folder' prompt to confirm whether to process | |
790 outstanding moves and deletes or not before continuing. A non-nil setting will | |
791 perform the action--which is usually desired but cannot be retracted--without | |
792 question." | |
793 :type 'boolean | |
794 :group 'mh-show) | |
795 | |
796 (defcustom mh-graphical-smileys-flag t | |
797 "*Non-nil means graphical smileys are displayed. | |
798 Non-nil means that small graphics will be used in the show buffer instead of | |
799 patterns like :-), ;-) etc. The setting only has effect if | |
800 `mh-decode-mime-flag' is non-nil." | |
801 :type 'boolean | |
802 :group 'mh-show) | |
803 | |
804 (defcustom mh-graphical-emphasis-flag t | |
805 "*Non-nil means graphical emphasis is displayed. | |
806 Non-nil means that _underline_ will be underlined, *bold* will appear in bold, | |
807 /italic/ will appear in italic etc. See `gnus-emphasis-alist' for the whole | |
808 list. The setting only has effect if `mh-decode-mime-flag' is non-nil." | |
809 :type 'boolean | |
810 :group 'mh-show) | |
811 | |
812 (defcustom mh-highlight-citation-p 'gnus | |
813 "How to highlight citations in show buffers. | |
814 The gnus method uses a different color for each indentation." | |
815 :type '(choice (const :tag "Use gnus" gnus) | |
816 (const :tag "Use font-lock" font-lock) | |
817 (const :tag "Don't fontify" nil)) | |
818 :group 'mh-show) | |
819 | |
820 (defcustom mh-max-inline-image-height nil | |
821 "*Maximum inline image height if Content-Disposition is not present. | |
822 If nil, image will be displayed if its height is smaller than the height of | |
823 the window." | |
824 :type '(choice (const nil) integer) | |
825 :group 'mh-show) | |
826 | |
827 (defcustom mh-max-inline-image-width nil | |
828 "*Maximum inline image width if Content-Disposition is not present. | |
829 If nil, image will be displayed if its width is smaller than the width of the | |
830 window." | |
831 :type '(choice (const nil) integer) | |
832 :group 'mh-show) | |
833 | |
834 (defcustom mh-show-maximum-size 0 | |
835 "*Maximum size of message (in bytes) to display automatically. | |
836 Provides an opportunity to skip over large messages which may be slow to load. | |
837 Use a value of 0 to display all messages automatically regardless of size." | |
838 :type 'integer | |
839 :group 'mh-show) | |
840 | |
841 ;; Use goto-addr if it was already loaded (which probably sets this | |
842 ;; variable to t), or if this variable is otherwise set to t. | |
843 (defcustom mh-show-use-goto-addr-flag (and (boundp 'goto-address-highlight-p) | |
844 goto-address-highlight-p) | |
845 "*Non-nil means highlight URLs and email addresses. | |
846 The `goto-addr' module is used." | |
847 :type 'boolean | |
848 :group 'mh-show) | |
849 | |
850 (defcustom mh-show-use-xface-flag | |
851 (and window-system | |
852 (not (null (cond | |
853 (mh-xemacs-flag | |
854 (locate-library "x-face")) | |
855 ((>= emacs-major-version 21) | |
856 (locate-library "x-face-e21")) | |
857 (t ;Emacs20 | |
858 nil)))) | |
859 (not (null (and (fboundp 'executable-find) | |
860 (executable-find | |
861 "uncompface"))))) | |
862 "*Non-nil means display faces in `mh-show-mode' with external x-face package. | |
863 It is available from ftp://ftp.jpl.org/pub/elisp/. Download it and put its | |
864 files in the Emacs `load-path' and MH-E will invoke it automatically for you if | |
865 this variable is non-nil. | |
866 | |
867 The `uncompface' binary is also required to be in the execute PATH. It can | |
868 be obtained from: ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z" | |
869 :type 'boolean | |
870 :group 'mh-show) | |
871 | |
872 (defcustom mh-summary-height (or (and (fboundp 'frame-height) | |
873 (> (frame-height) 24) | |
874 (min 10 (/ (frame-height) 6))) | |
875 4) | |
876 "*Number of lines in MH-Folder window (including the mode line)." | |
877 :type 'integer | |
878 :group 'mh-show) | |
879 | |
880 (defcustom mh-visible-headers nil | |
881 "*Contains a regexp specifying the headers to keep when cleaning. | |
882 Only used if `mh-clean-message-header-flag' is non-nil. Setting it overrides | |
883 the variable `mh-invisible-headers'." | |
884 :type '(choice (const nil) regexp) | |
885 :group 'mh-show) | |
886 | |
887 (defcustom mhl-formfile nil | |
888 "*Name of format file to be used by mhl to show and print messages. | |
889 A value of t means use the default format file. | |
890 nil means don't use mhl to format messages when showing; mhl is still used, | |
891 with the default format file, to format messages when printing them. | |
892 The format used should specify a non-zero value for overflowoffset so | |
893 the message continues to conform to RFC 822 and MH-E can parse the headers." | |
894 :type '(choice (const nil) (const t) string) | |
895 :group 'mh-show) | |
896 (put 'mhl-formfile 'info-file "mh-e") | |
897 | |
898 (defvar mh-invisible-headers nil | |
899 "*Regexp matching lines in a message header that are not to be shown. | |
900 If `mh-visible-headers' is non-nil, it is used instead to specify what | |
901 to keep.") | |
902 | |
903 (defun mh-invisible-headers () | |
904 "Make or remake the variable `mh-invisible-headers'. | |
905 Done using `mh-invisible-header-fields' as input." | |
906 (setq mh-invisible-headers | |
907 (concat | |
908 "^" | |
909 (let ((max-specpdl-size 1000)) ;workaround for insufficient default | |
910 (regexp-opt | |
911 (append | |
912 (if (not mh-show-use-xface-flag) | |
913 '("X-Face: ")) | |
914 mh-invisible-header-fields)))))) | |
915 | |
916 (defun mh-invisible-header-fields-set (symbol value) | |
917 "Update `mh-invisible-header-fields'. | |
918 The function is called with SYMBOL bound to `mh-invisible-header-fields' and | |
919 VALUE is the the list of headers that are invisible. As a side effect, the | |
920 variable `mh-invisible-fields' is set." | |
921 (set-default symbol value) | |
922 (mh-invisible-headers)) | |
923 | |
924 ;; Keep fields alphabetized. Mention source, if known. | |
925 (defcustom mh-invisible-header-fields | |
926 '("Autoforwarded: " | |
927 "Bestservhost: " | |
928 "Content-" ; RFC 2045 | |
929 "Delivered-To: " ; Egroups/yahoogroups mailing list manager | |
930 "Delivery-Date: " ; MH | |
931 "Delivery: " | |
932 "Encoding: " | |
933 "Errors-To: " | |
934 "Forwarded: " ; MH | |
935 "From " ; sendmail | |
936 "Importance: " ; MS Outlook | |
937 "In-Reply-To: " ; MH | |
938 "Lines: " | |
939 "List-" ; Mailman mailing list manager | |
940 "List-" ; Unknown mailing list managers | |
941 "List-Subscribe: " ; Unknown mailing list managers | |
942 "List-Unsubscribe: " ; Unknown mailing list managers | |
943 "Mail-from: " ; MH | |
944 "Mailing-List: " ; Egroups/yahoogroups mailing list manager | |
945 "Message-Id: " ; RFC 822 | |
946 "Mime-Version" ; RFC 2045 | |
947 "NNTP-" ; News | |
948 "Old-Return-Path: " | |
949 "Original-Encoded-Information-Types: " ; X400 | |
950 "P1-Content-Type: " ; X400 | |
951 "P1-Message-Id: " ; X400 | |
952 "P1-Recipient: " ; X400 | |
953 "Path: " | |
954 "Precedence: " | |
955 "Prev-Resent" ; MH | |
956 "Priority: " | |
957 "Received: " ; RFC 822 | |
958 "References: " | |
959 "Remailed-" ; MH | |
960 "Replied: " ; MH | |
961 "Resent" ; MH | |
962 "Return-Path: " ; RFC 822 | |
963 "Sensitivity: " ; MS Outlook | |
964 "Status: " ; sendmail | |
965 "Ua-Content-Id: " ; X400 | |
966 "User-Agent: " | |
967 "Via: " ; MH | |
968 "X-Abuse-Info: " | |
969 "X-Accept-Language: " | |
970 "X-Accept-Language: " ; Netscape/Mozilla | |
971 "X-Ack: " | |
972 "X-Apparently-From: " ; MS Outlook | |
973 "X-Apparently-To: " ; Egroups/yahoogroups mailing list manager | |
974 "X-Authentication-Warning: " ; sendmail | |
975 "X-Beenthere: " ; Mailman mailing list manager | |
976 "X-Complaints-To: " | |
977 "X-Cron-Env: " | |
978 "X-Delivered" | |
979 "X-Envelope-Sender: " | |
980 "X-Envelope-To: " | |
981 "X-Folder: " ; Spam | |
982 "X-From-Line" | |
983 "X-Gnus-Mail-Source: " ; gnus | |
984 "X-Habeas-SWE-1: " ; Spam | |
985 "X-Habeas-SWE-2: " ; Spam | |
986 "X-Habeas-SWE-3: " ; Spam | |
987 "X-Habeas-SWE-4: " ; Spam | |
988 "X-Habeas-SWE-5: " ; Spam | |
989 "X-Habeas-SWE-6: " ; Spam | |
990 "X-Habeas-SWE-7: " ; Spam | |
991 "X-Habeas-SWE-8: " ; Spam | |
992 "X-Habeas-SWE-9: " ; Spam | |
993 "X-Info: " ; NTMail | |
994 "X-Juno-" ; Juno | |
995 "X-List-Host: " ; Unknown mailing list managers | |
996 "X-List-Subscribe: " ; Unknown mailing list managers | |
997 "X-List-Unsubscribe: " ; Unknown mailing list managers | |
998 "X-Listserver: " ; Unknown mailing list managers | |
999 "X-Loop: " ; Unknown mailing list managers | |
1000 "X-MIME-Autoconverted: " ; sendmail | |
1001 "X-MIMETrack: " | |
1002 "X-MS-TNEF-Correlator: " ; MS Outlook | |
1003 "X-Mailing-List: " ; Unknown mailing list managers | |
1004 "X-Mailman-Version: " ; Mailman mailing list manager | |
1005 "X-Message-Id" | |
1006 "X-MimeOLE: " ; MS Outlook | |
1007 "X-Mozilla-Status: " ; Netscape/Mozilla | |
1008 "X-Msmail-" ; MS Outlook | |
1009 "X-News: " ; News | |
1010 "X-No-Archive: " | |
1011 "X-Orcl-Content-Type: " | |
1012 "X-Original-Complaints-To: " | |
1013 "X-Original-Date: " ; SourceForge mailing list manager | |
1014 "X-Original-Trace: " | |
1015 "X-OriginalArrivalTime: " ; Hotmail | |
1016 "X-Originating-IP: " ; Hotmail | |
1017 "X-Priority: " ; MS Outlook | |
1018 "X-Qotd-" ; User added | |
1019 "X-Received-Date: " | |
1020 "X-Received: " | |
1021 "X-Request-" | |
1022 "X-SBClass: " ; Spam | |
1023 "X-SBNote: " ; Spam | |
1024 "X-SBPass: " ; Spam | |
1025 "X-SBRule: " ; Spam | |
1026 "X-Scanned-By" | |
1027 "X-Sender: " | |
1028 "X-Server-Date: " | |
1029 "X-Server-Uuid: " | |
1030 "X-Sieve: " ; Sieve filtering | |
1031 "X-Spam-Level: " ; Spam | |
1032 "X-Spam-Score: " ; Spam | |
1033 "X-Spam-Status: " ; Spam | |
1034 "X-SpamBouncer: " ; Spam | |
1035 "X-Trace: " | |
1036 "X-UIDL: " | |
1037 "X-UserInfo1: " | |
1038 "X-VSMLoop: " ; NTMail | |
1039 "X-Vms-To: " | |
1040 "X-Wss-Id: " ; Worldtalk gateways | |
1041 "X-eGroups-" ; Egroups/yahoogroups mailing list manager | |
1042 "X-pgp: " | |
1043 "X-submission-address: " | |
1044 "X400-" ; X400 | |
1045 "Xref: ") | |
1046 "*List of header fields that are not to be shown. | |
1047 Regexps are not allowed. Unique fields should have a \": \" suffix; | |
1048 otherwise, the element can be used to render an entire class of fields | |
1049 that start with the same prefix invisible. | |
1050 This variable is ignored if `mh-visible-headers' is set." | |
1051 :type '(repeat (string :tag "Header field")) | |
1052 :set 'mh-invisible-header-fields-set | |
1053 :group 'mh-show) | |
1054 | |
1055 ;;; Composing messages (:group 'mh-letter) | |
1056 | |
1057 (defcustom mh-compose-insertion (if (locate-library "mml") 'gnus 'mhn) | |
1058 "Use either 'gnus or 'mhn to insert MIME message directives in messages." | |
1059 :type '(choice (const :tag "Use gnus" gnus) | |
1060 (const :tag "Use mhn" mhn)) | |
1061 :group 'mh-letter) | |
1062 | |
1063 (defcustom mh-compose-letter-function nil | |
1064 "Invoked when setting up a letter draft. | |
1065 It is passed three arguments: TO recipients, SUBJECT, and CC recipients." | |
1066 :type '(choice (const nil) function) | |
1067 :group 'mh-letter) | |
1068 | |
1069 (defcustom mh-delete-yanked-msg-window-flag nil | |
1070 "*Non-nil means delete any window displaying the message. | |
1071 Controls window display when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. | |
1072 If non-nil, yanking the current message into a draft letter deletes any | |
1073 windows displaying the message." | |
1074 :type 'boolean | |
1075 :group 'mh-letter) | |
1076 | |
1077 (defcustom mh-extract-from-attribution-verb "wrote:" | |
1078 "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]." | |
1079 :type '(choice (const "wrote:") | |
1080 (const "a écrit :") | |
1081 (string :tag "Custom string")) | |
1082 :group 'mh-letter) | |
1083 | |
1084 (defcustom mh-forward-subject-format "%s: %s" | |
1085 "*Format to generate the Subject: line contents for a forwarded message. | |
1086 The two string arguments to the format are the sender of the original | |
1087 message and the original subject line." | |
1088 :type 'string | |
1089 :group 'mh-letter) | |
1090 | |
1091 (defcustom mh-ins-buf-prefix "> " | |
1092 "*String to put before each non-blank line of a yanked or inserted message. | |
1093 \\<mh-letter-mode-map>Used when the message is inserted into an outgoing letter | |
1094 by \\[mh-insert-letter] or \\[mh-yank-cur-msg]." | |
1095 :type 'string | |
1096 :group 'mh-letter) | |
1097 | |
1098 (defcustom mh-insert-mail-followup-to-flag t | |
1099 "Non-nil means maybe append a Mail-Followup-To field to the header. | |
1100 The insertion is done if the To: or Cc: fields matches an entry in | |
1101 `mh-insert-mail-followup-to-list'." | |
1102 :type 'boolean | |
1103 :group 'mh-letter) | |
1104 | |
1105 (defcustom mh-insert-mail-followup-to-list nil | |
1106 "Alist of addresses for which a Mail-Followup-To field is inserted. | |
1107 Each element has the form (REGEXP ADDRESS). | |
1108 When the REGEXP appears in the To or cc fields of a message, the corresponding | |
1109 ADDRESS is inserted in a Mail-Followup-To field. | |
1110 | |
1111 Here's a customization example: | |
1112 | |
1113 regexp: mh-e-users@lists.s\\\\(ourceforge\\\\|f\\\\).net | |
1114 address: mh-e-users@lists.sourceforge.net | |
1115 | |
1116 This corresponds to: | |
1117 | |
1118 (setq mh-insert-mail-followup-to-list | |
1119 '((\"mh-e-users@lists.s\\\\(ourceforge\\\\|f\\\\).net\" | |
1120 \"mh-e-users@lists.sourceforge.net\"))) | |
1121 | |
1122 While it might be tempting to add a descriptive name to the mailing list | |
1123 address, consider that this field will appear in other people's outgoing | |
1124 mail in their To: field. It might be best to keep it simple." | |
1125 :type '(repeat (list (string :tag "regexp") (string :tag "address"))) | |
1126 :group 'mh-letter) | |
1127 | |
1128 (defcustom mh-insert-x-mailer-flag t | |
1129 "*Non-nil means append an X-Mailer field to the header." | |
1130 :type 'boolean | |
1131 :group 'mh-letter) | |
1132 | |
1133 (defcustom mh-letter-fill-column 72 | |
1134 "*Fill column to use in `mh-letter-mode'. | |
1135 This is usually less than in other text modes because email messages get | |
1136 quoted by some prefix (sometimes many times) when they are replied to, | |
1137 and it's best to avoid quoted lines that span more than 80 columns." | |
1138 :type 'integer | |
1139 :group 'mh-letter) | |
1140 | |
1141 (defcustom mh-reply-default-reply-to nil | |
1142 "*Sets the person or persons to whom a reply will be sent. | |
1143 If nil, prompt for recipient. If non-nil, then \\<mh-folder-mode-map>`\\[mh-reply]' will use this | |
1144 value and it should be one of \"from\", \"to\", \"cc\", or \"all\". | |
1145 The values \"cc\" and \"all\" do the same thing." | |
1146 :type '(choice (const :tag "Prompt" nil) | |
1147 (const "from") (const "to") | |
1148 (const "cc") (const "all")) | |
1149 :group 'mh-letter) | |
1150 | |
1151 (defcustom mh-reply-show-message-flag t | |
1152 "*Non-nil means the show buffer is displayed using \\<mh-letter-mode-map>\\[mh-reply]. | |
1153 | |
1154 The setting of this variable determines whether the MH `show-buffer' is | |
1155 displayed with the current message when using `mh-reply' without a prefix | |
1156 argument. Set it to nil if you already include the message automatically | |
1157 in your draft using | |
1158 repl: -filter repl.filter | |
1159 in your ~/.mh_profile file." | |
1160 :type 'boolean | |
1161 :group 'mh-letter) | |
1162 | |
1163 (defcustom mh-signature-file-name "~/.signature" | |
1164 "*Name of file containing the user's signature. | |
1165 Inserted into message by \\<mh-letter-mode-map>\\[mh-insert-signature]." | |
1166 :type 'file | |
1167 :group 'mh-letter) | |
1168 | |
1169 (defcustom mh-x-face-file "~/.face" | |
1170 "*File name containing the encoded X-Face string to insert in outgoing mail. | |
1171 If nil, or the file does not exist, nothing is added to message headers." | |
1172 :type 'file | |
1173 :group 'mh-letter) | |
1174 | |
1175 (defvar mh-x-mailer-string nil | |
1176 "*String containing the contents of the X-Mailer header field. | |
1177 If nil, this variable is initialized to show the version of MH-E, Emacs, and | |
1178 MH the first time a message is composed.") | |
1179 | |
1180 (defcustom mh-yank-from-start-of-msg 'attribution | |
1181 "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. | |
1182 If t, include the entire message, with full headers. This is historically | |
1183 here for use with supercite, but is now deprecated in favor of the setting | |
1184 `supercite' below. | |
1185 | |
1186 If the symbol `body', then yank the message minus the header. | |
1187 | |
1188 If the symbol `supercite', include the entire message, with full headers. | |
1189 This also causes the invocation of `sc-cite-original' without the setting | |
1190 of `mail-citation-hook', now deprecated practice. | |
1191 | |
1192 If the symbol `autosupercite', do as for `supercite' automatically when | |
1193 show buffer matches the message being replied-to. When this option is used, | |
1194 the -noformat switch is passed to the repl program to override a -filter or | |
1195 -format switch. | |
1196 | |
1197 If the symbol `attribution', then yank the message minus the header and add | |
1198 a simple attribution line at the top. | |
1199 | |
1200 If the symbol `autoattrib', do as for `attribution' automatically when show | |
1201 buffer matches the message being replied-to. You can make sure this is | |
1202 always the case by setting `mh-reply-show-message-flag' to t (which is the | |
1203 default) and optionally `mh-delete-yanked-msg-window-flag' to t as well such | |
1204 that the show window is never displayed. When the `autoattrib' option is | |
1205 used, the -noformat switch is passed to the repl program to override a | |
1206 -filter or -format switch. | |
1207 | |
1208 If nil, yank only the portion of the message following the point. | |
1209 | |
1210 If the show buffer has a region, this variable is ignored unless its value is | |
1211 one of `attribution' or `autoattrib' in which case the attribution is added | |
1212 to the yanked region." | |
1213 :type '(choice (const :tag "Below point" nil) | |
1214 (const :tag "Without header" body) | |
1215 (const :tag "Invoke supercite" supercite) | |
1216 (const :tag "Invoke supercite, automatically" autosupercite) | |
1217 (const :tag "Without header, with attribution" attribution) | |
1218 (const :tag "Without header, with attribution, automatically" | |
1219 autoattrib) | |
1220 (const :tag "Entire message with headers" t)) | |
1221 :group 'mh-letter) | |
1222 | |
1223 (defcustom mh-letter-complete-function 'ispell-complete-word | |
1224 "*Function to call when completing outside of fields specific to aliases." | |
1225 :type '(choice function (const nil)) | |
1226 :group 'mh-letter) | |
1227 | |
1228 ;;; Alias handling (:group 'mh-alias) | |
1229 | |
1230 (defcustom mh-alias-system-aliases | |
1231 '("/etc/nmh/MailAliases" "/usr/lib/mh/MailAliases" "/etc/passwd") | |
1232 "*A list of system files from which to cull aliases. | |
1233 If these files are modified, they are automatically reread. This list need | |
1234 include only system aliases and the passwd file, since personal alias files | |
1235 listed in your \"AliasFile\" MH profile component are automatically included. | |
1236 You can update the alias list manually using \\[mh-alias-reload]." | |
1237 :group 'mh-alias | |
1238 :type '(choice (file) (repeat file))) | |
1239 | |
1240 (defcustom mh-alias-expand-aliases-flag nil | |
1241 "*Non-nil means to expand aliases entered in the minibuffer. | |
1242 In other words, aliases entered in the minibuffer will be expanded to the full | |
1243 address in the message draft. By default, this expansion is not performed." | |
1244 :group 'mh-alias | |
1245 :type 'boolean) | |
1246 | |
1247 (defcustom mh-alias-completion-ignore-case-flag t | |
1248 "*Non-nil means don't consider case significant in MH alias completion. | |
1249 This is the default in plain MH, so it is the default here as well. It | |
1250 can be useful to set this to t if, for example, you use lowercase | |
1251 aliases for people and uppercase for mailing lists." | |
1252 :group 'mh-alias | |
1253 :type 'boolean) | |
1254 | |
1255 (defcustom mh-alias-flash-on-comma t | |
1256 "*Specify whether to flash or warn on translation. | |
1257 When a [comma] is pressed while entering aliases or addresses, setting this | |
1258 variable to the following values has the listed effects: | |
1259 t Flash alias translation but don't warn if there is no translation. | |
1260 1 Flash alias translation and warn if there is no translation. | |
1261 nil Do not flash alias translation nor warn if there is no translation." | |
1262 :group 'mh-alias | |
1263 :type '(choice (const :tag "Flash but don't warn if no translation" t) | |
1264 (const :tag "Flash and warn if no translation" 1) | |
1265 (const :tag "Don't flash nor warn if no translation" nil))) | |
1266 | |
1267 (defcustom mh-alias-local-users t | |
1268 "*If t, local users are completed in MH-E To: and Cc: prompts. | |
1269 | |
1270 Users with a userid greater than some magic number (usually 200) are available | |
1271 for completion. | |
1272 | |
1273 If you set this variable to a string, it will be executed to generate a | |
1274 password file. A value of \"ypcat passwd\" is helpful if NIS is in use." | |
1275 :group 'mh-alias | |
1276 :type '(choice (boolean) (string))) | |
1277 | |
1278 (defcustom mh-alias-insert-file nil | |
1279 "*Filename to use to store new MH-E aliases. | |
1280 This variable can also be a list of filenames, in which case MH-E will prompt | |
1281 for one of them. If nil, the default, then MH-E will use the first file found | |
1282 in the \"AliasFile\" component of the MH profile." | |
1283 :group 'mh-alias | |
1284 :type '(choice (const :tag "Use AliasFile MH profile component" nil) | |
1285 (file :tag "Alias file") | |
1286 (repeat :tag "List of alias files" file))) | |
1287 | |
1288 (defcustom mh-alias-insertion-location 'sorted | |
1289 "Specifies where new aliases are entered in alias files. | |
1290 Options are sorted alphabetically, at the top of the file or at the bottom." | |
1291 :type '(choice (const :tag "Sorted alphabetically" sorted) | |
1292 (const :tag "At the top of file" top) | |
1293 (const :tag "At the bottom of file" bottom)) | |
1294 :group 'mh-alias) | |
1295 | |
1296 ;;; Indexed searching (:group 'mh-index) | |
1297 | |
1298 (defcustom mh-index-program nil | |
1299 "Indexing program that MH-E shall use. | |
1300 The possible choices are swish++, swish-e, namazu, glimpse and grep. By | |
1301 default this variable is nil which means that the programs are tried in order | |
1302 and the first one found is used." | |
1303 :type '(choice (const :tag "auto-detect" nil) | |
1304 (const :tag "swish++" swish++) | |
1305 (const :tag "swish-e" swish) | |
1306 (const :tag "namazu" namazu) | |
1307 (const :tag "glimpse" glimpse) | |
1308 (const :tag "grep" grep)) | |
1309 :group 'mh-index) | |
1310 | |
1311 ;;; Multiple personalities (:group 'mh-identity) | |
1312 | |
1313 (defcustom mh-identity-list nil | |
1314 "*List holding MH-E identity. | |
1315 Omit the colon and trailing space from the field names. | |
1316 The keyword name \"none\" is reversed for internal use. | |
1317 Use the keyname name \"signature\" to specify either a signature file or a | |
1318 function to call to insert a signature at point. | |
1319 | |
1320 Providing an empty Value (\"\") will cause the field to be deleted. | |
1321 | |
1322 Example entries using the customize interface: | |
1323 Keyword name: work | |
1324 From | |
1325 Value: John Doe <john@work.com> | |
1326 Organization | |
1327 Value: Acme Inc. | |
1328 Keyword name: home | |
1329 From | |
1330 Value: John Doe <johndoe@home.net> | |
1331 Organization | |
1332 Value: | |
1333 | |
1334 This would produce the equivalent of: | |
1335 (setq mh-identity-list | |
1336 '((\"work\" | |
1337 ((\"From\" . \"John Doe <john@work.com>\") | |
1338 (\"Organization\" . \"Acme Inc.\"))) | |
1339 (\"home\" | |
1340 ((\"From\" . \"John Doe <johndoe@home.net>\") | |
1341 (\"Organization\" . \"\")))))" | |
1342 :type '(repeat (list :tag "" | |
1343 (string :tag "Keyword name") | |
1344 (repeat :tag "At least one pair from below" | |
1345 (choice (cons :tag "From field" | |
1346 (const "From") | |
1347 (string :tag "Value")) | |
1348 (cons :tag "Organization field" | |
1349 (const "Organization") | |
1350 (string :tag "Value")) | |
1351 (cons :tag "Signature" | |
1352 (const "signature") | |
1353 (choice (file) (function))) | |
1354 (cons :tag "Other field & value pair" | |
1355 (string :tag "Field") | |
1356 (string :tag "Value")))))) | |
1357 :set 'mh-identity-list-set | |
1358 :group 'mh-identity) | |
1359 | |
1360 (defcustom mh-identity-default nil | |
1361 "Default identity to use when `mh-letter-mode' is called." | |
1362 ;; Dynamically render :type corresponding to `mh-identity-list' entries, | |
1363 ;; e.g.: | |
1364 ;; :type '(radio (const :tag "none" nil) | |
1365 ;; (const "home") | |
1366 ;; (const "work")) | |
1367 :type (append | |
1368 '(radio) | |
1369 (cons '(const :tag "none" nil) | |
1370 (mapcar (function (lambda (arg) `(const ,arg))) | |
1371 (mapcar 'car mh-identity-list)))) | |
1372 :group 'mh-identity) | |
1373 | |
1374 ;;; Hooks (:group 'mh-hooks + group where hook defined) | |
1375 | |
1376 ;;; These are alphabetized. All hooks should be placed in the 'mh-hook group; | |
1377 ;;; in addition, add the group in which the hook is defined in the manual (or, | |
1378 ;;; if it is new, where it would be defined). | |
1379 | |
1380 (defcustom mh-before-quit-hook nil | |
1381 "Invoked by \\<mh-folder-mode-map>`\\[mh-quit]' before quitting MH-E. | |
1382 See also `mh-quit-hook'." | |
1383 :type 'hook | |
1384 :group 'mh-hooks | |
1385 :group 'mh-folder) | |
1386 | |
1387 (defcustom mh-before-send-letter-hook nil | |
1388 "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command." | |
1389 :type 'hook | |
1390 :group 'mh-hooks | |
1391 :group 'mh-letter) | |
1392 | |
1393 (defcustom mh-delete-msg-hook nil | |
1394 "Invoked after marking each message for deletion." | |
1395 :type 'hook | |
1396 :group 'mh-hooks | |
1397 :group 'mh-folder) | |
1398 | |
1399 (defcustom mh-edit-mhn-hook nil | |
1400 "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-edit-mhn]." | |
1401 :type 'hook | |
1402 :group 'mh-hooks | |
1403 :group 'mh-letter) | |
1404 | |
1405 (defcustom mh-find-path-hook nil | |
1406 "Invoked by `mh-find-path' after reading the user's MH profile." | |
1407 :type 'hook | |
1408 :group 'mh-hooks | |
1409 :group 'mh-folder) | |
1410 | |
1411 (defcustom mh-folder-list-change-hook nil | |
1412 "Invoked whenever the cached folder list `mh-folder-list' is changed." | |
1413 :type 'hook | |
1414 :group 'mh-hooks | |
1415 :group 'mh-folder) | |
1416 | |
1417 (defcustom mh-folder-mode-hook nil | |
1418 "Invoked in `mh-folder-mode' on a new folder." | |
1419 :type 'hook | |
1420 :group 'mh-hooks | |
1421 :group 'mh-folder) | |
1422 | |
1423 (defcustom mh-folder-updated-hook nil | |
1424 "Invoked when the folder actions (such as moves and deletes) are performed. | |
1425 Variables that are useful in this hook include `mh-delete-list' and | |
1426 `mh-refile-list' which can be used to see which changes are being made to | |
1427 current folder, `mh-current-folder'." | |
1428 :type 'hook | |
1429 :group 'mh-hooks) | |
1430 | |
1431 (defcustom mh-inc-folder-hook nil | |
1432 "Invoked by \\<mh-folder-mode-map>`\\[mh-inc-folder]' after incorporating mail into a folder." | |
1433 :type 'hook | |
1434 :group 'mh-hooks | |
1435 :group 'mh-folder) | |
1436 | |
1437 (defcustom mh-index-show-hook nil | |
1438 "Invoked after the message has been displayed." | |
1439 :type 'hook | |
1440 :group 'mh-hooks | |
1441 :group 'mh-index) | |
1442 | |
1443 (defcustom mh-letter-insert-signature-hook nil | |
1444 "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-insert-signature] command. | |
1445 Can be used to determine which signature file to use based on message content. | |
1446 On return, if `mh-signature-file-name' is non-nil that file will be inserted at | |
1447 the current point in the buffer." | |
1448 :type 'hook | |
1449 :group 'mh-hooks | |
1450 :group 'mh-letter) | |
1451 | |
1452 (defcustom mh-letter-mode-hook nil | |
1453 "Invoked in `mh-letter-mode' on a new letter." | |
1454 :type 'hook | |
1455 :group 'mh-hooks | |
1456 :group 'mh-letter) | |
1457 | |
1458 (defcustom mh-pick-mode-hook nil | |
1459 "Invoked upon entry to `mh-pick-mode'." | |
1460 :type 'hook | |
1461 :group 'mh-hooks | |
1462 :group 'mh-folder) | |
1463 | |
1464 (defcustom mh-quit-hook nil | |
1465 "Invoked after \\<mh-folder-mode-map>`\\[mh-quit]' quits MH-E. | |
1466 See also `mh-before-quit-hook'." | |
1467 :type 'hook | |
1468 :group 'mh-hooks | |
1469 :group 'mh-folder) | |
1470 | |
1471 (defcustom mh-refile-msg-hook nil | |
1472 "Invoked after marking each message for refiling." | |
1473 :type 'hook | |
1474 :group 'mh-hooks | |
1475 :group 'mh-folder) | |
1476 | |
1477 (defcustom mh-show-hook nil | |
1478 "Invoked after \\<mh-folder-mode-map>`\\[mh-show]' shows a message." | |
1479 :type 'hook | |
1480 :group 'mh-hooks | |
1481 :group 'mh-show) | |
1482 | |
1483 (defcustom mh-show-mode-hook nil | |
1484 "Invoked upon entry to `mh-show-mode'." | |
1485 :type 'hook | |
1486 :group 'mh-hooks | |
1487 :group 'mh-show) | |
1488 | |
1489 (defcustom mh-unseen-updated-hook nil | |
1490 "Invoked after the unseen sequence has been updated. | |
1491 The variable `mh-seen-list' can be used to obtain the list of messages which | |
1492 will be removed from the unseen sequence." | |
1493 :type 'hook | |
1494 :group 'mh-hooks | |
1495 :group 'mh-folder) | |
1496 | |
1497 | |
1498 | |
1499 ;;; Faces | |
1500 | |
1501 ;;; Faces used in speedbar (:group mh-speed-faces) | |
1502 | |
1503 (defface mh-speedbar-folder-face | |
1504 '((((class color) (background light)) | |
1505 (:foreground "blue4")) | |
1506 (((class color) (background dark)) | |
1507 (:foreground "light blue"))) | |
1508 "Face used for folders in the speedbar buffer." | |
1509 :group 'mh-speed-faces) | |
1510 | |
1511 (defface mh-speedbar-selected-folder-face | |
1512 '((((class color) (background light)) | |
1513 (:foreground "red" :underline t)) | |
1514 (((class color) (background dark)) | |
1515 (:foreground "red" :underline t)) | |
1516 (t (:underline t))) | |
1517 "Face used for the current folder." | |
1518 :group 'mh-speed-faces) | |
1519 | |
1520 (defface mh-speedbar-folder-with-unseen-messages-face | |
1521 '((t (:inherit mh-speedbar-folder-face :bold t))) | |
1522 "Face used for folders in the speedbar buffer which have unread messages." | |
1523 :group 'mh-speed-faces) | |
1524 | |
1525 (defface mh-speedbar-selected-folder-with-unseen-messages-face | |
1526 '((t (:inherit mh-speedbar-selected-folder-face :bold t))) | |
1527 "Face used for the current folder when it has unread messages." | |
1528 :group 'mh-speed-faces) | |
1529 | |
1530 ;;; Faces used in scan listing (:group mh-folder-faces) | |
1531 | |
1532 (defvar mh-folder-body-face 'mh-folder-body-face | |
1533 "Face for highlighting body text in MH-Folder buffers.") | |
1534 (defface mh-folder-body-face | |
1535 '((((type tty) (class color)) (:foreground "green")) | |
1536 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) | |
1537 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) | |
1538 (((class color) (background light)) (:foreground "RosyBrown")) | |
1539 (((class color) (background dark)) (:foreground "LightSalmon")) | |
1540 (t (:italic t))) | |
1541 "Face for highlighting body text in MH-Folder buffers." | |
1542 :group 'mh-folder-faces) | |
1543 | |
1544 (defvar mh-folder-cur-msg-face 'mh-folder-cur-msg-face | |
1545 "Face for the current message line in MH-Folder buffers.") | |
1546 (defface mh-folder-cur-msg-face | |
1547 '((((type tty pc) (class color)) | |
1548 (:background "LightGreen")) | |
1549 (((class color) (background light)) | |
1550 (:background "LightGreen") ;Use this for solid background colour | |
1551 ;; (:underline t) ;Use this for underlining | |
1552 ) | |
1553 (((class color) (background dark)) | |
1554 (:background "DarkOliveGreen4")) | |
1555 (t (:underline t))) | |
1556 "Face for the current message line in MH-Folder buffers." | |
1557 :group 'mh-folder-faces) | |
1558 | |
1559 (defvar mh-folder-cur-msg-number-face 'mh-folder-cur-msg-number-face | |
1560 "Face for highlighting the current message in MH-Folder buffers.") | |
1561 (defface mh-folder-cur-msg-number-face | |
1562 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) | |
1563 (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) | |
1564 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) | |
1565 (((class color) (background light)) (:foreground "Purple")) | |
1566 (((class color) (background dark)) (:foreground "Cyan")) | |
1567 (t (:bold t))) | |
1568 "Face for highlighting the current message in MH-Folder buffers." | |
1569 :group 'mh-folder-faces) | |
1570 | |
1571 (defvar mh-folder-date-face 'mh-folder-date-face | |
1572 "Face for highlighting the date in MH-Folder buffers.") | |
1573 (defface mh-folder-date-face | |
1574 '((((class color) (background light)) | |
1575 (:foreground "snow4")) | |
1576 (((class color) (background dark)) | |
1577 (:foreground "snow3")) | |
1578 (t | |
1579 (:bold t))) | |
1580 "Face for highlighting the date in MH-Folder buffers." | |
1581 :group 'mh-folder-faces) | |
1582 | |
1583 (defvar mh-folder-followup-face 'mh-folder-followup-face | |
1584 "Face for highlighting Re: (followup) subject text in MH-Folder buffers.") | |
1585 (defface mh-folder-followup-face | |
1586 '((((class color) (background light)) | |
1587 (:foreground "blue3")) | |
1588 (((class color) (background dark)) | |
1589 (:foreground "LightGoldenRod")) | |
1590 (t | |
1591 (:bold t))) | |
1592 "Face for highlighting Re: (followup) subject text in MH-Folder buffers." | |
1593 :group 'mh-folder-faces) | |
1594 | |
1595 (defvar mh-folder-msg-number-face 'mh-folder-msg-number-face | |
1596 "Face for highlighting the message number in MH-Folder buffers.") | |
1597 (defface mh-folder-msg-number-face | |
1598 '((((class color) (background light)) | |
1599 (:foreground "snow4")) | |
1600 (((class color) (background dark)) | |
1601 (:foreground "snow3")) | |
1602 (t | |
1603 (:bold t))) | |
1604 "Face for highlighting the message number in MH-Folder buffers." | |
1605 :group 'mh-folder-faces) | |
1606 | |
1607 (defvar mh-folder-deleted-face 'mh-folder-deleted-face | |
1608 "Face for highlighting deleted messages in MH-Folder buffers.") | |
1609 (copy-face 'mh-folder-msg-number-face 'mh-folder-deleted-face) | |
1610 | |
1611 (defvar mh-folder-refiled-face 'mh-folder-refiled-face | |
1612 "Face for highlighting refiled messages in MH-Folder buffers.") | |
1613 (defface mh-folder-refiled-face | |
1614 '((((type tty) (class color)) (:foreground "yellow" :weight light)) | |
1615 (((class grayscale) (background light)) | |
1616 (:foreground "Gray90" :bold t :italic t)) | |
1617 (((class grayscale) (background dark)) | |
1618 (:foreground "DimGray" :bold t :italic t)) | |
1619 (((class color) (background light)) (:foreground "DarkGoldenrod")) | |
1620 (((class color) (background dark)) (:foreground "LightGoldenrod")) | |
1621 (t (:bold t :italic t))) | |
1622 "Face for highlighting refiled messages in MH-Folder buffers." | |
1623 :group 'mh-folder-faces) | |
1624 | |
1625 (defvar mh-folder-subject-face 'mh-folder-subject-face | |
1626 "Face for highlighting subject text in MH-Folder buffers.") | |
1627 (if (boundp 'facemenu-unlisted-faces) | |
1628 (add-to-list 'facemenu-unlisted-faces "^mh-folder")) | |
1629 (defface mh-folder-subject-face | |
1630 '((((class color) (background light)) | |
1631 (:foreground "blue4")) | |
1632 (((class color) (background dark)) | |
1633 (:foreground "yellow")) | |
1634 (t | |
1635 (:bold t))) | |
1636 "Face for highlighting subject text in MH-Folder buffers." | |
1637 :group 'mh-folder-faces) | |
1638 | |
1639 (defvar mh-folder-address-face 'mh-folder-address-face | |
1640 "Face for highlighting the address in MH-Folder buffers.") | |
1641 (copy-face 'mh-folder-subject-face 'mh-folder-address-face) | |
1642 | |
1643 (defvar mh-folder-scan-format-face 'mh-folder-scan-format-face | |
1644 "Face for highlighting `mh-scan-format-regexp' matches in MH-Folder buffers.") | |
1645 (copy-face 'mh-folder-followup-face 'mh-folder-scan-format-face) | |
1646 | |
1647 (defvar mh-folder-to-face 'mh-folder-to-face | |
1648 "Face for highlighting the To: string in MH-Folder buffers.") | |
1649 (defface mh-folder-to-face | |
1650 '((((type tty) (class color)) (:foreground "green")) | |
1651 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) | |
1652 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) | |
1653 (((class color) (background light)) (:foreground "RosyBrown")) | |
1654 (((class color) (background dark)) (:foreground "LightSalmon")) | |
1655 (t (:italic t))) | |
1656 "Face for highlighting the To: string in MH-Folder buffers." | |
1657 :group 'mh-folder-faces) | |
1658 | |
1659 ;;; Faces used in message display (:group mh-show-faces) | |
1660 | |
1661 (defvar mh-show-cc-face 'mh-show-cc-face | |
1662 "Face for highlighting cc header fields.") | |
1663 (defface mh-show-cc-face | |
1664 '((((type tty) (class color)) (:foreground "yellow" :weight light)) | |
1665 (((class grayscale) (background light)) | |
1666 (:foreground "Gray90" :bold t :italic t)) | |
1667 (((class grayscale) (background dark)) | |
1668 (:foreground "DimGray" :bold t :italic t)) | |
1669 (((class color) (background light)) (:foreground "DarkGoldenrod")) | |
1670 (((class color) (background dark)) (:foreground "LightGoldenrod")) | |
1671 (t (:bold t :italic t))) | |
1672 "Face for highlighting cc header fields." | |
1673 :group 'mh-show-faces) | |
1674 | |
1675 (defvar mh-show-date-face 'mh-show-date-face | |
1676 "Face for highlighting the Date header field.") | |
1677 (defface mh-show-date-face | |
1678 '((((type tty) (class color)) (:foreground "green")) | |
1679 (((class grayscale) (background light)) (:foreground "Gray90" :bold t)) | |
1680 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) | |
1681 (((class color) (background light)) (:foreground "ForestGreen")) | |
1682 (((class color) (background dark)) (:foreground "PaleGreen")) | |
1683 (t (:bold t :underline t))) | |
1684 "Face for highlighting the Date header field." | |
1685 :group 'mh-show-faces) | |
1686 | |
1687 (defvar mh-show-header-face 'mh-show-header-face | |
1688 "Face used to deemphasize unspecified header fields.") | |
1689 (defface mh-show-header-face | |
1690 '((((type tty) (class color)) (:foreground "green")) | |
1691 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) | |
1692 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) | |
1693 (((class color) (background light)) (:foreground "RosyBrown")) | |
1694 (((class color) (background dark)) (:foreground "LightSalmon")) | |
1695 (t (:italic t))) | |
1696 "Face used to deemphasize unspecified header fields." | |
1697 :group 'mh-show-faces) | |
1698 | |
1699 (defvar mh-show-to-face 'mh-show-to-face | |
1700 "Face for highlighting the To: header field.") | |
1701 (if (boundp 'facemenu-unlisted-faces) | |
1702 (add-to-list 'facemenu-unlisted-faces "^mh-show")) | |
1703 (defface mh-show-to-face | |
1704 '((((class grayscale) (background light)) | |
1705 (:foreground "DimGray" :underline t)) | |
1706 (((class grayscale) (background dark)) | |
1707 (:foreground "LightGray" :underline t)) | |
1708 (((class color) (background light)) (:foreground "SaddleBrown")) | |
1709 (((class color) (background dark)) (:foreground "burlywood")) | |
1710 (t (:underline t))) | |
1711 "Face for highlighting the To: header field." | |
1712 :group 'mh-show-faces) | |
1713 | |
1714 (defvar mh-show-from-face 'mh-show-from-face | |
1715 "Face for highlighting the From: header field.") | |
1716 (defface mh-show-from-face | |
1717 '((((class color) (background light)) | |
1718 (:foreground "red3")) | |
1719 (((class color) (background dark)) | |
1720 (:foreground "cyan")) | |
1721 (t | |
1722 (:bold t))) | |
1723 "Face for highlighting the From: header field." | |
1724 :group 'mh-show-faces) | |
1725 | |
1726 (defvar mh-show-subject-face 'mh-show-subject-face | |
1727 "Face for highlighting the Subject header field.") | |
1728 (copy-face 'mh-folder-subject-face 'mh-show-subject-face) | |
1729 | |
1730 ;;; Faces used in indexed searches (:group mh-index-faces) | |
1731 | |
1732 (defvar mh-index-folder-face 'mh-index-folder-face | |
1733 "Face for highlighting folders in MH-Index buffers.") | |
1734 (defface mh-index-folder-face | |
1735 '((((class color) (background light)) | |
1736 (:foreground "dark green" :bold t)) | |
1737 (((class color) (background dark)) | |
1738 (:foreground "indian red" :bold t)) | |
1739 (t | |
1740 (:bold t))) | |
1741 "Face for highlighting folders in MH-Index buffers." | |
1742 :group 'mh-index-faces) | |
1743 | |
1744 (provide 'mh-customize) | |
1745 | |
1746 ;;; Local Variables: | |
1747 ;;; indent-tabs-mode: nil | |
1748 ;;; sentence-end-double-space: nil | |
1749 ;;; End: | |
1750 | |
1751 ;;; mh-customize.el ends here |