comparison lisp/mh-e/mh-customize.el @ 67758:6b063593fdad

Follow Emacs coding conventions. Use default setting of emacs-lisp-docstring-fill-column which is 65.
author Bill Wohler <wohler@newt.com>
date Fri, 23 Dec 2005 07:40:40 +0000
parents 7ff92ad99326
children b7b75914a27d
comparison
equal deleted inserted replaced
67757:488b4dbc7482 67758:6b063593fdad
88 (defvar mh-show-buffer) 88 (defvar mh-show-buffer)
89 (defvar mh-show-folder-buffer)) 89 (defvar mh-show-folder-buffer))
90 90
91 (defun mh-customize (&optional delete-other-windows-flag) 91 (defun mh-customize (&optional delete-other-windows-flag)
92 "Customize MH-E variables. 92 "Customize MH-E variables.
93 If optional argument DELETE-OTHER-WINDOWS-FLAG is non-nil, other windows in 93 If optional argument DELETE-OTHER-WINDOWS-FLAG is non-nil, other
94 the frame are removed." 94 windows in the frame are removed."
95 (interactive "P") 95 (interactive "P")
96 (customize-group 'mh-e) 96 (customize-group 'mh-e)
97 (when delete-other-windows-flag 97 (when delete-other-windows-flag
98 (delete-other-windows))) 98 (delete-other-windows)))
99 99
101 101
102 ;;; MH-E Customization Groups 102 ;;; MH-E Customization Groups
103 103
104 (defgroup mh-e nil 104 (defgroup mh-e nil
105 "Emacs interface to the MH mail system. 105 "Emacs interface to the MH mail system.
106 MH is the Rand Mail Handler. Other implementations include nmh and GNU 106 MH is the Rand Mail Handler. Other implementations include nmh
107 mailutils." 107 and GNU mailutils."
108 :link '(custom-manual "(mh-e)Top") 108 :link '(custom-manual "(mh-e)Top")
109 :group 'mail) 109 :group 'mail)
110 110
111 (defgroup mh-alias nil 111 (defgroup mh-alias nil
112 "Aliases." 112 "Aliases."
269 :type '(repeat (directory))) 269 :type '(repeat (directory)))
270 270
271 (defcustom mh-variant 'autodetect 271 (defcustom mh-variant 'autodetect
272 "*Specifies the variant used by MH-E. 272 "*Specifies the variant used by MH-E.
273 273
274 The default setting of this option is `Auto-detect' which means that MH-E will 274 The default setting of this option is `Auto-detect' which means
275 automatically choose the first of nmh, MH, or GNU mailutils that it finds in 275 that MH-E will automatically choose the first of nmh, MH, or GNU
276 the directories listed in `mh-path' (which you can customize), `mh-sys-path', 276 mailutils that it finds in the directories listed in
277 and `exec-path'. If, for example, you have both nmh and mailutils installed 277 `mh-path' (which you can customize), `mh-sys-path', and
278 and `mh-variant-in-use' was initialized to nmh but you want to use mailutils, 278 `exec-path'. If, for example, you have both nmh and mailutils
279 then you can set this option to `mailutils'. 279 installed and `mh-variant-in-use' was initialized to nmh but you
280 want to use mailutils, then you can set this option to
281 `mailutils'.
280 282
281 When this variable is changed, MH-E resets `mh-progs', `mh-lib', 283 When this variable is changed, MH-E resets `mh-progs', `mh-lib',
282 `mh-lib-progs', `mh-flists-present-flag', and `mh-variant-in-use' 284 `mh-lib-progs', `mh-flists-present-flag', and `mh-variant-in-use'
283 accordingly." 285 accordingly."
284 :type `(radio 286 :type `(radio
293 295
294 ;;; Aliases (:group 'mh-alias) 296 ;;; Aliases (:group 'mh-alias)
295 297
296 (defcustom mh-alias-completion-ignore-case-flag t 298 (defcustom mh-alias-completion-ignore-case-flag t
297 "*Non-nil means don't consider case significant in MH alias completion. 299 "*Non-nil means don't consider case significant in MH alias completion.
298 As MH ignores case in the aliases, so too does MH-E. However, you may turn 300
299 this option off to make case significant which can be used to segregate 301 As MH ignores case in the aliases, so too does MH-E. However, you
300 completion of your aliases. You might use lowercase for mailing lists and 302 may turn this option off to make case significant which can be
301 uppercase for people." 303 used to segregate completion of your aliases. You might use
304 lowercase for mailing lists and uppercase for people."
302 :type 'boolean 305 :type 'boolean
303 :group 'mh-alias) 306 :group 'mh-alias)
304 307
305 (defcustom mh-alias-expand-aliases-flag nil 308 (defcustom mh-alias-expand-aliases-flag nil
306 "*Non-nil means to expand aliases entered in the minibuffer. 309 "*Non-nil means to expand aliases entered in the minibuffer.
307 In other words, aliases entered in the minibuffer will be expanded to the full 310
308 address in the message draft. By default, this expansion is not performed." 311 In other words, aliases entered in the minibuffer will be
312 expanded to the full address in the message draft. By default,
313 this expansion is not performed."
309 :type 'boolean 314 :type 'boolean
310 :group 'mh-alias) 315 :group 'mh-alias)
311 316
312 (defcustom mh-alias-flash-on-comma t 317 (defcustom mh-alias-flash-on-comma t
313 "*Specify whether to flash address or warn on translation. 318 "*Specify whether to flash address or warn on translation.
314 This option controls the behavior when a [comma] is pressed while entering 319
315 aliases or addresses. The default setting flashes the address associated with 320 This option controls the behavior when a [comma] is pressed while
316 an address in the minibuffer briefly, but does not display a warning if the 321 entering aliases or addresses. The default setting flashes the
317 alias is not found." 322 address associated with an address in the minibuffer briefly, but
323 does not display a warning if the alias is not found."
318 :type '(choice (const :tag "Flash but Don't Warn If No Alias" t) 324 :type '(choice (const :tag "Flash but Don't Warn If No Alias" t)
319 (const :tag "Flash and Warn If No Alias" 1) 325 (const :tag "Flash and Warn If No Alias" 1)
320 (const :tag "Don't Flash Nor Warn If No Alias" nil)) 326 (const :tag "Don't Flash Nor Warn If No Alias" nil))
321 :group 'mh-alias) 327 :group 'mh-alias)
322 328
323 (defcustom mh-alias-insert-file nil 329 (defcustom mh-alias-insert-file nil
324 "*Filename used to store a new MH-E alias. 330 "*Filename used to store a new MH-E alias.
325 The default setting of this option is `Use Aliasfile Profile Component'. This 331
326 option can also hold the name of a file or a list a file names. If this option 332 The default setting of this option is `Use Aliasfile Profile
327 is set to a list of file names, or the `Aliasfile:' profile component contains 333 Component'. This option can also hold the name of a file or a
328 more than one file name, MH-E will prompt for one of them when MH-E adds an 334 list a file names. If this option is set to a list of file names,
329 alias." 335 or the `Aliasfile:' profile component contains more than one file
336 name, MH-E will prompt for one of them when MH-E adds an alias."
330 :type '(choice (const :tag "Use Aliasfile Profile Component" nil) 337 :type '(choice (const :tag "Use Aliasfile Profile Component" nil)
331 (file :tag "Alias File") 338 (file :tag "Alias File")
332 (repeat :tag "List of Alias Files" file)) 339 (repeat :tag "List of Alias Files" file))
333 :group 'mh-alias) 340 :group 'mh-alias)
334 341
335 (defcustom mh-alias-insertion-location 'sorted 342 (defcustom mh-alias-insertion-location 'sorted
336 "Specifies where new aliases are entered in alias files. 343 "Specifies where new aliases are entered in alias files.
337 This option is set to `Alphabetical' by default. If you organize your alias 344
338 file in other ways, then adding aliases to the `Top' or `Bottom' of your alias 345 This option is set to `Alphabetical' by default. If you organize
339 file might be more appropriate." 346 your alias file in other ways, then adding aliases to the `Top'
347 or `Bottom' of your alias file might be more appropriate."
340 :type '(choice (const :tag "Alphabetical" sorted) 348 :type '(choice (const :tag "Alphabetical" sorted)
341 (const :tag "Top" top) 349 (const :tag "Top" top)
342 (const :tag "Bottom" bottom)) 350 (const :tag "Bottom" bottom))
343 :group 'mh-alias) 351 :group 'mh-alias)
344 352
345 (defcustom mh-alias-local-users t 353 (defcustom mh-alias-local-users t
346 "*If on, local users are added to alias completion. 354 "*If on, local users are added to alias completion.
347 355
348 Aliases are created from `/etc/passwd' entries with a user ID larger than 356 Aliases are created from `/etc/passwd' entries with a user ID
349 a magical number, typically 200. This can be a handy tool on a machine where 357 larger than a magical number, typically 200. This can be a handy
350 you and co-workers exchange messages. These aliases have the form 358 tool on a machine where you and co-workers exchange messages.
351 `local.first.last' if a real name is present in the password file. 359 These aliases have the form `local.first.last' if a real name is
352 Otherwise, the alias will have the form `local.login'. 360 present in the password file. Otherwise, the alias will have the
353 361 form `local.login'.
354 If you're on a system with thousands of users you don't know, and the loading 362
355 of local aliases slows MH-E down noticeably, then turn this option off. 363 If you're on a system with thousands of users you don't know, and
356 364 the loading of local aliases slows MH-E down noticeably, then
357 This option also takes a string which is executed to generate the password 365 turn this option off.
358 file. For example, use \"ypcat passwd\" to obtain the NIS password file." 366
367 This option also takes a string which is executed to generate the
368 password file. For example, use \"ypcat passwd\" to obtain the
369 NIS password file."
359 :type '(choice (boolean) (string)) 370 :type '(choice (boolean) (string))
360 :group 'mh-alias) 371 :group 'mh-alias)
361 372
362 (defcustom mh-alias-local-users-prefix "local." 373 (defcustom mh-alias-local-users-prefix "local."
363 "*String prefixed to the real names of users from the password file. 374 "*String prefixed to the real names of users from the password file.
365 376
366 For example, consider the following password file entry: 377 For example, consider the following password file entry:
367 378
368 psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh 379 psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh
369 380
370 The following settings of this option will produce the associated aliases: 381 The following settings of this option will produce the associated
382 aliases:
371 383
372 \"local.\" local.peter.galbraith 384 \"local.\" local.peter.galbraith
373 \"\" peter.galbraith 385 \"\" peter.galbraith
374 Use Login psg 386 Use Login psg
375 387
376 This option has no effect if variable `mh-alias-local-users' is turned off." 388 This option has no effect if variable `mh-alias-local-users' is
389 turned off."
377 :type '(choice (const :tag "Use Login" nil) 390 :type '(choice (const :tag "Use Login" nil)
378 (string)) 391 (string))
379 :group 'mh-alias) 392 :group 'mh-alias)
380 393
381 (defcustom mh-alias-passwd-gecos-comma-separator-flag t 394 (defcustom mh-alias-passwd-gecos-comma-separator-flag t
382 "*Non-nil means the gecos field in the password file uses a comma separator. 395 "*Non-nil means the gecos field in the password file uses a comma separator.
383 In the example in `mh-alias-local-users-prefix', commas are used to separate 396
384 different values within the so-called gecos field. This is a fairly common 397 In the example in `mh-alias-local-users-prefix', commas are used
385 usage. However, in the rare case that the gecos field in your password file is 398 to separate different values within the so-called gecos field.
386 not separated by commas and whose contents may contain commas, you can turn 399 This is a fairly common usage. However, in the rare case that the
387 this option off." 400 gecos field in your password file is not separated by commas and
401 whose contents may contain commas, you can turn this option off."
388 :type 'boolean 402 :type 'boolean
389 :group 'mh-alias) 403 :group 'mh-alias)
390 404
391 405
392 406
393 ;;; Organizing Your Mail with Folders (:group 'mh-folder) 407 ;;; Organizing Your Mail with Folders (:group 'mh-folder)
394 408
395 (defcustom mh-new-messages-folders t 409 (defcustom mh-new-messages-folders t
396 "Folders searched for the \"unseen\" sequence. 410 "Folders searched for the \"unseen\" sequence.
397 411
398 Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to 412 Set this option to \"Inbox\" to search the \"+inbox\" folder or
399 search all of the top level folders. Otherwise, list the folders that should 413 \"All\" to search all of the top level folders. Otherwise, list
400 be searched with the \"Choose Folders\" menu item. 414 the folders that should be searched with the \"Choose Folders\"
415 menu item.
401 416
402 See also `mh-recursive-folders-flag'." 417 See also `mh-recursive-folders-flag'."
403 :type '(choice (const :tag "Inbox" t) 418 :type '(choice (const :tag "Inbox" t)
404 (const :tag "All" nil) 419 (const :tag "All" nil)
405 (repeat :tag "Choose Folders" (string :tag "Folder"))) 420 (repeat :tag "Choose Folders" (string :tag "Folder")))
406 :group 'mh-folder) 421 :group 'mh-folder)
407 422
408 (defcustom mh-ticked-messages-folders t 423 (defcustom mh-ticked-messages-folders t
409 "Folders searched for `mh-tick-seq'. 424 "Folders searched for `mh-tick-seq'.
410 425
411 Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to 426 Set this option to \"Inbox\" to search the \"+inbox\" folder or
412 search all of the top level folders. Otherwise, list the folders that should 427 \"All\" to search all of the top level folders. Otherwise, list
413 be searched with the \"Choose Folders\" menu item. 428 the folders that should be searched with the \"Choose Folders\"
429 menu item.
414 430
415 See also `mh-recursive-folders-flag'." 431 See also `mh-recursive-folders-flag'."
416 :type '(choice (const :tag "Inbox" t) 432 :type '(choice (const :tag "Inbox" t)
417 (const :tag "All" nil) 433 (const :tag "All" nil)
418 (repeat :tag "Choose Folders" (string :tag "Folder"))) 434 (repeat :tag "Choose Folders" (string :tag "Folder")))
419 :group 'mh-folder) 435 :group 'mh-folder)
420 436
421 (defcustom mh-large-folder 200 437 (defcustom mh-large-folder 200
422 "The number of messages that indicates a large folder. 438 "The number of messages that indicates a large folder.
423 If a folder is deemed to be large, that is the number of messages in it exceed 439
424 this value, then confirmation is needed when it is visited. Even when 440 If a folder is deemed to be large, that is the number of messages
425 `mh-show-threads-flag' is non-nil, the folder is not automatically threaded, if 441 in it exceed this value, then confirmation is needed when it is
426 it is large. If set to nil all folders are treated as if they are small." 442 visited. Even when `mh-show-threads-flag' is non-nil, the folder
443 is not automatically threaded, if it is large. If set to nil all
444 folders are treated as if they are small."
427 :type '(choice (const :tag "No Limit") integer) 445 :type '(choice (const :tag "No Limit") integer)
428 :group 'mh-folder) 446 :group 'mh-folder)
429 447
430 (defcustom mh-recenter-summary-flag nil 448 (defcustom mh-recenter-summary-flag nil
431 "*Non-nil means to recenter the summary window. 449 "*Non-nil means to recenter the summary window.
432 If this option is turned on, recenter the summary window when the show window 450
433 is toggled off." 451 If this option is turned on, recenter the summary window when the
452 show window is toggled off."
434 :type 'boolean 453 :type 'boolean
435 :group 'mh-folder) 454 :group 'mh-folder)
436 455
437 (defcustom mh-recursive-folders-flag nil 456 (defcustom mh-recursive-folders-flag nil
438 "*Non-nil means that commands which operate on folders do so recursively." 457 "*Non-nil means that commands which operate on folders do so recursively."
441 460
442 (defcustom mh-sortm-args nil 461 (defcustom mh-sortm-args nil
443 "*Additional arguments for \"sortm\"\\<mh-folder-mode-map>. 462 "*Additional arguments for \"sortm\"\\<mh-folder-mode-map>.
444 463
445 This option is consulted when a prefix argument is used with 464 This option is consulted when a prefix argument is used with
446 \\[mh-sort-folder]. Normally default arguments to \"sortm\" are specified in 465 \\[mh-sort-folder]. Normally default arguments to \"sortm\" are
447 the MH profile. This option may be used to provide an alternate view. For 466 specified in the MH profile. This option may be used to provide
448 example, \"'(\"-nolimit\" \"-textfield\" \"subject\")\" is a useful setting." 467 an alternate view. For example, \"'(\"-nolimit\" \"-textfield\"
468 \"subject\")\" is a useful setting."
449 :type 'string 469 :type 'string
450 :group 'mh-folder) 470 :group 'mh-folder)
451 471
452 472
453 473
454 ;;; Folder Selection (:group 'mh-folder-selection) 474 ;;; Folder Selection (:group 'mh-folder-selection)
455 475
456 (defcustom mh-default-folder-for-message-function nil 476 (defcustom mh-default-folder-for-message-function nil
457 "Function to select a default folder for refiling or `Fcc'. 477 "Function to select a default folder for refiling or `Fcc'.
458 The current buffer is set to the message being refiled with point at the start 478
459 of the message. This function should return the default folder as a string 479 The current buffer is set to the message being refiled with point
460 with a leading `+' sign. It can also return nil so that the last folder name 480 at the start of the message. This function should return the
461 is used as the default, or an empty string to suppress the default entirely." 481 default folder as a string with a leading `+' sign. It can also
482 return nil so that the last folder name is used as the default,
483 or an empty string to suppress the default entirely."
462 :type 'function 484 :type 'function
463 :group 'mh-folder-selection) 485 :group 'mh-folder-selection)
464 486
465 (defcustom mh-default-folder-list nil 487 (defcustom mh-default-folder-list nil
466 "*List of addresses and folders. 488 "*List of addresses and folders.
467 The folder name associated with the first address found in this list is used 489
468 as the default for `mh-refile-msg' and similar functions. Each element in this 490 The folder name associated with the first address found in this
469 list contains a `Check Recipient' item. If this item is turned on, then the 491 list is used as the default for `mh-refile-msg' and similar
470 address is checked against the recipient instead of the sender. This is useful 492 functions. Each element in this list contains a `Check Recipient'
471 for mailing lists. 493 item. If this item is turned on, then the address is checked
472 494 against the recipient instead of the sender. This is useful for
473 See `mh-prompt-for-refile-folder' and `mh-folder-from-address' for more 495 mailing lists.
474 information." 496
497 See `mh-prompt-for-refile-folder' and `mh-folder-from-address'
498 for more information."
475 :type '(repeat (list (regexp :tag "Address") 499 :type '(repeat (list (regexp :tag "Address")
476 (string :tag "Folder") 500 (string :tag "Folder")
477 (boolean :tag "Check Recipient"))) 501 (boolean :tag "Check Recipient")))
478 :group 'mh-folder-selection) 502 :group 'mh-folder-selection)
479 503
480 (defcustom mh-default-folder-must-exist-flag t 504 (defcustom mh-default-folder-must-exist-flag t
481 "*Non-nil means guessed folder name must exist to be used. 505 "*Non-nil means guessed folder name must exist to be used.
482 If the derived folder does not exist, and this option is on, then the last 506
483 folder name used is suggested. This is useful if you get mail from various 507 If the derived folder does not exist, and this option is on, then
484 people for whom you have an alias, but file them all in the same project 508 the last folder name used is suggested. This is useful if you get
485 folder. 509 mail from various people for whom you have an alias, but file
486 510 them all in the same project folder.
487 See `mh-prompt-for-refile-folder' and `mh-folder-from-address' for more 511
488 information." 512 See `mh-prompt-for-refile-folder' and `mh-folder-from-address'
513 for more information."
489 :type 'boolean 514 :type 'boolean
490 :group 'mh-folder-selection) 515 :group 'mh-folder-selection)
491 516
492 (defcustom mh-default-folder-prefix "" 517 (defcustom mh-default-folder-prefix ""
493 "*Prefix used for folder names generated from aliases. 518 "*Prefix used for folder names generated from aliases.
494 The prefix is used to prevent clutter in your mail directory. 519 The prefix is used to prevent clutter in your mail directory.
495 520
496 See `mh-prompt-for-refile-folder' and `mh-folder-from-address' for more 521 See `mh-prompt-for-refile-folder' and `mh-folder-from-address'
497 information." 522 for more information."
498 :type 'string 523 :type 'string
499 :group 'mh-folder-selection) 524 :group 'mh-folder-selection)
500 525
501 526
502 527
503 ;;; Identities (:group 'mh-identity) 528 ;;; Identities (:group 'mh-identity)
504 529
505 (defcustom mh-identity-list nil 530 (defcustom mh-identity-list nil
506 "*List of identities. 531 "*List of identities.
507 532
508 To customize this option, click on the `INS' button and enter a label such as 533 To customize this option, click on the `INS' button and enter a label
509 `Home' or `Work'. Then click on the `INS' button with the label `Add at least 534 such as `Home' or `Work'. Then click on the `INS' button with the
510 one item below'. Then choose one of the items in the `Value Menu'. 535 label `Add at least one item below'. Then choose one of the items in
511 536 the `Value Menu'.
512 You can specify an alternate `From:' header field using the `From Field' menu 537
513 item. You must include a valid email address. A standard format is `First Last 538 You can specify an alternate `From:' header field using the `From
514 <login@@host.domain>'. If you use an initial with a period, then you must 539 Field' menu item. You must include a valid email address. A standard
515 quote your name as in `\"First I. Last\" <login@@host.domain>'. People usually 540 format is `First Last <login@@host.domain>'. If you use an initial
516 list the name of the company where they work using the `Organization Field' 541 with a period, then you must quote your name as in `\"First I. Last\"
517 menu item. Set any arbitrary header field and value in the `Other Field' menu 542 <login@@host.domain>'. People usually list the name of the company
518 item. Unless the header field is a standard one, precede the name of your 543 where they work using the `Organization Field' menu item. Set any
544 arbitrary header field and value in the `Other Field' menu item.
545 Unless the header field is a standard one, precede the name of your
519 field's label with `X-', as in `X-Fruit-of-the-Day:'. The value of 546 field's label with `X-', as in `X-Fruit-of-the-Day:'. The value of
520 `Attribution Verb' overrides the setting of 547 `Attribution Verb' overrides the setting of
521 `mh-extract-from-attribution-verb'. Set your signature with the `Signature' 548 `mh-extract-from-attribution-verb'. Set your signature with the
522 menu item. You can specify the contents of `mh-signature-file-name', a file, 549 `Signature' menu item. You can specify the contents of
523 or a function. Specify a different key to sign or encrypt messages with the 550 `mh-signature-file-name', a file, or a function. Specify a different
524 `GPG Key ID' menu item. 551 key to sign or encrypt messages with the `GPG Key ID' menu item.
525 552
526 You can select the identities you have added via the menu called `Identity' in 553 You can select the identities you have added via the menu called
527 the MH-Letter buffer. You can also use \\[mh-insert-identity]. To clear the 554 `Identity' in the MH-Letter buffer. You can also use
528 fields and signature added by the identity, select the `None' identity. 555 \\[mh-insert-identity]. To clear the fields and signature added by the
529 556 identity, select the `None' identity.
530 The `Identity' menu contains two other items to save you from having to set 557
531 the identity on every message. The menu item `Set Default for Session' can be 558 The `Identity' menu contains two other items to save you from having
532 used to set the default identity to the current identity until you exit Emacs. 559 to set the identity on every message. The menu item `Set Default for
533 The menu item `Save as Default' sets the option `mh-identity-default' to the 560 Session' can be used to set the default identity to the current
534 current identity setting. You can also customize the `mh-identity-default' 561 identity until you exit Emacs. The menu item `Save as Default' sets
535 option in the usual fashion." 562 the option `mh-identity-default' to the current identity setting. You
563 can also customize the `mh-identity-default' option in the usual
564 fashion."
536 :type '(repeat (list :tag "" 565 :type '(repeat (list :tag ""
537 (string :tag "Label") 566 (string :tag "Label")
538 (repeat :tag "Add at least one item below" 567 (repeat :tag "Add at least one item below"
539 (choice 568 (choice
540 (cons :tag "From Field" 569 (cons :tag "From Field"
565 :group 'mh-identity) 594 :group 'mh-identity)
566 595
567 (defcustom mh-auto-fields-list nil 596 (defcustom mh-auto-fields-list nil
568 "List of recipients for which header lines are automatically inserted. 597 "List of recipients for which header lines are automatically inserted.
569 598
570 This option can be used to set the identity depending on the recipient. To 599 This option can be used to set the identity depending on the
571 customize this option, click on the `INS' button and enter a regular 600 recipient. To customize this option, click on the `INS' button and
572 expression for the recipient's address. Click on the `INS' button with the 601 enter a regular expression for the recipient's address. Click on the
573 `Add at least one item below' label. Then choose one of the items in the 602 `INS' button with the `Add at least one item below' label. Then choose
574 `Value Menu'. 603 one of the items in the `Value Menu'.
575 604
576 The `Identity' menu item is used to select an identity from those configured 605 The `Identity' menu item is used to select an identity from those
577 in `mh-identity-list'. All of the information for that identity will be added 606 configured in `mh-identity-list'. All of the information for that
578 if the recipient matches. The `Fcc Field' menu item is used to select a folder 607 identity will be added if the recipient matches. The `Fcc Field' menu
579 that is used in the `Fcc:' header. When you send the message, MH will put a 608 item is used to select a folder that is used in the `Fcc:' header.
580 copy of your message in this folder. The `Mail-Followup-To Field' menu item is 609 When you send the message, MH will put a copy of your message in this
581 used to insert an `Mail-Followup-To:' header field with the recipients you 610 folder. The `Mail-Followup-To Field' menu item is used to insert an
582 provide. If the recipient's mail user agent supports this header field (as nmh 611 `Mail-Followup-To:' header field with the recipients you provide. If
583 does), then their replies will go to the addresses listed. This is useful if 612 the recipient's mail user agent supports this header field (as nmh
584 their replies go both to the list and to you and you don't have a mechanism to 613 does), then their replies will go to the addresses listed. This is
585 suppress duplicates. If you reply to someone not on the list, you must either 614 useful if their replies go both to the list and to you and you don't
586 remove the `Mail-Followup-To:' field, or ensure the recipient is also listed 615 have a mechanism to suppress duplicates. If you reply to someone not
587 there so that he receives replies to your reply. Other header fields may be 616 on the list, you must either remove the `Mail-Followup-To:' field, or
588 added using the `Other Field' menu item. 617 ensure the recipient is also listed there so that he receives replies
589 618 to your reply. Other header fields may be added using the `Other
590 These fields can only be added after the recipient is known. Once the header 619 Field' menu item.
591 contains one or more recipients, run the \\[mh-insert-auto-fields] command or 620
592 choose the `Identity -> Insert Auto Fields' menu item to insert these fields 621 These fields can only be added after the recipient is known. Once the
593 manually. However, you can just send the message and the fields will be added 622 header contains one or more recipients, run the
594 automatically. You are given a chance to see these fields and to confirm them 623 \\[mh-insert-auto-fields] command or choose the `Identity -> Insert
595 before the message is actually sent. You can do away with this confirmation by 624 Auto Fields' menu item to insert these fields manually. However, you
596 turning off the option `mh-auto-fields-prompt-flag'. 625 can just send the message and the fields will be added automatically.
597 626 You are given a chance to see these fields and to confirm them before
598 You should avoid using the same header field in `mh-auto-fields-list' and 627 the message is actually sent. You can do away with this confirmation
599 `mh-identity-list' definitions that may apply to the same message as the 628 by turning off the option `mh-auto-fields-prompt-flag'.
600 result is undefined." 629
630 You should avoid using the same header field in `mh-auto-fields-list'
631 and `mh-identity-list' definitions that may apply to the same message
632 as the result is undefined."
601 :type `(repeat 633 :type `(repeat
602 (list :tag "" 634 (list :tag ""
603 (string :tag "Recipient") 635 (string :tag "Recipient")
604 (repeat :tag "Add at least one item below" 636 (repeat :tag "Add at least one item below"
605 (choice 637 (choice
643 (":attribution-verb" . mh-identity-handler-attribution-verb) 675 (":attribution-verb" . mh-identity-handler-attribution-verb)
644 (":signature" . mh-identity-handler-signature) 676 (":signature" . mh-identity-handler-signature)
645 (":pgg-default-user-id" . mh-identity-handler-gpg-identity)) 677 (":pgg-default-user-id" . mh-identity-handler-gpg-identity))
646 "Handler functions for fields in `mh-identity-list'. 678 "Handler functions for fields in `mh-identity-list'.
647 679
648 This option is used to change the way that fields, signatures, and 680 This option is used to change the way that fields, signatures,
649 attributions in `mh-identity-list' are added. To customize 681 and attributions in `mh-identity-list' are added. To customize
650 `mh-identity-handlers', replace the name of an existing handler function 682 `mh-identity-handlers', replace the name of an existing handler
651 associated with the field you want to change with the name of a function you 683 function associated with the field you want to change with the
652 have written. You can also click on an `INS' button and insert a field of your 684 name of a function you have written. You can also click on an
653 choice and the name of the function you have written to handle it. 685 `INS' button and insert a field of your choice and the name of
686 the function you have written to handle it.
654 687
655 The `Field' field can be any field that you've used in your 688 The `Field' field can be any field that you've used in your
656 `mh-identity-list'. The special fields `:attribution-verb', `:signature', or 689 `mh-identity-list'. The special fields `:attribution-verb',
657 `:pgg-default-user-id' are used for the `mh-identity-list' choices 690 `:signature', or `:pgg-default-user-id' are used for the
658 `Attribution Verb', `Signature', and `GPG Key ID' respectively. 691 `mh-identity-list' choices `Attribution Verb', `Signature', and
659 692 `GPG Key ID' respectively.
660 The handler associated with the `:default' field is used when no other field 693
661 matches. 694 The handler associated with the `:default' field is used when no
662 695 other field matches.
663 The handler functions are passed two or three arguments: the FIELD itself (for 696
664 example, `From'), or one of the special fields (for example, `:signature'), 697 The handler functions are passed two or three arguments: the
665 and the ACTION `'remove' or `'add'. If the action is `'add', an additional 698 FIELD itself (for example, `From'), or one of the special
666 argument containing the VALUE for the field is given." 699 fields (for example, `:signature'), and the ACTION `'remove' or
700 `'add'. If the action is `'add', an additional argument
701 containing the VALUE for the field is given."
667 :type '(repeat (cons (string :tag "Field") function)) 702 :type '(repeat (cons (string :tag "Field") function))
668 :group 'mh-identity) 703 :group 'mh-identity)
669 704
670 705
671 706
672 ;;; Incorporating Your Mail (:group 'mh-inc) 707 ;;; Incorporating Your Mail (:group 'mh-inc)
673 708
674 (defcustom mh-inc-prog "inc" 709 (defcustom mh-inc-prog "inc"
675 "*Program to incorporate new mail into a folder. 710 "*Program to incorporate new mail into a folder.
676 711
677 This program generates a one-line summary for each of the new messages. Unless 712 This program generates a one-line summary for each of the new
678 it is an absolute pathname, the file is assumed to be in the `mh-progs' 713 messages. Unless it is an absolute pathname, the file is assumed
679 directory. You may also link a file to `inc' that uses a different format. 714 to be in the `mh-progs' directory. You may also link a file to
680 You'll then need to modify several scan line format variables appropriately." 715 `inc' that uses a different format. You'll then need to modify
716 several scan line format variables appropriately."
681 :type 'string 717 :type 'string
682 :group 'mh-inc) 718 :group 'mh-inc)
683 719
684 (defcustom mh-inc-spool-list nil 720 (defcustom mh-inc-spool-list nil
685 "*Alternate spool files. 721 "*Alternate spool files.
686 722
687 You can use the `mh-inc-spool-list' variable to direct MH-E to retrieve mail 723 You can use the `mh-inc-spool-list' variable to direct MH-E to
688 from arbitrary spool files other than your system mailbox, file it in folders 724 retrieve mail from arbitrary spool files other than your system
689 other than your `+inbox', and assign key bindings to incorporate this mail. 725 mailbox, file it in folders other than your `+inbox', and assign
690 726 key bindings to incorporate this mail.
691 Suppose you are subscribed to the `mh-e-devel' mailing list and you use 727
692 `procmail' to filter this mail into `~/mail/mh-e' with the following recipe in 728 Suppose you are subscribed to the `mh-e-devel' mailing list and
693 `.procmailrc': 729 you use `procmail' to filter this mail into `~/mail/mh-e' with
730 the following recipe in `.procmailrc':
694 731
695 MAILDIR=$HOME/mail 732 MAILDIR=$HOME/mail
696 :0: 733 :0:
697 * ^From mh-e-devel-admin@stop.mail-abuse.org 734 * ^From mh-e-devel-admin@stop.mail-abuse.org
698 mh-e 735 mh-e
699 736
700 In order to incorporate `~/mail/mh-e' into `+mh-e' with an `I m' 737 In order to incorporate `~/mail/mh-e' into `+mh-e' with an `I m'
701 \(`mh-inc-spool-mh-e'\) command, customize this option, and click on the `INS' 738 \(`mh-inc-spool-mh-e'\) command, customize this option, and click
702 button. Enter a `Spool File' of `~/mail/mh-e', a `Folder' of `mh-e', and a 739 on the `INS' button. Enter a `Spool File' of `~/mail/mh-e', a
703 `Key Binding' of `m'. 740 `Folder' of `mh-e', and a `Key Binding' of `m'.
704 741
705 You can use `xbuffy' to automate the incorporation of this mail using the 742 You can use `xbuffy' to automate the incorporation of this mail
706 `gnudoit' command in the `gnuserv' package as follows: 743 using the `gnudoit' command in the `gnuserv' package as follows:
707 744
708 box ~/mail/mh-e 745 box ~/mail/mh-e
709 title mh-e 746 title mh-e
710 origMode 747 origMode
711 polltime 10 748 polltime 10
721 758
722 ;;; Searching (:group 'mh-index) 759 ;;; Searching (:group 'mh-index)
723 760
724 (defcustom mh-index-program nil 761 (defcustom mh-index-program nil
725 "Indexing program that MH-E shall use. 762 "Indexing program that MH-E shall use.
726 The default setting of this option is `Auto-detect' which means that MH-E will 763
727 automatically choose one of swish++, swish-e, mairix, namazu, pick and grep in 764 The default setting of this option is `Auto-detect' which means
728 that order. If, for example, you have both swish++ and mairix installed and 765 that MH-E will automatically choose one of swish++, swish-e,
729 you want to use mairix, then you can set this option to `mairix'. 766 mairix, namazu, pick and grep in that order. If, for example, you
730 767 have both swish++ and mairix installed and you want to use
731 More information about setting up an indexing program to use with MH-E can be 768 mairix, then you can set this option to `mairix'.
732 found in the documentation of `mh-index-search'." 769
770 More information about setting up an indexing program to use with
771 MH-E can be found in the documentation of `mh-index-search'."
733 :type '(choice (const :tag "Auto-detect" nil) 772 :type '(choice (const :tag "Auto-detect" nil)
734 (const :tag "swish++" swish++) 773 (const :tag "swish++" swish++)
735 (const :tag "swish-e" swish) 774 (const :tag "swish-e" swish)
736 (const :tag "mairix" mairix) 775 (const :tag "mairix" mairix)
737 (const :tag "namazu" namazu) 776 (const :tag "namazu" namazu)
750 (defvar mh-junk-function-alist 789 (defvar mh-junk-function-alist
751 '((spamassassin mh-spamassassin-blacklist mh-spamassassin-whitelist) 790 '((spamassassin mh-spamassassin-blacklist mh-spamassassin-whitelist)
752 (bogofilter mh-bogofilter-blacklist mh-bogofilter-whitelist) 791 (bogofilter mh-bogofilter-blacklist mh-bogofilter-whitelist)
753 (spamprobe mh-spamprobe-blacklist mh-spamprobe-whitelist)) 792 (spamprobe mh-spamprobe-blacklist mh-spamprobe-whitelist))
754 "Available choices of spam programs to use. 793 "Available choices of spam programs to use.
755 This is an alist. For each element there are functions that blacklist a message 794
756 as spam and whitelist a message incorrectly classified as spam.") 795 This is an alist. For each element there are functions that
796 blacklist a message as spam and whitelist a message incorrectly
797 classified as spam.")
757 798
758 (defun mh-junk-choose (symbol value) 799 (defun mh-junk-choose (symbol value)
759 "Choose spam program to use. 800 "Choose spam program to use.
760 The function is always called with SYMBOL bound to `mh-junk-program' and VALUE 801
761 bound to the new value of `mh-junk-program'. The function sets the variable 802 The function is always called with SYMBOL bound to
803 `mh-junk-program' and VALUE bound to the new value of
804 `mh-junk-program'. The function sets the variable
762 `mh-junk-choice' in addition to `mh-junk-program'." 805 `mh-junk-choice' in addition to `mh-junk-program'."
763 (set symbol value) 806 (set symbol value)
764 (setq mh-junk-choice 807 (setq mh-junk-choice
765 (or value 808 (or value
766 (loop for element in mh-junk-function-alist 809 (loop for element in mh-junk-function-alist
768 finally return (car element))))) 811 finally return (car element)))))
769 812
770 ;; User customizable variables 813 ;; User customizable variables
771 (defcustom mh-junk-background nil 814 (defcustom mh-junk-background nil
772 "If on, spam programs are run in background. 815 "If on, spam programs are run in background.
773 By default, the programs are run in the foreground, but this can be slow when 816
774 junking large numbers of messages. If you have enough memory or don't junk 817 By default, the programs are run in the foreground, but this can
775 that many messages at the same time, you might try turning on this option." 818 be slow when junking large numbers of messages. If you have
819 enough memory or don't junk that many messages at the same time,
820 you might try turning on this option."
776 :type '(choice (const :tag "Off" nil) 821 :type '(choice (const :tag "Off" nil)
777 (const :tag "On" 0)) 822 (const :tag "On" 0))
778 :group 'mh-junk) 823 :group 'mh-junk)
779 824
780 (defcustom mh-junk-disposition nil 825 (defcustom mh-junk-disposition nil
784 :group 'mh-junk) 829 :group 'mh-junk)
785 830
786 (defcustom mh-junk-program nil 831 (defcustom mh-junk-program nil
787 "Spam program that MH-E should use. 832 "Spam program that MH-E should use.
788 833
789 The default setting of this option is \"Auto-detect\" which means that MH-E 834 The default setting of this option is \"Auto-detect\" which means
790 will automatically choose one of SpamAssassin, bogofilter, or SpamProbe in 835 that MH-E will automatically choose one of SpamAssassin,
791 that order. If, for example, you have both SpamAssassin and bogofilter 836 bogofilter, or SpamProbe in that order. If, for example, you have
792 installed and you want to use bogofilter, then you can set this option to 837 both SpamAssassin and bogofilter installed and you want to use
793 \"Bogofilter\"." 838 bogofilter, then you can set this option to \"Bogofilter\"."
794 :type '(choice (const :tag "Auto-detect" nil) 839 :type '(choice (const :tag "Auto-detect" nil)
795 (const :tag "SpamAssassin" spamassassin) 840 (const :tag "SpamAssassin" spamassassin)
796 (const :tag "Bogofilter" bogofilter) 841 (const :tag "Bogofilter" bogofilter)
797 (const :tag "SpamProbe" spamprobe)) 842 (const :tag "SpamProbe" spamprobe))
798 :set 'mh-junk-choose 843 :set 'mh-junk-choose
802 847
803 ;;; Editing a Draft (:group 'mh-letter) 848 ;;; Editing a Draft (:group 'mh-letter)
804 849
805 (defcustom mh-compose-insertion (if (locate-library "mml") 'mml 'mh) 850 (defcustom mh-compose-insertion (if (locate-library "mml") 'mml 'mh)
806 "Type of tags used when composing MIME messages. 851 "Type of tags used when composing MIME messages.
807 In addition to MH-style directives, MH-E also supports MML (MIME Meta 852
808 Language) tags. (see Info node `(emacs-mime)Composing'). This option can be 853 In addition to MH-style directives, MH-E also supports MML (MIME
809 used to choose between them. By default, this option is set to \"MML\" if it 854 Meta Language) tags. (see Info node `(emacs-mime)Composing').
810 is supported since it provides a lot more functionality. This option can also 855 This option can be used to choose between them. By default, this
811 be set to \"MH\" if MH-style directives are preferred." 856 option is set to \"MML\" if it is supported since it provides a
857 lot more functionality. This option can also be set to \"MH\" if
858 MH-style directives are preferred."
812 :type '(choice (const :tag "MML" mml) 859 :type '(choice (const :tag "MML" mml)
813 (const :tag "MH" mh)) 860 (const :tag "MH" mh))
814 :group 'mh-letter) 861 :group 'mh-letter)
815 862
816 (defcustom mh-compose-skipped-header-fields 863 (defcustom mh-compose-skipped-header-fields
825 :type 'boolean 872 :type 'boolean
826 :group 'mh-letter) 873 :group 'mh-letter)
827 874
828 (defcustom mh-delete-yanked-msg-window-flag nil 875 (defcustom mh-delete-yanked-msg-window-flag nil
829 "*Non-nil means delete any window displaying the message. 876 "*Non-nil means delete any window displaying the message.
830 This deletes the window containing the original message after yanking it with 877
831 \\<mh-letter-mode-map>\\[mh-yank-cur-msg] to make more room on your screen for 878 This deletes the window containing the original message after
832 your reply." 879 yanking it with \\<mh-letter-mode-map>\\[mh-yank-cur-msg] to make
880 more room on your screen for your reply."
833 :type 'boolean 881 :type 'boolean
834 :group 'mh-letter) 882 :group 'mh-letter)
835 883
836 (defcustom mh-extract-from-attribution-verb "wrote:" 884 (defcustom mh-extract-from-attribution-verb "wrote:"
837 "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. 885 "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
838 The attribution consists of the sender's name and email address followed by 886
839 the content of this option. This option can be set to \"wrote:\", \"a 887 The attribution consists of the sender's name and email address
840 écrit:\", and \"schrieb:\". You can also use the \"Custom String\" menu item 888 followed by the content of this option. This option can be set to
841 to enter your own verb." 889 \"wrote:\", \"a écrit:\", and \"schrieb:\". You can also use the
890 \"Custom String\" menu item to enter your own verb."
842 :type '(choice (const "wrote:") 891 :type '(choice (const "wrote:")
843 (const "a écrit:") 892 (const "a écrit:")
844 (const "schrieb:") 893 (const "schrieb:")
845 (string :tag "Custom String")) 894 (string :tag "Custom String"))
846 :group 'mh-letter) 895 :group 'mh-letter)
847 896
848 (defcustom mh-ins-buf-prefix "> " 897 (defcustom mh-ins-buf-prefix "> "
849 "*String to put before each line of a yanked or inserted message. 898 "*String to put before each line of a yanked or inserted message.
850 The prefix \"> \" is the default setting of this option. I suggest that you 899
851 not modify this option since it is used by many mailers and news readers: 900 The prefix \"> \" is the default setting of this option. I
852 messages are far easier to read if several included messages have all been 901 suggest that you not modify this option since it is used by many
853 indented by the same string. 902 mailers and news readers: messages are far easier to read if
854 903 several included messages have all been indented by the same
855 This prefix is not inserted if you use one of the supercite flavors of 904 string.
856 `mh-yank-behavior' or you have added a `mail-citation-hook'." 905
906 This prefix is not inserted if you use one of the supercite
907 flavors of `mh-yank-behavior' or you have added a
908 `mail-citation-hook'."
857 :type 'string 909 :type 'string
858 :group 'mh-letter) 910 :group 'mh-letter)
859 911
860 (defcustom mh-letter-complete-function 'ispell-complete-word 912 (defcustom mh-letter-complete-function 'ispell-complete-word
861 "*Function to call when completing outside of address or folder fields. 913 "*Function to call when completing outside of address or folder fields.
862 In the body of the message, \\<mh-letter-mode-map>\\[mh-letter-complete] runs 914
863 this function, which is set to \"ispell-complete-word\" by default." 915 In the body of the message,
916 \\<mh-letter-mode-map>\\[mh-letter-complete] runs this function,
917 which is set to \"ispell-complete-word\" by default."
864 :type '(choice function (const nil)) 918 :type '(choice function (const nil))
865 :group 'mh-letter) 919 :group 'mh-letter)
866 920
867 (defcustom mh-letter-fill-column 72 921 (defcustom mh-letter-fill-column 72
868 "*Fill column to use in MH Letter mode. 922 "*Fill column to use in MH Letter mode.
869 By default, this option is 72 to allow others to quote your message without 923
870 line wrapping." 924 By default, this option is 72 to allow others to quote your
925 message without line wrapping."
871 :type 'integer 926 :type 'integer
872 :group 'mh-letter) 927 :group 'mh-letter)
873 928
874 (defcustom mh-mml-method-default (if mh-pgp-support-flag "pgpmime" "none") 929 (defcustom mh-mml-method-default (if mh-pgp-support-flag "pgpmime" "none")
875 "Default method to use in security tags. 930 "Default method to use in security tags.
876 This option is used to select between a variety of mail security mechanisms. 931
877 The default is \"PGP (MIME)\" if it is supported\; otherwise, the default is 932 This option is used to select between a variety of mail security
878 \"None\". Other mechanisms include vanilla \"PGP\" and \"S/MIME\". 933 mechanisms. The default is \"PGP (MIME)\" if it is supported\;
879 934 otherwise, the default is \"None\". Other mechanisms include
880 The `pgg' customization group may have some settings which may interest you 935 vanilla \"PGP\" and \"S/MIME\".
881 \(see Info node `(pgg)'). 936
882 937 The `pgg' customization group may have some settings which may
883 In particular, I set the option `pgg-encrypt-for-me' to t so that all messages 938 interest you \(see Info node `(pgg)').
884 I encrypt are encrypted with my public key as well. If you keep a copy of all 939
885 of your outgoing mail with a \"Fcc:\" header field, this setting is vital so 940 In particular, I set the option `pgg-encrypt-for-me' to t so that all
886 that you can read the mail you write!" 941 messages I encrypt are encrypted with my public key as well. If you
942 keep a copy of all of your outgoing mail with a \"Fcc:\" header field,
943 this setting is vital so that you can read the mail you write!"
887 :type '(choice (const :tag "PGP (MIME)" "pgpmime") 944 :type '(choice (const :tag "PGP (MIME)" "pgpmime")
888 (const :tag "PGP" "pgp") 945 (const :tag "PGP" "pgp")
889 (const :tag "S/MIME" "smime") 946 (const :tag "S/MIME" "smime")
890 (const :tag "None" "none")) 947 (const :tag "None" "none"))
891 :group 'mh-letter) 948 :group 'mh-letter)
912 :type 'file 969 :type 'file
913 :group 'mh-letter) 970 :group 'mh-letter)
914 971
915 (defcustom mh-signature-separator-flag t 972 (defcustom mh-signature-separator-flag t
916 "*Non-nil means a signature separator should be inserted. 973 "*Non-nil means a signature separator should be inserted.
917 It is not recommended that you change this option since various mail user 974
918 agents, including MH-E, use the separator to present the signature 975 It is not recommended that you change this option since various
919 differently, and to suppress the signature when replying or yanking a letter 976 mail user agents, including MH-E, use the separator to present
920 into a draft." 977 the signature differently, and to suppress the signature when
978 replying or yanking a letter into a draft."
921 :type 'boolean 979 :type 'boolean
922 :group 'mh-letter) 980 :group 'mh-letter)
923 981
924 (defcustom mh-x-face-file "~/.face" 982 (defcustom mh-x-face-file "~/.face"
925 "*File containing face header field to insert in outgoing mail. 983 "*File containing face header field to insert in outgoing mail.
926 984
927 If the file starts with either of the strings \"X-Face:\", \"Face:\" or 985 If the file starts with either of the strings \"X-Face:\", \"Face:\"
928 \"X-Image-URL:\" then the contents are added to the message header verbatim. 986 or \"X-Image-URL:\" then the contents are added to the message header
929 Otherwise it is assumed that the file contains the value of the \"X-Face:\" 987 verbatim. Otherwise it is assumed that the file contains the value of
930 header field. 988 the \"X-Face:\" header field.
931 989
932 The \"X-Face:\" header field, which is a low-resolution, black 990 The \"X-Face:\" header field, which is a low-resolution, black and
933 and white image, can be generated using the \"compface\" command 991 white image, can be generated using the \"compface\" command (see URL
934 \(see URL `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z'). 992 `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z'). The
935 The \"Online X-Face Converter\" is a useful resource for quick 993 \"Online X-Face Converter\" is a useful resource for quick conversion
936 conversion of images into \"X-Face:\" header fields (see URL 994 of images into \"X-Face:\" header fields (see URL
937 `http://www.dairiki.org/xface/'). 995 `http://www.dairiki.org/xface/').
938 996
939 Use the \"make-face\" script to convert a JPEG image to the 997 Use the \"make-face\" script to convert a JPEG image to the higher
940 higher resolution, color, \"Face:\" header field (see URL 998 resolution, color, \"Face:\" header field (see URL
941 `http://quimby.gnus.org/circus/face/make-face'). 999 `http://quimby.gnus.org/circus/face/make-face').
942 1000
943 The URL of any image can be used for the \"X-Image-URL:\" field and no 1001 The URL of any image can be used for the \"X-Image-URL:\" field and no
944 processing of the image is required. 1002 processing of the image is required.
945 1003
946 To prevent the setting of any of these header fields, either set 1004 To prevent the setting of any of these header fields, either set
947 `mh-x-face-file' to nil, or simply ensure that the file defined by this option 1005 `mh-x-face-file' to nil, or simply ensure that the file defined by
948 doesn't exist." 1006 this option doesn't exist."
949 :type 'file 1007 :type 'file
950 :group 'mh-letter) 1008 :group 'mh-letter)
951 1009
952 (defcustom mh-yank-behavior 'attribution 1010 (defcustom mh-yank-behavior 'attribution
953 "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. 1011 "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
954 1012
955 To include the entire message, including the entire header, use \"Body and 1013 To include the entire message, including the entire header, use \"Body
956 Header\". Use \"Body\" to yank just the body without the header. To yank only 1014 and Header\". Use \"Body\" to yank just the body without the header.
957 the portion of the message following the point, set this option to \"Below 1015 To yank only the portion of the message following the point, set this
958 Point\". 1016 option to \"Below Point\".
959 1017
960 Choose \"Invoke supercite\" to pass the entire message and header through 1018 Choose \"Invoke supercite\" to pass the entire message and header
961 supercite. 1019 through supercite.
962 1020
963 If the \"Body With Attribution\" setting is used, then the message minus the 1021 If the \"Body With Attribution\" setting is used, then the message
964 header is yanked and a simple attribution line is added at the top using the 1022 minus the header is yanked and a simple attribution line is added at
965 value of the `mh-extract-from-attribution-verb' option. This is the default. 1023 the top using the value of the `mh-extract-from-attribution-verb'
966 1024 option. This is the default.
967 If the \"Invoke supercite\" or \"Body With Attribution\" settings are used, 1025
968 the \"-noformat\" argument is passed to the \"repl\" program to override a 1026 If the \"Invoke supercite\" or \"Body With Attribution\" settings are
969 \"-filter\" or \"-format\" argument. These settings also have 1027 used, the \"-noformat\" argument is passed to the \"repl\" program to
970 \"Automatically\" variants that perform the action automatically when you 1028 override a \"-filter\" or \"-format\" argument. These settings also
971 reply so that you don't need to use \\[mh-yank-cur-msg] at all. Note that this 1029 have \"Automatically\" variants that perform the action automatically
972 automatic action is only performed if the show buffer matches the message 1030 when you reply so that you don't need to use \\[mh-yank-cur-msg] at
973 being replied to. People who use the automatic variants tend to turn on the 1031 all. Note that this automatic action is only performed if the show
974 `mh-delete-yanked-msg-window-flag' option as well so that the show window is 1032 buffer matches the message being replied to. People who use the
975 never displayed. 1033 automatic variants tend to turn on the
976 1034 `mh-delete-yanked-msg-window-flag' option as well so that the show
977 If the show buffer has a region, the `mh-yank-behavior' option is ignored 1035 window is never displayed.
978 unless its value is one of Attribution variants in which case the attribution 1036
979 is added to the yanked region. 1037 If the show buffer has a region, the `mh-yank-behavior' option is
1038 ignored unless its value is one of Attribution variants in which case
1039 the attribution is added to the yanked region.
980 1040
981 If this option is set to one of the supercite flavors, the hook 1041 If this option is set to one of the supercite flavors, the hook
982 `mail-citation-hook' is ignored and `mh-ins-buf-prefix' is not inserted." 1042 `mail-citation-hook' is ignored and `mh-ins-buf-prefix' is not
1043 inserted."
983 :type '(choice (const :tag "Body and Header" t) 1044 :type '(choice (const :tag "Body and Header" t)
984 (const :tag "Body" body) 1045 (const :tag "Body" body)
985 (const :tag "Below Point" nil) 1046 (const :tag "Below Point" nil)
986 (const :tag "Invoke supercite" supercite) 1047 (const :tag "Invoke supercite" supercite)
987 (const :tag "Invoke supercite, Automatically" autosupercite) 1048 (const :tag "Invoke supercite, Automatically" autosupercite)
994 1055
995 ;;; Ranges (:group 'mh-ranges) 1056 ;;; Ranges (:group 'mh-ranges)
996 1057
997 (defcustom mh-interpret-number-as-range-flag t 1058 (defcustom mh-interpret-number-as-range-flag t
998 "*Non-nil means interpret a number as a range. 1059 "*Non-nil means interpret a number as a range.
999 Since one of the most frequent ranges used is \"last:N\", MH-E will interpret 1060
1000 input such as \"200\" as \"last:200\" if this option is on (which is the 1061 Since one of the most frequent ranges used is \"last:N\", MH-E
1001 default). If you need to scan just the message 200, then use the range 1062 will interpret input such as \"200\" as \"last:200\" if this
1002 \"200:200\"." 1063 option is on (which is the default). If you need to scan just the
1064 message 200, then use the range \"200:200\"."
1003 :type 'boolean 1065 :type 'boolean
1004 :group 'mh-ranges) 1066 :group 'mh-ranges)
1005 1067
1006 1068
1007 1069
1010 ;; Forward definition to avoid compiler and runtime error. 1072 ;; Forward definition to avoid compiler and runtime error.
1011 (defvar mh-scan-format-file t) 1073 (defvar mh-scan-format-file t)
1012 1074
1013 (defun mh-adaptive-cmd-note-flag-check (symbol value) 1075 (defun mh-adaptive-cmd-note-flag-check (symbol value)
1014 "Check if desired setting is legal. 1076 "Check if desired setting is legal.
1015 Throw an error if user tries to turn on `mh-adaptive-cmd-note-flag' when 1077 Throw an error if user tries to turn on
1016 `mh-scan-format-file' isn't t. Otherwise, set SYMBOL to VALUE." 1078 `mh-adaptive-cmd-note-flag' when `mh-scan-format-file' isn't t.
1079 Otherwise, set SYMBOL to VALUE."
1017 (if (and value 1080 (if (and value
1018 (not (eq mh-scan-format-file t))) 1081 (not (eq mh-scan-format-file t)))
1019 (error "%s %s" "Can't turn on unless mh-scan-format-file" 1082 (error "%s %s" "Can't turn on unless mh-scan-format-file"
1020 "is set to \"Use MH-E scan Format\"") 1083 "is set to \"Use MH-E scan Format\"")
1021 (set-default symbol value))) 1084 (set-default symbol value)))
1022 1085
1023 (defun mh-scan-format-file-check (symbol value) 1086 (defun mh-scan-format-file-check (symbol value)
1024 "Check if desired setting is legal. 1087 "Check if desired setting is legal.
1025 Throw an error if user tries to set `mh-scan-format-file' to anything but t 1088 Throw an error if user tries to set `mh-scan-format-file' to
1026 when `mh-adaptive-cmd-note-flag' is on. Otherwise, set SYMBOL to VALUE." 1089 anything but t when `mh-adaptive-cmd-note-flag' is on. Otherwise,
1090 set SYMBOL to VALUE."
1027 (if (and (not (eq value t)) 1091 (if (and (not (eq value t))
1028 (eq mh-adaptive-cmd-note-flag t)) 1092 (eq mh-adaptive-cmd-note-flag t))
1029 (error "%s %s" "You must turn off mh-adaptive-cmd-note-flag" 1093 (error "%s %s" "You must turn off mh-adaptive-cmd-note-flag"
1030 "unless you use \"Use MH-E scan Format\"") 1094 "unless you use \"Use MH-E scan Format\"")
1031 (set-default symbol value))) 1095 (set-default symbol value)))
1032 1096
1033 (defcustom mh-adaptive-cmd-note-flag t 1097 (defcustom mh-adaptive-cmd-note-flag t
1034 "*Non-nil means that the message number width is determined dynamically. 1098 "*Non-nil means that the message number width is determined dynamically.
1035 If you've created your own format to handle long message numbers, you'll be 1099
1036 pleased to know you no longer need it since MH-E adapts its internal format 1100 If you've created your own format to handle long message numbers,
1037 based upon the largest message number if this option is on (the default). 1101 you'll be pleased to know you no longer need it since MH-E adapts its
1038 This option may only be turned on when `mh-scan-format-file' is set to \"Use 1102 internal format based upon the largest message number if this option
1039 MH-E scan Format\". 1103 is on (the default). This option may only be turned on when
1040 1104 `mh-scan-format-file' is set to \"Use MH-E scan Format\".
1041 If you prefer fixed-width message numbers, turn off this option and call 1105
1042 `mh-set-cmd-note' with the width specified by your format file 1106 If you prefer fixed-width message numbers, turn off this option and
1043 \(see `mh-scan-format-file'). For example, the default width is 4, so you would 1107 call `mh-set-cmd-note' with the width specified by your format file
1044 use \"(mh-set-cmd-note 4)\"." 1108 \(see `mh-scan-format-file'). For example, the default width is 4, so
1109 you would use \"(mh-set-cmd-note 4)\"."
1045 :type 'boolean 1110 :type 'boolean
1046 :group 'mh-scan-line-formats 1111 :group 'mh-scan-line-formats
1047 :set 'mh-adaptive-cmd-note-flag-check) 1112 :set 'mh-adaptive-cmd-note-flag-check)
1048 1113
1049 (defcustom mh-scan-format-file t 1114 (defcustom mh-scan-format-file t
1050 "Specifies the format file to pass to the scan program. 1115 "Specifies the format file to pass to the scan program.
1051 1116
1052 The default setting for this option is \"Use MH-E scan Format\". This means 1117 The default setting for this option is \"Use MH-E scan Format\". This
1053 that the format string will be taken from the either `mh-scan-format-mh' or 1118 means that the format string will be taken from the either
1054 `mh-scan-format-nmh' depending on whether MH or nmh (or GNU mailutils) is in 1119 `mh-scan-format-mh' or `mh-scan-format-nmh' depending on whether MH or
1055 use. This setting also enables you to turn on the `mh-adaptive-cmd-note-flag' 1120 nmh (or GNU mailutils) is in use. This setting also enables you to
1056 option. 1121 turn on the `mh-adaptive-cmd-note-flag' option.
1057 1122
1058 You can also set this option to \"Use Default scan Format\" to get the 1123 You can also set this option to \"Use Default scan Format\" to get the
1059 same output as you would get if you ran \"scan\" from the shell. If you have a 1124 same output as you would get if you ran \"scan\" from the shell. If
1060 format file that you want MH-E to use but not MH, you can set this option to 1125 you have a format file that you want MH-E to use but not MH, you can
1061 \"Specify a scan Format File\" and enter the name of your format file. 1126 set this option to \"Specify a scan Format File\" and enter the name
1062 1127 of your format file.
1063 If you change the format of the scan lines you'll need to tell MH-E how to 1128
1064 parse the new format. As you will see, quite a lot of variables are involved 1129 If you change the format of the scan lines you'll need to tell MH-E
1065 to do that. Use \"\\[apropos] RET mh-scan.*regexp\" to obtain a list of these 1130 how to parse the new format. As you will see, quite a lot of variables
1066 variables. You will also have to call `mh-set-cmd-note' if your notations are 1131 are involved to do that. Use \"\\[apropos] RET mh-scan.*regexp\" to
1067 not in column 4 (columns in Emacs start with 0)." 1132 obtain a list of these variables. You will also have to call
1133 `mh-set-cmd-note' if your notations are not in column 4 (columns in
1134 Emacs start with 0)."
1068 :type '(choice (const :tag "Use MH-E scan Format" t) 1135 :type '(choice (const :tag "Use MH-E scan Format" t)
1069 (const :tag "Use Default scan Format" nil) 1136 (const :tag "Use Default scan Format" nil)
1070 (file :tag "Specify a scan Format File")) 1137 (file :tag "Specify a scan Format File"))
1071 :group 'mh-scan-line-formats 1138 :group 'mh-scan-line-formats
1072 :set 'mh-scan-format-file-check) 1139 :set 'mh-scan-format-file-check)
1073 1140
1074 (defcustom mh-scan-prog "scan" 1141 (defcustom mh-scan-prog "scan"
1075 "*Program used to scan messages. 1142 "*Program used to scan messages.
1076 The name of the program that generates a listing of one line per message is 1143
1077 held in this option. Unless this variable contains an absolute pathname, it is 1144 The name of the program that generates a listing of one line per
1078 assumed to be in the `mh-progs' directory. You may link another program to 1145 message is held in this option. Unless this variable contains an
1079 `scan' (see \"mh-profile(5)\") to produce a different type of listing." 1146 absolute pathname, it is assumed to be in the `mh-progs'
1147 directory. You may link another program to `scan' (see
1148 \"mh-profile(5)\") to produce a different type of listing."
1080 :type 'string 1149 :type 'string
1081 :group 'mh-scan-line-formats) 1150 :group 'mh-scan-line-formats)
1082 (make-variable-buffer-local 'mh-scan-prog) 1151 (make-variable-buffer-local 'mh-scan-prog)
1083 1152
1084 1153
1086 ;;; Sending Mail (:group 'mh-sending-mail) 1155 ;;; Sending Mail (:group 'mh-sending-mail)
1087 1156
1088 (defcustom mh-compose-forward-as-mime-flag t 1157 (defcustom mh-compose-forward-as-mime-flag t
1089 "*Non-nil means that messages are forwarded as attachments. 1158 "*Non-nil means that messages are forwarded as attachments.
1090 1159
1091 By default, this option is on which means that the forwarded messages are 1160 By default, this option is on which means that the forwarded
1092 included as attachments. If you would prefer to forward your messages verbatim 1161 messages are included as attachments. If you would prefer to
1093 \(as text, inline), then turn off this option. Forwarding messages verbatim 1162 forward your messages verbatim (as text, inline), then turn off
1094 works well for short, textual messages, but your recipient won't be able to 1163 this option. Forwarding messages verbatim works well for short,
1095 view any non-textual attachments that were in the forwarded message. Be aware 1164 textual messages, but your recipient won't be able to view any
1096 that if you have \"forw: -mime\" in your MH profile, then forwarded messages 1165 non-textual attachments that were in the forwarded message. Be
1097 will always be included as attachments regardless of the settings of this 1166 aware that if you have \"forw: -mime\" in your MH profile, then
1098 option." 1167 forwarded messages will always be included as attachments
1168 regardless of the settings of this option."
1099 :type 'boolean 1169 :type 'boolean
1100 :group 'mh-sending-mail) 1170 :group 'mh-sending-mail)
1101 1171
1102 (defcustom mh-compose-letter-function nil 1172 (defcustom mh-compose-letter-function nil
1103 "Invoked when starting a new draft. 1173 "Invoked when starting a new draft.
1104 1174
1105 However, it is the last function called before you edit your message. The 1175 However, it is the last function called before you edit your
1106 consequence of this is that you can write a function to write and send the 1176 message. The consequence of this is that you can write a function
1107 message for you. This function is passed three arguments: the contents of the 1177 to write and send the message for you. This function is passed
1108 TO, SUBJECT, and CC header fields." 1178 three arguments: the contents of the TO, SUBJECT, and CC header
1179 fields."
1109 :type '(choice (const nil) function) 1180 :type '(choice (const nil) function)
1110 :group 'mh-sending-mail) 1181 :group 'mh-sending-mail)
1111 1182
1112 (defcustom mh-compose-prompt-flag nil 1183 (defcustom mh-compose-prompt-flag nil
1113 "*Non-nil means prompt for header fields when composing a new draft." 1184 "*Non-nil means prompt for header fields when composing a new draft."
1115 :group 'mh-sending-mail) 1186 :group 'mh-sending-mail)
1116 1187
1117 (defcustom mh-forward-subject-format "%s: %s" 1188 (defcustom mh-forward-subject-format "%s: %s"
1118 "*Format string for forwarded message subject. 1189 "*Format string for forwarded message subject.
1119 1190
1120 This option is a string which includes two escapes (\"%s\"). The first \"%s\" 1191 This option is a string which includes two escapes (\"%s\"). The
1121 is replaced with the sender of the original message, and the second one is 1192 first \"%s\" is replaced with the sender of the original message,
1122 replaced with the original \"Subject:\"." 1193 and the second one is replaced with the original \"Subject:\"."
1123 :type 'string 1194 :type 'string
1124 :group 'mh-sending-mail) 1195 :group 'mh-sending-mail)
1125 1196
1126 (defcustom mh-insert-x-mailer-flag t 1197 (defcustom mh-insert-x-mailer-flag t
1127 "*Non-nil means append an \"X-Mailer:\" header field to the header. 1198 "*Non-nil means append an \"X-Mailer:\" header field to the header.
1128 1199
1129 This header field includes the version of MH-E and Emacs that you are using. 1200 This header field includes the version of MH-E and Emacs that you
1130 If you don't want to participate in our marketing, you can turn this option 1201 are using. If you don't want to participate in our marketing, you
1131 off." 1202 can turn this option off."
1132 :type 'boolean 1203 :type 'boolean
1133 :group 'mh-sending-mail) 1204 :group 'mh-sending-mail)
1134 1205
1135 (defcustom mh-redist-full-contents-flag nil 1206 (defcustom mh-redist-full-contents-flag nil
1136 "*Non-nil means the \"dist\" command needs entire letter for redistribution. 1207 "*Non-nil means the \"dist\" command needs entire letter for redistribution.
1137 1208
1138 This option must be turned on if \"dist\" requires the whole letter for 1209 This option must be turned on if \"dist\" requires the whole
1139 redistribution, which is the case if \"send\" is compiled with the BERK option 1210 letter for redistribution, which is the case if \"send\" is
1140 \(which many people abhor). If you find that MH will not allow you to 1211 compiled with the BERK option (which many people abhor). If you
1141 redistribute a message that has been redistributed before, turn off this 1212 find that MH will not allow you to redistribute a message that
1142 option." 1213 has been redistributed before, turn off this option."
1143 :type 'boolean 1214 :type 'boolean
1144 :group 'mh-sending-mail) 1215 :group 'mh-sending-mail)
1145 1216
1146 (defcustom mh-reply-default-reply-to nil 1217 (defcustom mh-reply-default-reply-to nil
1147 "*Sets the person or persons to whom a reply will be sent. 1218 "*Sets the person or persons to whom a reply will be sent.
1148 1219
1149 This option is set to \"Prompt\" by default so that you are prompted for the 1220 This option is set to \"Prompt\" by default so that you are
1150 recipient of a reply. If you find that most of the time that you specify 1221 prompted for the recipient of a reply. If you find that most of
1151 \"cc\" when you reply to a message, set this option to \"cc\". Other choices 1222 the time that you specify \"cc\" when you reply to a message, set
1152 include \"from\", \"to\", or \"all\". You can always edit the recipients in 1223 this option to \"cc\". Other choices include \"from\", \"to\", or
1153 the draft." 1224 \"all\". You can always edit the recipients in the draft."
1154 :type '(choice (const :tag "Prompt" nil) 1225 :type '(choice (const :tag "Prompt" nil)
1155 (const "from") 1226 (const "from")
1156 (const "to") 1227 (const "to")
1157 (const "cc") 1228 (const "cc")
1158 (const "all")) 1229 (const "all"))
1159 :group 'mh-sending-mail) 1230 :group 'mh-sending-mail)
1160 1231
1161 (defcustom mh-reply-show-message-flag t 1232 (defcustom mh-reply-show-message-flag t
1162 "*Non-nil means the MH-Show buffer is displayed when replying. 1233 "*Non-nil means the MH-Show buffer is displayed when replying.
1163 1234
1164 If you include the message automatically, you can hide the MH-Show 1235 If you include the message automatically, you can hide the
1165 buffer by turning off this option. 1236 MH-Show buffer by turning off this option.
1166 1237
1167 See also `mh-reply'." 1238 See also `mh-reply'."
1168 :type 'boolean 1239 :type 'boolean
1169 :group 'mh-sending-mail) 1240 :group 'mh-sending-mail)
1170 1241
1177 ;; specified by setting `mh-unpropagated-sequences' appropriately." XXX 1248 ;; specified by setting `mh-unpropagated-sequences' appropriately." XXX
1178 1249
1179 (defcustom mh-refile-preserves-sequences-flag t 1250 (defcustom mh-refile-preserves-sequences-flag t
1180 "*Non-nil means that sequences are preserved when messages are refiled. 1251 "*Non-nil means that sequences are preserved when messages are refiled.
1181 1252
1182 If a message is in any sequence (except \"Previous-Sequence:\" and \"cur\") 1253 If a message is in any sequence (except \"Previous-Sequence:\"
1183 when it is refiled, then it will still be in those sequences in the 1254 and \"cur\") when it is refiled, then it will still be in those
1184 destination folder. If this behavior is not desired, then turn off this 1255 sequences in the destination folder. If this behavior is not
1185 option." 1256 desired, then turn off this option."
1186 :type 'boolean 1257 :type 'boolean
1187 :group 'mh-sequences) 1258 :group 'mh-sequences)
1188 1259
1189 (defcustom mh-tick-seq 'tick 1260 (defcustom mh-tick-seq 'tick
1190 "The name of the MH sequence for ticked messages. 1261 "The name of the MH sequence for ticked messages.
1191 1262
1192 You can customize this option if you already use the \"tick\" sequence for 1263 You can customize this option if you already use the \"tick\"
1193 your own use. You can also disable all of the ticking functions by choosing 1264 sequence for your own use. You can also disable all of the
1194 the \"Disable Ticking\" item but there isn't much advantage to that." 1265 ticking functions by choosing the \"Disable Ticking\" item but
1266 there isn't much advantage to that."
1195 :type '(choice (const :tag "Disable Ticking" nil) 1267 :type '(choice (const :tag "Disable Ticking" nil)
1196 symbol) 1268 symbol)
1197 :group 'mh-sequences) 1269 :group 'mh-sequences)
1198 1270
1199 (defcustom mh-update-sequences-after-mh-show-flag t 1271 (defcustom mh-update-sequences-after-mh-show-flag t
1200 "*Non-nil means flush MH sequences to disk after message is shown. 1272 "*Non-nil means flush MH sequences to disk after message is shown.
1201 1273
1202 Three sequences are maintained internally by MH-E and pushed out to MH when a 1274 Three sequences are maintained internally by MH-E and pushed out
1203 message is shown. They include the sequence specified by your 1275 to MH when a message is shown. They include the sequence
1204 \"Unseen-Sequence:\" profile entry, \"cur\", and the sequence listed by the 1276 specified by your \"Unseen-Sequence:\" profile entry, \"cur\",
1205 option `mh-tick-seq' which is \"tick\" by default. If you do not like this 1277 and the sequence listed by the option `mh-tick-seq' which is
1206 behavior, turn off this option. You can then update the state manually with 1278 \"tick\" by default. If you do not like this behavior, turn off
1207 the `\\[mh-execute-commands]', `\\[mh-quit]', or `\\[mh-update-sequences]' 1279 this option. You can then update the state manually with the
1208 commands." 1280 `\\[mh-execute-commands]', `\\[mh-quit]', or
1281 `\\[mh-update-sequences]' commands."
1209 :type 'boolean 1282 :type 'boolean
1210 :group 'mh-sequences) 1283 :group 'mh-sequences)
1211 1284
1212 1285
1213 1286
1214 ;;; Reading Your Mail (:group 'mh-show) 1287 ;;; Reading Your Mail (:group 'mh-show)
1215 1288
1216 (defcustom mh-bury-show-buffer-flag t 1289 (defcustom mh-bury-show-buffer-flag t
1217 "*Non-nil means show buffer is buried. 1290 "*Non-nil means show buffer is buried.
1218 1291
1219 One advantage of not burying the show buffer is that one can delete the show 1292 One advantage of not burying the show buffer is that one can
1220 buffer more easily in an electric buffer list because of its proximity to its 1293 delete the show buffer more easily in an electric buffer list
1221 associated MH-Folder buffer. Try running \\[electric-buffer-list] to see what 1294 because of its proximity to its associated MH-Folder buffer. Try
1222 I mean." 1295 running \\[electric-buffer-list] to see what I mean."
1223 :type 'boolean 1296 :type 'boolean
1224 :group 'mh-show) 1297 :group 'mh-show)
1225 1298
1226 (defcustom mh-clean-message-header-flag t 1299 (defcustom mh-clean-message-header-flag t
1227 "*Non-nil means remove extraneous header fields. 1300 "*Non-nil means remove extraneous header fields.
1232 :group 'mh-show) 1305 :group 'mh-show)
1233 1306
1234 (defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode"))) 1307 (defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode")))
1235 "*Non-nil means attachments are handled\\<mh-folder-mode-map>. 1308 "*Non-nil means attachments are handled\\<mh-folder-mode-map>.
1236 1309
1237 MH-E can handle attachments as well if the Gnus `mm-decode' library is 1310 MH-E can handle attachments as well if the Gnus `mm-decode'
1238 present. If so, this option will be on. Otherwise, you'll see the MIME body 1311 library is present. If so, this option will be on. Otherwise,
1239 parts rather than text or attachments. There isn't much point in turning off 1312 you'll see the MIME body parts rather than text or attachments.
1240 this option; however, you can inspect it if it appears that the body parts are 1313 There isn't much point in turning off this option; however, you
1241 not being interpreted correctly or toggle it with the command 1314 can inspect it if it appears that the body parts are not being
1315 interpreted correctly or toggle it with the command
1242 \\[mh-toggle-mh-decode-mime-flag] to view the raw message. 1316 \\[mh-toggle-mh-decode-mime-flag] to view the raw message.
1243 1317
1244 This option also controls the display of quoted-printable messages and other 1318 This option also controls the display of quoted-printable
1245 graphical widgets. See the options `mh-graphical-smileys-flag' and 1319 messages and other graphical widgets. See the options
1246 `mh-graphical-emphasis-flag'." 1320 `mh-graphical-smileys-flag' and `mh-graphical-emphasis-flag'."
1247 :type 'boolean 1321 :type 'boolean
1248 :group 'mh-show) 1322 :group 'mh-show)
1249 1323
1250 (defcustom mh-display-buttons-for-alternatives-flag nil 1324 (defcustom mh-display-buttons-for-alternatives-flag nil
1251 "*Non-nil means display buttons for all alternative attachments. 1325 "*Non-nil means display buttons for all alternative attachments.
1252 1326
1253 Sometimes, a mail program will produce multiple alternatives of the attachment 1327 Sometimes, a mail program will produce multiple alternatives of
1254 in increasing degree of faithfulness to the original content. By default, only 1328 the attachment in increasing degree of faithfulness to the
1255 the preferred alternative is displayed. If this option is on, then the 1329 original content. By default, only the preferred alternative is
1256 preferred part is shown inline and buttons are shown for each of the other 1330 displayed. If this option is on, then the preferred part is shown
1257 alternatives." 1331 inline and buttons are shown for each of the other alternatives."
1258 :type 'boolean 1332 :type 'boolean
1259 :group 'mh-show) 1333 :group 'mh-show)
1260 1334
1261 (defcustom mh-display-buttons-for-inline-parts-flag nil 1335 (defcustom mh-display-buttons-for-inline-parts-flag nil
1262 "*Non-nil means display buttons for all inline attachments\\<mh-folder-mode-map>. 1336 "*Non-nil means display buttons for all inline attachments\\<mh-folder-mode-map>.
1263 1337
1264 The sender can request that attachments should be viewed inline so that they 1338 The sender can request that attachments should be viewed inline so
1265 do not really appear like an attachment at all to the reader. Most of the 1339 that they do not really appear like an attachment at all to the
1266 time, this is desirable, so by default MH-E suppresses the buttons for inline 1340 reader. Most of the time, this is desirable, so by default MH-E
1267 attachments. On the other hand, you may receive code or HTML which the sender 1341 suppresses the buttons for inline attachments. On the other hand, you
1268 has added to his message as inline attachments so that you can read them in 1342 may receive code or HTML which the sender has added to his message as
1269 MH-E. In this case, it is useful to see the buttons so that you know you don't 1343 inline attachments so that you can read them in MH-E. In this case, it
1270 have to cut and paste the code into a file; you can simply save the 1344 is useful to see the buttons so that you know you don't have to cut
1271 attachment. 1345 and paste the code into a file; you can simply save the attachment.
1272 1346
1273 If you want to make the buttons visible for inline attachments, you can use 1347 If you want to make the buttons visible for inline attachments, you
1274 the command \\[mh-toggle-mime-buttons] to toggle the visibility of these 1348 can use the command \\[mh-toggle-mime-buttons] to toggle the
1275 buttons. You can turn on these buttons permanently by turning on this option. 1349 visibility of these buttons. You can turn on these buttons permanently
1350 by turning on this option.
1276 1351
1277 MH-E cannot display all attachments inline however. It can display 1352 MH-E cannot display all attachments inline however. It can display
1278 text (including HTML) and images." 1353 text (including HTML) and images."
1279 :type 'boolean 1354 :type 'boolean
1280 :group 'mh-show) 1355 :group 'mh-show)
1281 1356
1282 (defcustom mh-do-not-confirm-flag nil 1357 (defcustom mh-do-not-confirm-flag nil
1283 "*Non-nil means non-reversible commands do not prompt for confirmation. 1358 "*Non-nil means non-reversible commands do not prompt for confirmation.
1284 1359
1285 Commands such as `mh-pack-folder' prompt to confirm whether to process 1360 Commands such as `mh-pack-folder' prompt to confirm whether to
1286 outstanding moves and deletes or not before continuing. Turning on this option 1361 process outstanding moves and deletes or not before continuing.
1287 means that these actions will be performed--which is usually desired but 1362 Turning on this option means that these actions will be
1288 cannot be retracted--without question." 1363 performed--which is usually desired but cannot be
1364 retracted--without question."
1289 :type 'boolean 1365 :type 'boolean
1290 :group 'mh-show) 1366 :group 'mh-show)
1291 1367
1292 (defcustom mh-fetch-x-image-url nil 1368 (defcustom mh-fetch-x-image-url nil
1293 "*Control fetching of \"X-Image-URL:\" header field image. 1369 "*Control fetching of \"X-Image-URL:\" header field image.
1294 1370
1295 Ths option controls the fetching of the \"X-Image-URL:\" header field image 1371 Ths option controls the fetching of the \"X-Image-URL:\" header
1296 with the following values: 1372 field image with the following values:
1297 1373
1298 Ask Before Fetching 1374 Ask Before Fetching
1299 You are prompted before the image is fetched. MH-E will remember 1375 You are prompted before the image is fetched. MH-E will
1300 your reply and will either use the already fetched image the next 1376 remember your reply and will either use the already fetched
1301 time the same URL is encountered or silently skip it if you didn't 1377 image the next time the same URL is encountered or silently
1302 fetch it the first time. This is a good setting. 1378 skip it if you didn't fetch it the first time. This is a
1379 good setting.
1303 1380
1304 Never Fetch 1381 Never Fetch
1305 Images are never fetched and only displayed if they are already 1382 Images are never fetched and only displayed if they are
1306 present in the cache. This is the default. 1383 already present in the cache. This is the default.
1307 1384
1308 There isn't a value of \"Always Fetch\" for privacy and DOS (denial of 1385 There isn't a value of \"Always Fetch\" for privacy and DOS (denial of
1309 service) reasons. For example, fetching a URL can tip off a spammer that 1386 service) reasons. For example, fetching a URL can tip off a spammer
1310 you've read his email (which is why you shouldn't blindly answer yes if you've 1387 that you've read his email (which is why you shouldn't blindly answer
1311 set this option to \"Ask Before Fetching\"). Someone may also flood your 1388 yes if you've set this option to \"Ask Before Fetching\"). Someone may
1312 network and fill your disk drive by sending a torrent of messages, each 1389 also flood your network and fill your disk drive by sending a torrent
1313 specifying a unique URL to a very large file. 1390 of messages, each specifying a unique URL to a very large file.
1314 1391
1315 The cache of images is found in the directory \".mhe-x-image-cache\" within 1392 The cache of images is found in the directory \".mhe-x-image-cache\"
1316 your MH directory. You can add your own face to the \"From:\" field too. See 1393 within your MH directory. You can add your own face to the \"From:\"
1317 Info node `(mh-e)Picture'. 1394 field too. See Info node `(mh-e)Picture'.
1318 1395
1319 This setting only has effect if the option `mh-show-use-xface-flag' is turned 1396 This setting only has effect if the option `mh-show-use-xface-flag' is
1320 on." 1397 turned on."
1321 1398
1322 :type '(choice (const :tag "Ask Before Fetching" ask) 1399 :type '(choice (const :tag "Ask Before Fetching" ask)
1323 (const :tag "Never Fetch" nil)) 1400 (const :tag "Never Fetch" nil))
1324 :group 'mh-show) 1401 :group 'mh-show)
1325 1402
1326 (defcustom mh-graphical-smileys-flag t 1403 (defcustom mh-graphical-smileys-flag t
1327 "*Non-nil means graphical smileys are displayed. 1404 "*Non-nil means graphical smileys are displayed.
1328 1405
1329 It is a long standing custom to inject body language using a cornucopia of 1406 It is a long standing custom to inject body language using a
1330 punctuation, also known as the \"smileys\". MH-E can render these as graphical 1407 cornucopia of punctuation, also known as the \"smileys\". MH-E
1331 widgets if this option is turned on, which it is by default. Smileys include 1408 can render these as graphical widgets if this option is turned
1332 patterns such as :-) and ;-). 1409 on, which it is by default. Smileys include patterns such as :-)
1333 1410 and ;-).
1334 This option is disabled if the option `mh-decode-mime-flag' is turned off." 1411
1412 This option is disabled if the option `mh-decode-mime-flag' is
1413 turned off."
1335 :type 'boolean 1414 :type 'boolean
1336 :group 'mh-show) 1415 :group 'mh-show)
1337 1416
1338 (defcustom mh-graphical-emphasis-flag t 1417 (defcustom mh-graphical-emphasis-flag t
1339 "*Non-nil means graphical emphasis is displayed. 1418 "*Non-nil means graphical emphasis is displayed.
1340 1419
1341 A few typesetting features are indicated in ASCII text with certain 1420 A few typesetting features are indicated in ASCII text with
1342 characters. If your terminal supports it, MH-E can render these typesetting 1421 certain characters. If your terminal supports it, MH-E can render
1343 directives naturally if this option is turned on, which it is by default. For 1422 these typesetting directives naturally if this option is turned
1344 example, _underline_ will be underlined, *bold* will appear in bold, /italics/ 1423 on, which it is by default. For example, _underline_ will be
1345 will appear in italics, and so on. See the option `gnus-emphasis-alist' for 1424 underlined, *bold* will appear in bold, /italics/ will appear in
1346 the whole list. 1425 italics, and so on. See the option `gnus-emphasis-alist' for the
1347 1426 whole list.
1348 This option is disabled if the option `mh-decode-mime-flag' is turned off." 1427
1428 This option is disabled if the option `mh-decode-mime-flag' is
1429 turned off."
1349 :type 'boolean 1430 :type 'boolean
1350 :group 'mh-show) 1431 :group 'mh-show)
1351 1432
1352 (defcustom mh-highlight-citation-style 'gnus 1433 (defcustom mh-highlight-citation-style 'gnus
1353 "Style for highlighting citations. 1434 "Style for highlighting citations.
1354 1435
1355 If the sender of the message has cited other messages in his message, then 1436 If the sender of the message has cited other messages in his
1356 MH-E will highlight these citations to emphasize the sender's actual response. 1437 message, then MH-E will highlight these citations to emphasize
1357 This option can be customized to change the highlighting style. The 1438 the sender's actual response. This option can be customized to
1358 \"Multicolor\" method uses a different color for each indentation while the 1439 change the highlighting style. The \"Multicolor\" method uses a
1359 \"Monochrome\" method highlights all citations in red. To disable highlighting 1440 different color for each indentation while the \"Monochrome\"
1441 method highlights all citations in red. To disable highlighting
1360 of citations entirely, choose \"None\"." 1442 of citations entirely, choose \"None\"."
1361 :type '(choice (const :tag "Multicolor" gnus) 1443 :type '(choice (const :tag "Multicolor" gnus)
1362 (const :tag "Monochrome" font-lock) 1444 (const :tag "Monochrome" font-lock)
1363 (const :tag "None" nil)) 1445 (const :tag "None" nil))
1364 :group 'mh-show) 1446 :group 'mh-show)
1536 "X-pgp:" 1618 "X-pgp:"
1537 "X-submission-address:" 1619 "X-submission-address:"
1538 "X400-" ; X400 1620 "X400-" ; X400
1539 "Xref:") 1621 "Xref:")
1540 "List of default header fields that are not to be shown. 1622 "List of default header fields that are not to be shown.
1541 Do not alter this variable directly. Instead, add entries from here that you 1623
1542 would like to be displayed in `mh-invisible-header-fields-default' 1624 Do not alter this variable directly. Instead, add entries from
1543 and add entries to hide in `mh-invisible-header-fields'.") 1625 here that you would like to be displayed in
1626 `mh-invisible-header-fields-default' and add entries to hide in
1627 `mh-invisible-header-fields'.")
1544 1628
1545 (defvar mh-invisible-header-fields-compiled nil 1629 (defvar mh-invisible-header-fields-compiled nil
1546 "*Regexp matching lines in a message header that are not to be shown. 1630 "*Regexp matching lines in a message header that are not to be shown.
1547 Do not alter this variable directly. Instead, customize 1631 Do not alter this variable directly. Instead, customize
1548 `mh-invisible-header-fields-default' checking for fields normally 1632 `mh-invisible-header-fields-default' checking for fields normally
1549 hidden that you wish to display, and add extra entries to hide in 1633 hidden that you wish to display, and add extra entries to hide in
1550 `mh-invisible-header-fields'.") 1634 `mh-invisible-header-fields'.")
1551 1635
1552 (defun mh-invisible-headers () 1636 (defun mh-invisible-headers ()
1553 "Make or remake the variable `mh-invisible-header-fields-compiled'. 1637 "Make or remake the variable `mh-invisible-header-fields-compiled'.
1554 Done using `mh-invisible-header-fields-internal' as input, from which entries 1638 Done using `mh-invisible-header-fields-internal' as input, from
1555 from `mh-invisible-header-fields-default' are removed and entries 1639 which entries from `mh-invisible-header-fields-default' are
1556 from `mh-invisible-header-fields' are added." 1640 removed and entries from `mh-invisible-header-fields' are added."
1557 (let ((fields mh-invisible-header-fields-internal)) 1641 (let ((fields mh-invisible-header-fields-internal))
1558 (when mh-invisible-header-fields-default 1642 (when mh-invisible-header-fields-default
1559 ;; Remove entries from `mh-invisible-header-fields-default' 1643 ;; Remove entries from `mh-invisible-header-fields-default'
1560 (setq fields 1644 (setq fields
1561 (loop for x in fields 1645 (loop for x in fields
1575 (setq mh-invisible-header-fields-compiled nil)))) 1659 (setq mh-invisible-header-fields-compiled nil))))
1576 1660
1577 (defcustom mh-invisible-header-fields-default nil 1661 (defcustom mh-invisible-header-fields-default nil
1578 "*List of hidden header fields. 1662 "*List of hidden header fields.
1579 1663
1580 The header fields listed in this option are hidden, although you can check off 1664 The header fields listed in this option are hidden, although you
1581 any field that you would like to see. 1665 can check off any field that you would like to see.
1582 1666
1583 Header fields that you would like to hide that aren't listed can be added to 1667 Header fields that you would like to hide that aren't listed can
1584 the option `mh-invisible-header-fields'. 1668 be added to the option `mh-invisible-header-fields'.
1585 1669
1586 See also `mh-clean-message-header-flag'." 1670 See also `mh-clean-message-header-flag'."
1587 :type `(set ,@(mapcar (lambda (x) `(const ,x)) 1671 :type `(set ,@(mapcar (lambda (x) `(const ,x))
1588 mh-invisible-header-fields-internal)) 1672 mh-invisible-header-fields-internal))
1589 :set (lambda (symbol value) 1673 :set (lambda (symbol value)
1593 1677
1594 (defcustom mh-invisible-header-fields nil 1678 (defcustom mh-invisible-header-fields nil
1595 "*Additional header fields to hide. 1679 "*Additional header fields to hide.
1596 1680
1597 Header fields that you would like to hide that aren't listed in 1681 Header fields that you would like to hide that aren't listed in
1598 `mh-invisible-header-fields-default' can be added to this option with a couple 1682 `mh-invisible-header-fields-default' can be added to this option
1599 of caveats. Regular expressions are not allowed. Unique fields should have a 1683 with a couple of caveats. Regular expressions are not allowed.
1600 `:' suffix; otherwise, the element can be used to render invisible an entire 1684 Unique fields should have a `:' suffix; otherwise, the element
1601 class of fields that start with the same prefix. If you think a header field 1685 can be used to render invisible an entire class of fields that
1602 should be generally ignored, report a bug (see URL 1686 start with the same prefix. If you think a header field should be
1687 generally ignored, report a bug (see URL
1603 `https://sourceforge.net/tracker/?group_id=13357&atid=113357'). 1688 `https://sourceforge.net/tracker/?group_id=13357&atid=113357').
1604 1689
1605 See also `mh-clean-message-header-flag'." 1690 See also `mh-clean-message-header-flag'."
1606 1691
1607 :type '(repeat (string :tag "Header field")) 1692 :type '(repeat (string :tag "Header field"))
1611 :group 'mh-show) 1696 :group 'mh-show)
1612 1697
1613 (defcustom mh-lpr-command-format "lpr -J '%s'" 1698 (defcustom mh-lpr-command-format "lpr -J '%s'"
1614 "*Command used to print\\<mh-folder-mode-map>. 1699 "*Command used to print\\<mh-folder-mode-map>.
1615 1700
1616 This option contains the Unix command line which performs the actual printing 1701 This option contains the Unix command line which performs the
1617 for the \\[mh-print-msg] command. The string can contain one escape, \"%s\", 1702 actual printing for the \\[mh-print-msg] command. The string can
1618 which is replaced by the name of the folder and the message number and is 1703 contain one escape, \"%s\", which is replaced by the name of the
1619 useful for print job names. I use \"mpage -h'%s' -b Letter -H1of -mlrtb -P\" 1704 folder and the message number and is useful for print job names.
1620 which produces a nice header and adds a bit of margin so the text fits within 1705 I use \"mpage -h'%s' -b Letter -H1of -mlrtb -P\" which produces a
1621 my printer's margins. 1706 nice header and adds a bit of margin so the text fits within my
1707 printer's margins.
1622 1708
1623 This options is not used by the commands \\[mh-ps-print-msg] or 1709 This options is not used by the commands \\[mh-ps-print-msg] or
1624 \\[mh-ps-print-msg-file]." 1710 \\[mh-ps-print-msg-file]."
1625 :type 'string 1711 :type 'string
1626 :group 'mh-show) 1712 :group 'mh-show)
1627 1713
1628 (defcustom mh-max-inline-image-height nil 1714 (defcustom mh-max-inline-image-height nil
1629 "*Maximum inline image height if \"Content-Disposition:\" is not present. 1715 "*Maximum inline image height if \"Content-Disposition:\" is not present.
1630 1716
1631 Some older mail programs do not insert this needed plumbing to tell 1717 Some older mail programs do not insert this needed plumbing to
1632 MH-E whether to display the attachments inline or not. If this is the 1718 tell MH-E whether to display the attachments inline or not. If
1633 case, MH-E will display these images inline if they are smaller than 1719 this is the case, MH-E will display these images inline if they
1634 the window. However, you might want to allow larger images to be 1720 are smaller than the window. However, you might want to allow
1635 displayed inline. To do this, you can change the options 1721 larger images to be displayed inline. To do this, you can change
1636 `mh-max-inline-image-width' and `mh-max-inline-image-height' from their 1722 the options `mh-max-inline-image-width' and
1637 default value of zero to a large number. The size of your screen is a 1723 `mh-max-inline-image-height' from their default value of zero to
1638 good choice for these numbers." 1724 a large number. The size of your screen is a good choice for
1725 these numbers."
1639 :type '(choice (const nil) integer) 1726 :type '(choice (const nil) integer)
1640 :group 'mh-show) 1727 :group 'mh-show)
1641 1728
1642 (defcustom mh-max-inline-image-width nil 1729 (defcustom mh-max-inline-image-width nil
1643 "*Maximum inline image width if \"Content-Disposition:\" is not present. 1730 "*Maximum inline image width if \"Content-Disposition:\" is not present.
1644 1731
1645 Some older mail programs do not insert this needed plumbing to tell 1732 Some older mail programs do not insert this needed plumbing to
1646 MH-E whether to display the attachments inline or not. If this is the 1733 tell MH-E whether to display the attachments inline or not. If
1647 case, MH-E will display these images inline if they are smaller than 1734 this is the case, MH-E will display these images inline if they
1648 the window. However, you might want to allow larger images to be 1735 are smaller than the window. However, you might want to allow
1649 displayed inline. To do this, you can change the options 1736 larger images to be displayed inline. To do this, you can change
1650 `mh-max-inline-image-width' and `mh-max-inline-image-height' from their 1737 the options `mh-max-inline-image-width' and
1651 default value of zero to a large number. The size of your screen is a 1738 `mh-max-inline-image-height' from their default value of zero to
1652 good choice for these numbers." 1739 a large number. The size of your screen is a good choice for
1740 these numbers."
1653 :type '(choice (const nil) integer) 1741 :type '(choice (const nil) integer)
1654 :group 'mh-show) 1742 :group 'mh-show)
1655 1743
1656 (defcustom mh-mhl-format-file nil 1744 (defcustom mh-mhl-format-file nil
1657 "*Specifies the format file to pass to the \"mhl\" program. 1745 "*Specifies the format file to pass to the \"mhl\" program.
1658 1746
1659 Normally MH-E takes care of displaying messages itself (rather than calling an 1747 Normally MH-E takes care of displaying messages itself (rather than
1660 MH program to do the work). If you'd rather have \"mhl\" display the 1748 calling an MH program to do the work). If you'd rather have \"mhl\"
1661 message (within MH-E), change this option from its default value of \"Use 1749 display the message (within MH-E), change this option from its default
1662 Default mhl Format (Printing Only)\". 1750 value of \"Use Default mhl Format (Printing Only)\".
1663 1751
1664 You can set this option to \"Use Default mhl Format\" to get the same output 1752 You can set this option to \"Use Default mhl Format\" to get the same
1665 as you would get if you ran \"mhl\" from the shell. 1753 output as you would get if you ran \"mhl\" from the shell.
1666 1754
1667 If you have a format file that you want MH-E to use, you can set this option 1755 If you have a format file that you want MH-E to use, you can set this
1668 to \"Specify an mhl Format File\" and enter the name of your format file. Your 1756 option to \"Specify an mhl Format File\" and enter the name of your
1669 format file should specify a non-zero value for \"overflowoffset\" to allow 1757 format file. Your format file should specify a non-zero value for
1670 MH-E to parse the header. Note that \"mhl\" is always used for printing and 1758 \"overflowoffset\" to allow MH-E to parse the header. Note that
1671 forwarding; in this case, the value of this option is consulted if you have 1759 \"mhl\" is always used for printing and forwarding; in this case, the
1672 specified a format file." 1760 value of this option is consulted if you have specified a format
1761 file."
1673 :type '(choice (const :tag "Use Default mhl Format (Printing Only)" nil) 1762 :type '(choice (const :tag "Use Default mhl Format (Printing Only)" nil)
1674 (const :tag "Use Default mhl Format" t) 1763 (const :tag "Use Default mhl Format" t)
1675 (file :tag "Specify an mhl Format File")) 1764 (file :tag "Specify an mhl Format File"))
1676 :group 'mh-show) 1765 :group 'mh-show)
1677 1766
1678 (defcustom mh-mime-save-parts-default-directory t 1767 (defcustom mh-mime-save-parts-default-directory t
1679 "Default directory to use for \\<mh-folder-mode-map>\\[mh-mime-save-parts]. 1768 "Default directory to use for \\<mh-folder-mode-map>\\[mh-mime-save-parts].
1680 1769
1681 The default value for this option is \"Prompt Always\" so that you are always 1770 The default value for this option is \"Prompt Always\" so that
1682 prompted for the directory in which to save the attachments. However, if you 1771 you are always prompted for the directory in which to save the
1683 usually use the same directory within a session, then you can set this option 1772 attachments. However, if you usually use the same directory
1684 to \"Prompt the First Time\" to avoid the prompt each time. you can make this 1773 within a session, then you can set this option to \"Prompt the
1685 directory permanent by choosing \"Directory\" and entering the directory's 1774 First Time\" to avoid the prompt each time. you can make this
1686 name." 1775 directory permanent by choosing \"Directory\" and entering the
1776 directory's name."
1687 :type '(choice (const :tag "Prompt the First Time" nil) 1777 :type '(choice (const :tag "Prompt the First Time" nil)
1688 (const :tag "Prompt Always" t) 1778 (const :tag "Prompt Always" t)
1689 directory) 1779 directory)
1690 :group 'mh-show) 1780 :group 'mh-show)
1691 1781
1692 (defcustom mh-print-background-flag nil 1782 (defcustom mh-print-background-flag nil
1693 "*Non-nil means messages should be printed in the background\\<mh-folder-mode-map>. 1783 "*Non-nil means messages should be printed in the background\\<mh-folder-mode-map>.
1694 1784
1695 Normally messages are printed in the foreground. If this is slow on your 1785 Normally messages are printed in the foreground. If this is slow on
1696 system, you may elect to turn off this option to print in the background. 1786 your system, you may elect to turn off this option to print in the
1697 1787 background.
1698 WARNING: If you do this, do not delete the message until it is printed or else 1788
1699 the output may be truncated. 1789 WARNING: If you do this, do not delete the message until it is printed
1790 or else the output may be truncated.
1700 1791
1701 This option is not used by the commands \\[mh-ps-print-msg] or 1792 This option is not used by the commands \\[mh-ps-print-msg] or
1702 \\[mh-ps-print-msg-file]." 1793 \\[mh-ps-print-msg-file]."
1703 :type 'boolean 1794 :type 'boolean
1704 :group 'mh-show) 1795 :group 'mh-show)
1705 1796
1706 (defcustom mh-show-maximum-size 0 1797 (defcustom mh-show-maximum-size 0
1707 "*Maximum size of message (in bytes) to display automatically. 1798 "*Maximum size of message (in bytes) to display automatically.
1708 1799
1709 This option provides an opportunity to skip over large messages which may be 1800 This option provides an opportunity to skip over large messages
1710 slow to load. The default value of 0 means that all message are shown 1801 which may be slow to load. The default value of 0 means that all
1711 regardless of size." 1802 message are shown regardless of size."
1712 :type 'integer 1803 :type 'integer
1713 :group 'mh-show) 1804 :group 'mh-show)
1714 1805
1715 (defcustom mh-show-use-goto-addr-flag (and (boundp 'goto-address-highlight-p) 1806 (defcustom mh-show-use-goto-addr-flag (and (boundp 'goto-address-highlight-p)
1716 goto-address-highlight-p) 1807 goto-address-highlight-p)
1717 "*Non-nil means highlight URLs and email addresses\\<goto-address-highlight-keymap>. 1808 "*Non-nil means highlight URLs and email addresses\\<goto-address-highlight-keymap>.
1718 1809
1719 To send a message using the highlighted email address or to view the web page 1810 To send a message using the highlighted email address or to view
1720 for the highlighted URL, use the middle mouse button or 1811 the web page for the highlighted URL, use the middle mouse button
1721 \\[goto-address-at-point]. 1812 or \\[goto-address-at-point].
1722 1813
1723 See Info node `(mh-e)Sending Mail' to see how to configure Emacs to send the 1814 See Info node `(mh-e)Sending Mail' to see how to configure Emacs
1724 message using MH-E. 1815 to send the message using MH-E.
1725 1816
1726 The default value of this option comes from the value of 1817 The default value of this option comes from the value of
1727 `goto-address-highlight-p'." 1818 `goto-address-highlight-p'."
1728 :type 'boolean 1819 :type 'boolean
1729 :group 'mh-show) 1820 :group 'mh-show)
1730 1821
1731 (defcustom mh-show-use-xface-flag (>= emacs-major-version 21) 1822 (defcustom mh-show-use-xface-flag (>= emacs-major-version 21)
1732 "*Non-nil means display face images in MH-show buffers. 1823 "*Non-nil means display face images in MH-show buffers.
1733 1824
1734 MH-E can display the content of \"Face:\", \"X-Face:\", and \"X-Image-URL:\" 1825 MH-E can display the content of \"Face:\", \"X-Face:\", and
1735 header fields. If any of these fields occur in the header of your message, the 1826 \"X-Image-URL:\" header fields. If any of these fields occur in the
1736 sender's face will appear in the \"From:\" header field. If more than one of 1827 header of your message, the sender's face will appear in the \"From:\"
1737 these fields appear, then the first field found in the order \"Face:\", 1828 header field. If more than one of these fields appear, then the first
1738 \"X-Face:\", and \"X-Image-URL:\" will be used. 1829 field found in the order \"Face:\", \"X-Face:\", and \"X-Image-URL:\"
1739 1830 will be used.
1740 The option `mh-show-use-xface-flag' is used to turn this feature on and off. 1831
1741 This feature will be turned on by default if your system supports it. 1832 The option `mh-show-use-xface-flag' is used to turn this feature on
1742 1833 and off. This feature will be turned on by default if your system
1743 The first header field used, if present, is the Gnus-specific \"Face:\" field. 1834 supports it.
1744 The \"Face:\" field appeared in GNU Emacs 21 and XEmacs. For more information, 1835
1745 see URL `http://quimby.gnus.org/circus/face/'. Next is the traditional 1836 The first header field used, if present, is the Gnus-specific
1837 \"Face:\" field. The \"Face:\" field appeared in GNU Emacs 21 and
1838 XEmacs. For more information, see URL
1839 `http://quimby.gnus.org/circus/face/'. Next is the traditional
1746 \"X-Face:\" header field. The display of this field requires the 1840 \"X-Face:\" header field. The display of this field requires the
1747 \"uncompface\" program (see URL 1841 \"uncompface\" program (see URL
1748 `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.z'). Recent versions 1842 `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.z'). Recent
1749 of XEmacs have internal support for \"X-Face:\" images. If your version of 1843 versions of XEmacs have internal support for \"X-Face:\" images. If
1750 XEmacs does not, then you'll need both \"uncompface\" and the x-face 1844 your version of XEmacs does not, then you'll need both \"uncompface\"
1751 package (see URL `ftp://ftp.jpl.org/pub/elisp/'). 1845 and the x-face package (see URL `ftp://ftp.jpl.org/pub/elisp/').
1752 1846
1753 Finally, MH-E will display images referenced by the \"X-Image-URL:\" header 1847 Finally, MH-E will display images referenced by the \"X-Image-URL:\"
1754 field if neither the \"Face:\" nor the \"X-Face:\" fields are present. The 1848 header field if neither the \"Face:\" nor the \"X-Face:\" fields are
1755 display of the images requires \"wget\" (see URL 1849 present. The display of the images requires \"wget\" (see URL
1756 `http://www.gnu.org/software/wget/wget.html'), \"fetch\", or \"curl\" to fetch 1850 `http://www.gnu.org/software/wget/wget.html'), \"fetch\", or \"curl\"
1757 the image and the \"convert\" program from the ImageMagick suite (see URL 1851 to fetch the image and the \"convert\" program from the ImageMagick
1758 `http://www.imagemagick.org/'). Of the three header fields this is the most 1852 suite (see URL `http://www.imagemagick.org/'). Of the three header
1759 efficient in terms of network usage since the image doesn't need to be 1853 fields this is the most efficient in terms of network usage since the
1760 transmitted with every single mail. 1854 image doesn't need to be transmitted with every single mail.
1761 1855
1762 The option `mh-fetch-x-image-url' controls the fetching of the 1856 The option `mh-fetch-x-image-url' controls the fetching of the
1763 \"X-Image-URL:\" header field image." 1857 \"X-Image-URL:\" header field image."
1764 :type 'boolean 1858 :type 'boolean
1765 :group 'mh-show) 1859 :group 'mh-show)
1766 1860
1767 (defcustom mh-store-default-directory nil 1861 (defcustom mh-store-default-directory nil
1768 "*Default directory for \\<mh-folder-mode-map>\\[mh-store-msg]. 1862 "*Default directory for \\<mh-folder-mode-map>\\[mh-store-msg].
1769 1863
1770 If you would like to change the initial default directory, customize this 1864 If you would like to change the initial default directory,
1771 option, change the value from `Current' to `Directory', and then enter the 1865 customize this option, change the value from `Current' to
1772 name of the directory for storing the content of these messages." 1866 `Directory', and then enter the name of the directory for storing
1867 the content of these messages."
1773 :type '(choice (const :tag "Current" nil) 1868 :type '(choice (const :tag "Current" nil)
1774 directory) 1869 directory)
1775 :group 'mh-show) 1870 :group 'mh-show)
1776 1871
1777 (defcustom mh-summary-height nil 1872 (defcustom mh-summary-height nil
1778 "*Number of lines in MH-Folder buffer (including the mode line). 1873 "*Number of lines in MH-Folder buffer (including the mode line).
1779 1874
1780 The default value of this option is \"Automatic\" which means that the 1875 The default value of this option is \"Automatic\" which means
1781 MH-Folder buffer will maintain the same proportional size if the frame is 1876 that the MH-Folder buffer will maintain the same proportional
1782 resized. If you'd prefer a fixed height, then choose the \"Fixed Size\" option 1877 size if the frame is resized. If you'd prefer a fixed height,
1783 and enter the number of lines you'd like to see." 1878 then choose the \"Fixed Size\" option and enter the number of
1879 lines you'd like to see."
1784 :type '(choice (const :tag "Automatic" nil) 1880 :type '(choice (const :tag "Automatic" nil)
1785 (integer :tag "Fixed Size")) 1881 (integer :tag "Fixed Size"))
1786 :group 'mh-show) 1882 :group 'mh-show)
1787 1883
1788 1884
1800 ;;; Threading (:group 'mh-thread) 1896 ;;; Threading (:group 'mh-thread)
1801 1897
1802 (defcustom mh-show-threads-flag nil 1898 (defcustom mh-show-threads-flag nil
1803 "*Non-nil means new folders start in threaded mode. 1899 "*Non-nil means new folders start in threaded mode.
1804 1900
1805 Threading large number of messages can be time consuming so this option is 1901 Threading large number of messages can be time consuming so this
1806 turned off by default. If you turn this option on, then threading will be done 1902 option is turned off by default. If you turn this option on, then
1807 only if the number of messages being threaded is less than `mh-large-folder'." 1903 threading will be done only if the number of messages being
1904 threaded is less than `mh-large-folder'."
1808 :type 'boolean 1905 :type 'boolean
1809 :group 'mh-thread) 1906 :group 'mh-thread)
1810 1907
1811 1908
1812 1909
1814 1911
1815 (defcustom mh-tool-bar-search-function 'mh-search-folder 1912 (defcustom mh-tool-bar-search-function 'mh-search-folder
1816 "*Function called by the tool bar search button. 1913 "*Function called by the tool bar search button.
1817 1914
1818 Available functions include `mh-search-folder', the default, and 1915 Available functions include `mh-search-folder', the default, and
1819 `mh-index-search'. You can also choose \"Other Function\" from the \"Value 1916 `mh-index-search'. You can also choose \"Other Function\" from
1820 Menu\" and enter a function of your own choosing." 1917 the \"Value Menu\" and enter a function of your own choosing."
1821 :type '(choice (const mh-search-folder) 1918 :type '(choice (const mh-search-folder)
1822 (const mh-index-search) 1919 (const mh-index-search)
1823 (function :tag "Other Function")) 1920 (function :tag "Other Function"))
1824 :group 'mh-tool-bar) 1921 :group 'mh-tool-bar)
1825 1922
1847 (info "(mh-e)Editing Drafts") 1944 (info "(mh-e)Editing Drafts")
1848 (delete-other-windows)) 1945 (delete-other-windows))
1849 1946
1850 (defmacro mh-tool-bar-reply-generator (function recipient folder-buffer-flag) 1947 (defmacro mh-tool-bar-reply-generator (function recipient folder-buffer-flag)
1851 "Generate FUNCTION that replies to RECIPIENT. 1948 "Generate FUNCTION that replies to RECIPIENT.
1852 If FOLDER-BUFFER-FLAG is nil then the function generated 1949 If FOLDER-BUFFER-FLAG is nil then the function generated...
1853 When INCLUDE-FLAG is non-nil, include message body being replied to." 1950 When INCLUDE-FLAG is non-nil, include message body being replied to."
1854 `(defun ,function (&optional arg) 1951 `(defun ,function (&optional arg)
1855 ,(format "Reply to \"%s\".\nWhen ARG is non-nil include message in reply." 1952 ,(format "Reply to \"%s\".\nWhen ARG is non-nil include message in reply."
1856 recipient) 1953 recipient)
1857 (interactive "P") 1954 (interactive "P")
1868 ;; XEmacs has a couple of extra customizations... 1965 ;; XEmacs has a couple of extra customizations...
1869 (mh-do-in-xemacs 1966 (mh-do-in-xemacs
1870 (defcustom mh-xemacs-use-tool-bar-flag mh-xemacs-has-tool-bar-flag 1967 (defcustom mh-xemacs-use-tool-bar-flag mh-xemacs-has-tool-bar-flag
1871 "*If non-nil, use tool bar. 1968 "*If non-nil, use tool bar.
1872 1969
1873 This option controls whether to show the MH-E icons at all. By default, this 1970 This option controls whether to show the MH-E icons at all. By
1874 option is turned on if the window system supports tool bars. If your system 1971 default, this option is turned on if the window system supports
1875 doesn't support tool bars, then you won't be able to turn on this option." 1972 tool bars. If your system doesn't support tool bars, then you
1973 won't be able to turn on this option."
1876 :type 'boolean 1974 :type 'boolean
1877 :group 'mh-tool-bar 1975 :group 'mh-tool-bar
1878 :set (lambda (symbol value) 1976 :set (lambda (symbol value)
1879 (if (and (eq value t) 1977 (if (and (eq value t)
1880 (not mh-xemacs-has-tool-bar-flag)) 1978 (not mh-xemacs-has-tool-bar-flag))
1882 (set-default symbol value))) 1980 (set-default symbol value)))
1883 1981
1884 (defcustom mh-xemacs-tool-bar-position nil 1982 (defcustom mh-xemacs-tool-bar-position nil
1885 "*Tool bar location. 1983 "*Tool bar location.
1886 1984
1887 This option controls the placement of the tool bar along the four edges of the 1985 This option controls the placement of the tool bar along the four
1888 frame. You can choose from one of \"Same As Default Tool Bar\", \"Top\", 1986 edges of the frame. You can choose from one of \"Same As Default
1889 \"Bottom\", \"Left\", or \"Right\". If this variable is set to anything other 1987 Tool Bar\", \"Top\", \"Bottom\", \"Left\", or \"Right\". If this
1890 than \"Same As Default Tool Bar\" and the default tool bar is in a different 1988 variable is set to anything other than \"Same As Default Tool
1891 location, then two tool bars will be displayed: the MH-E tool bar and the 1989 Bar\" and the default tool bar is in a different location, then
1990 two tool bars will be displayed: the MH-E tool bar and the
1892 default tool bar." 1991 default tool bar."
1893 :type '(radio (const :tag "Same As Default Tool Bar" :value nil) 1992 :type '(radio (const :tag "Same As Default Tool Bar" :value nil)
1894 (const :tag "Top" :value top) 1993 (const :tag "Top" :value top)
1895 (const :tag "Bottom" :value bottom) 1994 (const :tag "Bottom" :value bottom)
1896 (const :tag "Left" :value left) 1995 (const :tag "Left" :value left)
1905 (eq major-mode mode)) 2004 (eq major-mode mode))
1906 return t)) 2005 return t))
1907 2006
1908 (defmacro mh-tool-bar-define (defaults &rest buttons) 2007 (defmacro mh-tool-bar-define (defaults &rest buttons)
1909 "Define a tool bar for MH-E. 2008 "Define a tool bar for MH-E.
1910 DEFAULTS is the list of buttons that are present by default. It is a list of 2009 DEFAULTS is the list of buttons that are present by default. It
1911 lists where the sublists are of the following form: 2010 is a list of lists where the sublists are of the following form:
1912 2011
1913 (:KEYWORD FUNC1 FUNC2 FUNC3 ...) 2012 (:KEYWORD FUNC1 FUNC2 FUNC3 ...)
1914 2013
1915 Here :KEYWORD is one of :folder or :letter. If it is :folder then the default 2014 Here :KEYWORD is one of :folder or :letter. If it is :folder then
1916 buttons in the folder and show mode buffers are being specified. If it is 2015 the default buttons in the folder and show mode buffers are being
1917 :letter then the default buttons in the letter mode are listed. FUNC1, FUNC2, 2016 specified. If it is :letter then the default buttons in the
1918 FUNC3, ... are the names of the functions that the buttons would execute. 2017 letter mode are listed. FUNC1, FUNC2, FUNC3, ... are the names of
1919 2018 the functions that the buttons would execute.
1920 Each element of BUTTONS is a list consisting of four mandatory items and one 2019
1921 optional item as follows: 2020 Each element of BUTTONS is a list consisting of four mandatory
2021 items and one optional item as follows:
1922 2022
1923 (FUNCTION MODES ICON DOC &optional ENABLE-EXPR) 2023 (FUNCTION MODES ICON DOC &optional ENABLE-EXPR)
1924 2024
1925 where, 2025 where,
1926 2026
1927 FUNCTION is the name of the function that will be executed when the button 2027 FUNCTION is the name of the function that will be executed when
1928 is clicked. 2028 the button is clicked.
1929 2029
1930 MODES is a list of symbols. List elements must be from `folder', `letter' and 2030 MODES is a list of symbols. List elements must be from `folder',
1931 `sequence'. If `folder' is present then the button is available in the 2031 `letter' and `sequence'. If `folder' is present then the button is
1932 folder and show buffer. If the name of FUNCTION is of the form \"mh-foo\", 2032 available in the folder and show buffer. If the name of FUNCTION is
1933 where foo is some arbitrary string, then we check if the function 2033 of the form \"mh-foo\", where foo is some arbitrary string, then we
1934 `mh-show-foo' exists. If it exists then that function is used in the show 2034 check if the function `mh-show-foo' exists. If it exists then that
1935 buffer. Otherwise the original function `mh-foo' is used in the show buffer 2035 function is used in the show buffer. Otherwise the original function
1936 as well. Presence of `sequence' is handled similar to the above. The only 2036 `mh-foo' is used in the show buffer as well. Presence of `sequence'
1937 difference is that the button is shown only when the folder is narrowed to a 2037 is handled similar to the above. The only difference is that the
1938 sequence. If `letter' is present in MODES, then the button is available 2038 button is shown only when the folder is narrowed to a sequence. If
1939 during draft editing and runs FUNCTION when clicked. 2039 `letter' is present in MODES, then the button is available during
2040 draft editing and runs FUNCTION when clicked.
1940 2041
1941 ICON is the icon that is drawn in the button. 2042 ICON is the icon that is drawn in the button.
1942 2043
1943 DOC is the documentation for the button. It is used in tool-tips and in 2044 DOC is the documentation for the button. It is used in tool-tips and
1944 providing other help to the user. GNU Emacs uses only the first line of the 2045 in providing other help to the user. GNU Emacs uses only the first
1945 string. So the DOC should be formatted such that the first line is useful and 2046 line of the string. So the DOC should be formatted such that the
1946 complete without the rest of the string. 2047 first line is useful and complete without the rest of the string.
1947 2048
1948 Optional item ENABLE-EXPR is an arbitrary lisp expression. If it evaluates 2049 Optional item ENABLE-EXPR is an arbitrary lisp expression. If it
1949 to nil, then the button is deactivated, otherwise it is active. If is in't 2050 evaluates to nil, then the button is deactivated, otherwise it is
1950 present then the button is always active." 2051 active. If is in't present then the button is always active."
1951 ;; The following variable names have been carefully chosen to make code 2052 ;; The following variable names have been carefully chosen to make code
1952 ;; generation easier. Modifying the names should be done carefully. 2053 ;; generation easier. Modifying the names should be done carefully.
1953 (let (folder-buttons folder-docs folder-button-setter sequence-button-setter 2054 (let (folder-buttons folder-docs folder-button-setter sequence-button-setter
1954 show-buttons show-button-setter show-seq-button-setter 2055 show-buttons show-button-setter show-seq-button-setter
1955 letter-buttons letter-docs letter-button-setter 2056 letter-buttons letter-docs letter-button-setter
2235 ;;; Hooks (:group 'mh-hooks + group where hook described) 2336 ;;; Hooks (:group 'mh-hooks + group where hook described)
2236 2337
2237 (defcustom mh-after-commands-processed-hook nil 2338 (defcustom mh-after-commands-processed-hook nil
2238 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] after performing outstanding requests. 2339 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] after performing outstanding requests.
2239 2340
2240 Variables that are useful in this hook include `mh-folders-changed', 2341 Variables that are useful in this hook include
2241 which lists which folders were affected by deletes and refiles. This 2342 `mh-folders-changed', which lists which folders were affected by
2242 list will always include the current folder, which is also available 2343 deletes and refiles. This list will always include the current
2243 in `mh-current-folder'." 2344 folder, which is also available in `mh-current-folder'."
2244 :type 'hook 2345 :type 'hook
2245 :group 'mh-hooks 2346 :group 'mh-hooks
2246 :group 'mh-folder) 2347 :group 'mh-folder)
2247 2348
2248 (defcustom mh-alias-reloaded-hook nil 2349 (defcustom mh-alias-reloaded-hook nil
2252 :group 'mh-alias) 2353 :group 'mh-alias)
2253 2354
2254 (defcustom mh-before-commands-processed-hook nil 2355 (defcustom mh-before-commands-processed-hook nil
2255 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding requests. 2356 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding requests.
2256 2357
2257 Variables that are useful in this hook include `mh-delete-list' and 2358 Variables that are useful in this hook include `mh-delete-list'
2258 `mh-refile-list' which can be used to see which changes will be made 2359 and `mh-refile-list' which can be used to see which changes will
2259 to the current folder, `mh-current-folder'." 2360 be made to the current folder, `mh-current-folder'."
2260 :type 'hook 2361 :type 'hook
2261 :group 'mh-hooks 2362 :group 'mh-hooks
2262 :group 'mh-folder) 2363 :group 'mh-folder)
2263 2364
2264 (defcustom mh-before-quit-hook nil 2365 (defcustom mh-before-quit-hook nil
2265 "Hook run by \\<mh-folder-mode-map>\\[mh-quit] before quitting MH-E. 2366 "Hook run by \\<mh-folder-mode-map>\\[mh-quit] before quitting MH-E.
2266 2367
2267 This hook is called before the quit occurs, so you might use it to 2368 This hook is called before the quit occurs, so you might use it
2268 perform any MH-E operations; you could perform some query and abort 2369 to perform any MH-E operations; you could perform some query and
2269 the quit or call `mh-execute-commands', for example. 2370 abort the quit or call `mh-execute-commands', for example.
2270 2371
2271 See also `mh-quit-hook'." 2372 See also `mh-quit-hook'."
2272 :type 'hook 2373 :type 'hook
2273 :group 'mh-hooks 2374 :group 'mh-hooks
2274 :group 'mh-folder) 2375 :group 'mh-folder)
2275 2376
2276 (defcustom mh-before-send-letter-hook nil 2377 (defcustom mh-before-send-letter-hook nil
2277 "Hook run at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command. 2378 "Hook run at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command.
2278 2379
2279 For example, if you want to check your spelling in your message before 2380 For example, if you want to check your spelling in your message
2280 sending, add the `ispell-message' function." 2381 before sending, add the `ispell-message' function."
2281 :type 'hook 2382 :type 'hook
2282 :options '(ispell-message) 2383 :options '(ispell-message)
2283 :group 'mh-hooks 2384 :group 'mh-hooks
2284 :group 'mh-letter) 2385 :group 'mh-letter)
2285 2386
2286 (defcustom mh-delete-msg-hook nil 2387 (defcustom mh-delete-msg-hook nil
2287 "Hook run by \\<mh-letter-mode-map>\\[mh-delete-msg] after marking each message for deletion. 2388 "Hook run by \\<mh-letter-mode-map>\\[mh-delete-msg] after marking each message for deletion.
2288 2389
2289 For example, a past maintainer of MH-E used this once when he kept 2390 For example, a past maintainer of MH-E used this once when he
2290 statistics on his mail usage." 2391 kept statistics on his mail usage."
2291 :type 'hook 2392 :type 'hook
2292 :group 'mh-hooks 2393 :group 'mh-hooks
2293 :group 'mh-show) 2394 :group 'mh-show)
2294 2395
2295 (defcustom mh-find-path-hook nil 2396 (defcustom mh-find-path-hook nil
2296 "Hook run by `mh-find-path' after reading the user's MH profile. 2397 "Hook run by `mh-find-path' after reading the user's MH profile.
2297 2398
2298 This hook can be used the change the value of the variables that 2399 This hook can be used the change the value of the variables that
2299 `mh-find-path' sets if you need to run with different values between 2400 `mh-find-path' sets if you need to run with different values
2300 MH and MH-E." 2401 between MH and MH-E."
2301 :type 'hook 2402 :type 'hook
2302 :group 'mh-hooks 2403 :group 'mh-hooks
2303 :group 'mh-e) 2404 :group 'mh-e)
2304 2405
2305 (defcustom mh-folder-mode-hook nil 2406 (defcustom mh-folder-mode-hook nil
2321 :group 'mh-inc) 2422 :group 'mh-inc)
2322 2423
2323 (defcustom mh-insert-signature-hook nil 2424 (defcustom mh-insert-signature-hook nil
2324 "Hook run by \\<mh-letter-mode-map>\\[mh-insert-signature] after signature has been inserted. 2425 "Hook run by \\<mh-letter-mode-map>\\[mh-insert-signature] after signature has been inserted.
2325 2426
2326 Hook functions may access the actual name of the file or the function 2427 Hook functions may access the actual name of the file or the
2327 used to insert the signature with `mh-signature-file-name'." 2428 function used to insert the signature with
2429 `mh-signature-file-name'."
2328 :type 'hook 2430 :type 'hook
2329 :group 'mh-hooks 2431 :group 'mh-hooks
2330 :group 'mh-letter) 2432 :group 'mh-letter)
2331 2433
2332 (defcustom mh-kill-folder-suppress-prompt-hooks '(mh-index-p) 2434 (defcustom mh-kill-folder-suppress-prompt-hooks '(mh-index-p)
2333 "Abnormal hook run at the beginning of \\<mh-folder-mode-map>\\[mh-kill-folder]. 2435 "Abnormal hook run at the beginning of \\<mh-folder-mode-map>\\[mh-kill-folder].
2334 2436
2335 The hook functions are called with no arguments and should return a 2437 The hook functions are called with no arguments and should return
2336 non-nil value to suppress the normal prompt when you remove a folder. 2438 a non-nil value to suppress the normal prompt when you remove a
2337 This is useful for folders that are easily regenerated. 2439 folder. This is useful for folders that are easily regenerated.
2338 2440
2339 The default value of `mh-index-p' suppresses the prompt on folders 2441 The default value of `mh-index-p' suppresses the prompt on
2340 generated by an index search. 2442 folders generated by an index search.
2341 2443
2342 WARNING: Use this hook with care. If there is a bug in your hook which 2444 WARNING: Use this hook with care. If there is a bug in your hook
2343 returns t on \"+inbox\" and you hit \\[mh-kill-folder] by accident in 2445 which returns t on \"+inbox\" and you hit \\[mh-kill-folder] by
2344 the \"+inbox\" folder, you will not be happy." 2446 accident in the \"+inbox\" folder, you will not be happy."
2345 :type 'hook 2447 :type 'hook
2346 :group 'mh-hooks 2448 :group 'mh-hooks
2347 :group 'mh-folder) 2449 :group 'mh-folder)
2348 2450
2349 (defcustom mh-letter-mode-hook nil 2451 (defcustom mh-letter-mode-hook nil
2350 "Hook run by `mh-letter-mode' on a new letter. 2452 "Hook run by `mh-letter-mode' on a new letter.
2351 2453
2352 This hook allows you to do some processing before editing a letter. 2454 This hook allows you to do some processing before editing a
2353 For example, you may wish to modify the header after \"repl\" has done 2455 letter. For example, you may wish to modify the header after
2354 its work, or you may have a complicated \"components\" file and need 2456 \"repl\" has done its work, or you may have a complicated
2355 to tell MH-E where the cursor should go." 2457 \"components\" file and need to tell MH-E where the cursor should
2458 go."
2356 :type 'hook 2459 :type 'hook
2357 :group 'mh-hooks 2460 :group 'mh-hooks
2358 :group 'mh-sending-mail) 2461 :group 'mh-sending-mail)
2359 2462
2360 (defcustom mh-mh-to-mime-hook nil 2463 (defcustom mh-mh-to-mime-hook nil
2364 :group 'mh-letter) 2467 :group 'mh-letter)
2365 2468
2366 (defcustom mh-pick-mode-hook nil 2469 (defcustom mh-pick-mode-hook nil
2367 "Hook run upon entry to `mh-pick-mode'\\<mh-folder-mode-map>. 2470 "Hook run upon entry to `mh-pick-mode'\\<mh-folder-mode-map>.
2368 2471
2369 If you find that you do the same thing over and over when editing the 2472 If you find that you do the same thing over and over when editing
2370 search template, you may wish to bind some shortcuts to keys. This can 2473 the search template, you may wish to bind some shortcuts to keys.
2371 be done with this hook which is called when \\[mh-search-folder] is 2474 This can be done with this hook which is called when
2372 run on a new pattern." 2475 \\[mh-search-folder] is run on a new pattern."
2373 :type 'hook 2476 :type 'hook
2374 :group 'mh-hooks 2477 :group 'mh-hooks
2375 :group 'mh-index) 2478 :group 'mh-index)
2376 2479
2377 (defcustom mh-quit-hook nil 2480 (defcustom mh-quit-hook nil
2378 "Hook run by \\<mh-folder-mode-map>\\[mh-quit] after quitting MH-E. 2481 "Hook run by \\<mh-folder-mode-map>\\[mh-quit] after quitting MH-E.
2379 2482
2380 This hook is not run in an MH-E context, so you might use it to modify 2483 This hook is not run in an MH-E context, so you might use it to
2381 the window setup. 2484 modify the window setup.
2382 2485
2383 See also `mh-before-quit-hook'." 2486 See also `mh-before-quit-hook'."
2384 :type 'hook 2487 :type 'hook
2385 :group 'mh-hooks 2488 :group 'mh-hooks
2386 :group 'mh-folder) 2489 :group 'mh-folder)
2392 :group 'mh-folder) 2495 :group 'mh-folder)
2393 2496
2394 (defcustom mh-show-hook nil 2497 (defcustom mh-show-hook nil
2395 "Hook run after \\<mh-folder-mode-map>\\[mh-show] shows a message. 2498 "Hook run after \\<mh-folder-mode-map>\\[mh-show] shows a message.
2396 2499
2397 It is the last thing called after messages are displayed. It's used to 2500 It is the last thing called after messages are displayed. It's
2398 affect the behavior of MH-E in general or when `mh-show-mode-hook' is 2501 used to affect the behavior of MH-E in general or when
2399 too early." 2502 `mh-show-mode-hook' is too early."
2400 :type 'hook 2503 :type 'hook
2401 :group 'mh-hooks 2504 :group 'mh-hooks
2402 :group 'mh-show) 2505 :group 'mh-show)
2403 2506
2404 (defcustom mh-show-mode-hook nil 2507 (defcustom mh-show-mode-hook nil
2405 "Hook run upon entry to `mh-show-mode'. 2508 "Hook run upon entry to `mh-show-mode'.
2406 2509
2407 This hook is called early on in the process of the message display. It 2510 This hook is called early on in the process of the message
2408 is usually used to perform some action on the message's content." 2511 display. It is usually used to perform some action on the
2512 message's content."
2409 :type 'hook 2513 :type 'hook
2410 :group 'mh-hooks 2514 :group 'mh-hooks
2411 :group 'mh-show) 2515 :group 'mh-show)
2412 2516
2413 (defcustom mh-unseen-updated-hook nil 2517 (defcustom mh-unseen-updated-hook nil
2414 "Hook run after the unseen sequence has been updated. 2518 "Hook run after the unseen sequence has been updated.
2415 2519
2416 The variable `mh-seen-list' can be used by this hook to obtain the 2520 The variable `mh-seen-list' can be used by this hook to obtain
2417 list of messages which were removed from the unseen sequence." 2521 the list of messages which were removed from the unseen
2522 sequence."
2418 :type 'hook 2523 :type 'hook
2419 :group 'mh-hooks 2524 :group 'mh-hooks
2420 :group 'mh-sequences) 2525 :group 'mh-sequences)
2421 2526
2422 2527
2691 "Face used to highlight a good PGG signature." 2796 "Face used to highlight a good PGG signature."
2692 :group 'mh-show-faces) 2797 :group 'mh-show-faces)
2693 2798
2694 (defvar mh-show-pgg-unknown-face 'mh-show-pgg-unknown 2799 (defvar mh-show-pgg-unknown-face 'mh-show-pgg-unknown
2695 "Face used to highlight a PGG signature whose status is unknown. 2800 "Face used to highlight a PGG signature whose status is unknown.
2696 This face is also used for a signature when the signer is untrusted.") 2801 This face is also used for a signature when the signer is
2802 untrusted.")
2697 (defface mh-show-pgg-unknown 2803 (defface mh-show-pgg-unknown
2698 '((t 2804 '((t
2699 (:bold t :foreground "DarkGoldenrod2"))) 2805 (:bold t :foreground "DarkGoldenrod2")))
2700 "Face used to highlight a PGG signature whose status is unknown. 2806 "Face used to highlight a PGG signature whose status is unknown.
2701 This face is also used for a signature when the signer is untrusted." 2807 This face is also used for a signature when the signer is untrusted."