Commit bdcfe844 authored by Bill Wohler's avatar Bill Wohler

Upgraded to MH-E version 7.0.

parent 68f2d641
2002-11-29 Bill Wohler <wohler@newt.com>
* MH-E-NEWS: Upgraded to MH-E version 7.0.
2002-11-22 Juanma Barranquero <lektu@terra.es>
* TUTORIAL.es: Extensively changed and updated by Rafael Sep,Az(Blveda
......
* Changes in mh-e 7.0
This is a major release which includes a lot of new features including
improved MIME handling, speedbar folder browsing, and indexed
searching. In this version, MH-E runs under XEmacs, passes checkdoc,
and compiles clean under all supported platforms.
The "passes checkdoc" feature above required changing the name of
several user-visible variables. It is likely that this affects you.
Please be sure to see the table at the end of these notes and rename
your variables accordingly.
MH-E has been written mh-e, Mh-e, MH-e and MH-E. We have decided that
the proper term should be MH-E. Please try to use MH-E in your
writing.
** New Features in MH-E 7.0
*** Speedbar
There is now support for the speedbar. Try "M-x speedbar" (closes SF
#503727).
Press the middle mouse button on the `+' icons to open a folder,
middle mouse button on a folder name to open the folder. Folders with
unseen messages are shown in bold, so this is a handy way to browse
new messages that you have filed with procmail or slocal.
See the new customization variable `mh-large-folder,' which controls
when the speedbar asks for how many messages to scan when opening a
large folder and `mh-speed-run-flists-flag' whose default value of t
means to use the flists command to populate the count of unseen and
total messages in each folder.
*** Indexed Search
Interoperability with swish++, swish, glimpse, and namazu has been
added to enable lightening-fast searches of your mail. If none of
these are present, grep is used. Try "F i (mh-index-search)".
For more information, read the documentation for the functions
`mh-swish++-execute-search,' `mh-swish-execute-search,'
`mh-namazu-execute-search,' or `mh-glimpse-execute-search' depending
on your preferred indexing program to see what kind of setup is needed
to generate the index.
*** Threading
Use "T t (mh-toggle-threads)" to view the threads in the folder. Use
it again to return to a non-threaded view.
*** Brief Help
Use "? (mh-help)" and "X ? (mh-prefix-help)," where X is a prefix
character, for a brief synopsis in the minibuffer of frequently used
commands. In the MH-Letter or MH-Pick buffers, use "C-c ? (mh-help)"
(closes SF #493740).
*** Folder Keymap Shared by Show Buffer
You can now use the MH-Folder mode commands from the MH-Show buffer.
Because of this, the MH-Show buffer is now read-only (closes SF
#493749 and SF #527946) and you now have to use "M (mh-modify)" to
edit a message.
*** Better Scanning
You no longer have to modify your scan format if your folders have
more than 9999 messages in them. If you've only modified your scan
format file to allow for the wider message numbers, consider using the
default behavior of MH-E and simplify your MH-E configuration
considerably (closes SF #635791).
To do this, you may have to remove your modifications of
`mh-scan.*-regexp' and `mh-cmd-note' and your customization of
`mh-scan-format-file'.
You may still want the updated format files for running MH commands
outside of MH-E; the default of `mh-scan-format-file' will cause them
to be ignored.
If you prefer fixed-width message numbers, set the new customization
variable to nil , set this variable to
nil and call `mh-set-cmd-note' with the width specified by the scan format in
`mh-scan-format-file'. For example, the default width is 4, so you would use
"(mh-set-cmd-note 4)" if `mh-scan-format-file' were nil.
*** X-Face
MH-E now displays the content of the X-Face header field in the From
field. When sending a message, an X-Face field is appended to the
header if it doesn't already exist and "~/.face" is present. See the
new customization variables `mh-show-use-xface-flag' and `mh-x-face-file'
(closes SF #480770).
MH-E depends on the external x-face package found in
ftp://ftp.jpl.org/pub/elisp/ to do this. The `uncompface' binary is
also required to be in the execute PATH. It can be obtained from:
http://freshmeat.net/redir/compface/1439/url_tgz/compface-1.4.tar.gz.
It has also been observed that if you don't see the faces, you might
have to do this (for unknown reasons):
mv /usr/local/include/compface.h /usr/include/
*** Graphical Smileys
Smiley's are now converted to cute little images. See the new
customization variable `mh-graphical-smileys-flag.'
*** Text Emphasis
ASCII formatting is now converted to the appropriate font. For
example, _underline_ is underlined, *bold* appears in bold, /italic/
appears in italic, etc. See `gnus-emphasis-alist' for the whole list.
See the new customization variables `mh-decode-mime' and
`mh-graphical-emphasis-flag.'
*** Attachment Handling
Inline attachments are now displayed. Regular attachments appear as
buttons in show buffer. Use "K TAB (mh-next-button)" or "K SHIFT-TAB
(mh-prev-button)" to cycle through these buttons. Use "K v
(mh-folder-toggle-mime-part)" to view, "K o
(mh-folder-save-mime-part)" to save one part or "K-a
(mh-save-mime-parts)" to save all parts, or "K i
(mh-folder-inline-mime-part)" to view the attachment inline.
See the new customization variable `mh-decode-mime' for additional
information. Other customization variables that affect this new feature
include `mh-store-mime-parts-default-directory' and
`mh-display-buttons-for-inline-parts-flag'.
HTML documents can be viewed inline if Gnus v5.10 and w3 or w3m lisp
packages are present. Set the customization variable
`mm-text-html-renderer' accordingly (closes SF #453352).
*** Quoted-printable Handling
Quoted-printable body parts are now decoded.
*** More Choices for `mh-yank-from-start-of-msg'
Historically, if this variable was t, the entire message, with full
headers would be included and every line would begin with
`mh-ins-buf-prefix.' This usage is deprecated in favor of the setting
`supercite' below. The default has been changed to `attribution.' The
following symbols are now understood:
`body': yank the message minus the header.
`supercite': include the entire message, with full headers. This also
causes the invocation of `sc-cite-original' without the setting of
`mail-citation-hook', now deprecated practice.
`autosupercite': do as for `supercite' automatically when show buffer
matches the message being replied-to.
`attribution': yank the message minus the header and add a simple
attribution line at the top.
`autoattrib': do as for `attribution' automatically when show buffer
matches the message being replied-to.
There is a new customization variable called
`mh-extract-from-attribution-verb' which is used for attribution which
provides a method for setting a different language.
*** Use Gnus mml Instead of mhn
When inserting attachments into a message draft, Gnus mml directives
are now used instead of mhn directives. One beneficial side-effect of
this is that attachments can now appear inline as well as separate.
The new customization variable `mh-compose-insertion' controls whether
Gnus or mhn is used to insert MIME message directives in messages
(default: 'gnus, if the mml library exists).
*** Content-Type Now Obtained Automatically
The value of the Content-Type no longer needs to be entered by the
user.
*** Attachments Automatically Included Upon Send
You no longer have to run "C-c C-e (mh-edit-mhn)" before sending a
message with attachments--this is done automatically when you send the
message with "C-c C-c (mh-send-letter)". There is, however, a new key
binding "C-c C-m m (mh-mml-to-mime)" which is analogous to "C-c C-e
(mh-edit-mhn)".
*** GPG Handling
Messages that have been signed or encrypted with GPG are verified and
decrypted automatically. To sign or encrypt a message, use "C-c RET
C-s (mh-mml-secure-message-sign-pgpmime)" and "C-c C-m C-e
(mh-mml-secure-message-encrypt-pgpmime)." You need Gnus version 5.10
for this feature. These functions are provided by the pgg.el package.
Users report "flashing" with the pgg.el package and prefer the gpg.el
package instead. To use gpg.el instead of the pgg.el package you need:
(setq mml2015-use 'gpg)
To mimic automatic encryption in gpg.el, use:
(setq mm-verify-option 'always)
(setq mm-decrypt-option 'always)
The venerable mailcrypt package is also an option. However, now that
show buffers are read-only, mailcrypt version 3.5.6 and older fail
when they attempt to decrypt the contents.
*** Mail-Followup-To Header Field
Support for this controversial field has been added because nmh
supports it (closes SF #627035). If you want to add it to outgoing
mail for selected mailing lists, add those mailing lists to the new
customization variable `mh-insert-mail-followup-to-list.' If you think
this field is evil, set the new customization variable
`mh-insert-mail-followup-to-flag' to nil.
*** Gnus Issues
If you update Gnus, you must recompile MH-E. Note that if you are
running the stock version of MH-E that comes with Emacs or the MH-E
package on a Debian GNU/Linux, this is done for you.
** New Variables in MH-E 7.0
New customization variables not mentioned earlier include:
*** mh-letter-insert-signature-hook
Invoked at the beginning of the "C-c C-s (mh-insert-signature)"
command. Can be used to determine which signature file to use based on
message content. On return, if `mh-signature-file-name' is non-nil
that file will be inserted at the current point in the buffer.
*** mh-show-maximum-size
Maximum size of message (in bytes) to display automatically. Provides
an opportunity to skip over large messages which may be slow to load.
Use a value of 0 to display all messages automatically regardless of
size (closes SF #488696).
*** mh-tool-bar-reply-3-buttons-flag
Non-nil means use three buttons for reply commands in tool-bar. If you
have room on your tool-bar because you are using a large font, you may
set this variable to expand the single reply button into three buttons
that won't lead to minibuffer prompt about who to reply to.
** Bug Fixes in MH-E 7.0
*** mh-delete-msg, mh-refile-msg, mh-undo
Mandrake Linux includes XEmacs initialization code that binds
`transient-mark-mode' which causes problems in MH-E. These problems
have been fixed (closes SF #541915).
*** mh-edit-again
This would sometimes yield a read-only buffer. This has been fixed
(closes SF #624283 and SF #625538).
*** mh-forward
When using nmh, always specify -mime so as to preserve the original
message(s).
*** mh-inc-folder
If you had narrowed to a sequence and then incorporated new mail,
those new messages would not be present in your +inbox when you
widened. This has been fixed (closes SF #489430, SF #489437, SF
#629233).
*** mh-insert-letter
No longer uses mhl to include a message as this mangled the header and
gave supercite fits (closes SF #629153).
*** mh-letter-mode
"M-q (fill-paragraph)" now fills quoted paragraphs (for example,
starting with "> ") correctly (closes SF #489927).
*** mh-next-undeleted-msg, mh-previous-undeleted-msg
If there are no more undeleted messages the point remains at its
original position and a message is produced (closes SF #494304).
*** mh-pick-mode
Now calls `mh-pick-mode-hook' as documented.
*** mh-put-msg-in-seq
Now puts all messages in region in sequence (closes SF #630324).
*** mh-refile-msg, mh-write-msg-to-file
These functions stomped on the variables that held the name of the
last file and folder respectively for the other function. This has
been fixed so that the last folder or file name is preserved (closes
SF #580772).
*** mh-region-to-sequence
If the region in MH-Folder was set with "C-x h (mark-whole-buffer)",
you couldn't perform operations on all of the messages as you would
expect. This has been fixed (closes SF #621632).
*** mh-reply
Performing an undo the first thing after replying would blank out the
entire draft. Now just the insertion of the yanked message is undone
leaving the header and signature intact for additional editing (closes
SF #623693).
*** mh-show-mode
Now calls `mh-show-mode-hook' as documented (closes SF #627222).
*** mh-subject-thread-to-sequence
Make 'subject sequence a real one, exported to MH. This means you can,
for example, mh-forward it. But it also shows up with a mark in the
scan output (closes SF #489445).
*** Other Bug Fixes
The following bugs have also been closed:
SF #495450: Folder buffer read-only after inc
SF #489706: mh-page-msg bombs out
SF #580772: mh-last-destination is overloaded
*** Variables renamed to conform with Emacs coding conventions
The coding conventions require that boolean variables end in -flag.
The following two tables show which variables were affected (closes SF
#627015).
Customization Variables (defcustom)
Old Name New Name
mh-auto-folder-collect mh-auto-folder-collect-flag
mh-bury-show-buffer mh-bury-show-buffer-flag
mh-clean-message-header mh-clean-message-header-flag
mh-decode-quoted-printable mh-decode-quoted-printable-flag
mh-delete-yanked-msg-window mh-delete-yanked-msg-window-flag
mh-do-not-confirm mh-do-not-confirm-flag
mh-highlight-citation-p mh-highlight-citation
mh-insert-x-mailer-p mh-insert-x-mailer-flag
mh-print-background mh-print-background-flag
mh-recenter-summary-p mh-recenter-summary-flag
mh-recursive-folders mh-recursive-folders-flag
mh-reply-show-message-p mh-reply-show-message-flag
mh-show-use-goto-addr mh-show-use-goto-addr-flag
mh-update-sequences-after-mh-show mh-update-sequences-after-mh-show-flag
Regular Variables (defvar)
Old Name New Name
mh-mhn-compose-insert-p mh-mhn-compose-insert-flag
mh-nmh-p mh-nmh-flag
mh-page-to-next-msg-p mh-page-to-next-msg-flag
* Changes in mh-e 6.1
This is a minor release which includes a few bug fixes. The
......@@ -34,7 +408,7 @@ Fixed to work under XEmacs. Thanks to Will Partain
*** mh-quit
mh-quit now cleans up the buffers named `mh-temp-buffer,
mh-quit now cleans up the buffers named `mh-temp-buffer,'
'mh-temp-folders-buffer' and 'mh-temp-sequences-buffer.'
......
......@@ -90,7 +90,7 @@ You can now put the init files .emacs and .emacs_SHELL under
** MH-E changes.
Upgraded to mh-e version 6.1.1. There have been major changes since
Upgraded to mh-e version 7.0. There have been major changes since
version 5.0.2; see MH-E-NEWS for details.
+++
......
2002-11-29 Bill Wohler <wohler@newt.com>
* mail/mh-comp.el, mail/mh-e.el, mail/mh-funcs.el,
mail/mh-mime.el, mail/mh-pick.el, mail/mh-seq.el,
mail/mh-utils.el, mail/mh-xemacs-compat.el: Upgraded to MH-E
version 7.0.
* mail/mh-index.el, mail/mh-speed.el: New files for indexed
searches and speedbar support in MH-E version 7.0.
* toolbar/reply-all.pbm, toolbar/reply-all.xpm,
toolbar/reply-from.pbm, toolbar/reply-from.xpm,
toolbar/reply-to.pbm, toolbar/reply-to.xpm: New toolbar images for
MH-E version 7.0.
2002-11-29 Markus Rost <rost@math.ohio-state.edu>
* mwheel.el (mouse-wheel-inhibit-click-time): Fix custom type.
......
This diff is collapsed.
This diff is collapsed.
;;; mh-funcs.el --- mh-e functions not everyone will use right away
;;; mh-funcs.el --- MH-E functions not everyone will use right away
;; Copyright (C) 1993, 1995, 2001, 2002 Free Software Foundation, Inc.
......@@ -26,19 +26,22 @@
;;; Commentary:
;; Internal support for mh-e package.
;; Putting these functions in a separate file lets mh-e start up faster,
;; Internal support for MH-E package.
;; Putting these functions in a separate file lets MH-E start up faster,
;; since less Lisp code needs to be loaded all at once.
;;; Change Log:
;; $Id: mh-funcs.el,v 1.12 2002/04/07 19:20:56 wohler Exp $
;; $Id: mh-funcs.el,v 1.28 2002/11/11 23:01:27 mbaushke Exp $
;;; Code:
(provide 'mh-funcs)
(require 'mh-e)
;;; autoload
(autoload 'mh-notate-seq "mh-seq")
(autoload 'mh-speed-invalidate-map "mh-speed")
;;; customization
(defvar mh-sortm-args nil
......@@ -54,7 +57,7 @@ For example, '(\"-nolimit\" \"-textfield\" \"subject\") is a useful setting.")
(defvar mh-note-printed "P"
"String whose first character is used to notate printed messages.")
;;; functions
;;; Functions
(defun mh-burst-digest ()
"Burst apart the current message, which should be a digest.
......@@ -73,11 +76,10 @@ digest are inserted into the folder after that message."
(mh-goto-cur-msg)
(message "Bursting digest...done")))
(defun mh-copy-msg (msg-or-seq folder)
"Copy the specified MSG-OR-SEQ to another FOLDER without deleting them.
Default is the displayed message. If optional prefix argument is
provided, then prompt for the message sequence."
Default is the displayed message. If optional prefix argument is provided,
then prompt for the message sequence."
(interactive (list (if current-prefix-arg
(mh-read-seq-default "Copy" t)
(mh-get-msg-num t))
......@@ -90,7 +92,9 @@ provided, then prompt for the message sequence."
(defun mh-kill-folder ()
"Remove the current folder and all included messages.
Removes all of the messages (files) within the specified current folder,
and then removes the folder (directory) itself."
and then removes the folder (directory) itself.
The value of `mh-folder-list-change-hook' is a list of functions to be called,
with no arguments, after the folders has been removed."
(interactive)
(if (yes-or-no-p (format "Remove folder %s (and all included messages)?"
mh-current-folder))
......@@ -101,6 +105,8 @@ and then removes the folder (directory) itself."
(mh-exec-cmd-daemon "rmf" folder)
(setq mh-folder-list
(delq (assoc folder mh-folder-list) mh-folder-list))
(when (boundp 'mh-speed-folder-map)
(mh-speed-invalidate-map folder))
(run-hooks 'mh-folder-list-change-hook)
(message "Folder %s removed" folder)
(mh-set-folder-modified-p nil) ; so kill-buffer doesn't complain
......@@ -110,6 +116,8 @@ and then removes the folder (directory) itself."
(kill-buffer folder)))
(message "Folder not removed")))
;; Avoid compiler warning...
(defvar view-exit-action)
(defun mh-list-folders ()
"List mail folders."
......@@ -120,7 +128,7 @@ and then removes the folder (directory) itself."
(set-buffer temp-buffer)
(erase-buffer)
(message "Listing folders...")
(mh-exec-cmd-output "folders" t (if mh-recursive-folders
(mh-exec-cmd-output "folders" t (if mh-recursive-folders-flag
"-recurse"
"-norecurse"))
(goto-char (point-min))
......@@ -128,12 +136,11 @@ and then removes the folder (directory) itself."
(setq view-exit-action 'kill-buffer)
(message "Listing folders...done")))))
(defun mh-pack-folder (range)
"Renumber the messages of a folder to be 1..n.
First, offer to execute any outstanding commands for the current folder.
If optional prefix argument provided, prompt for the RANGE of messages
to display after packing. Otherwise, show the entire folder."
First, offer to execute any outstanding commands for the current folder. If
optional prefix argument provided, prompt for the RANGE of messages to display
after packing. Otherwise, show the entire folder."
(interactive (list (if current-prefix-arg
(mh-read-msg-range
"Range to scan after packing [all]? ")
......@@ -142,18 +149,19 @@ to display after packing. Otherwise, show the entire folder."
(mh-goto-cur-msg)
(message "Packing folder...done"))
(defun mh-pack-folder-1 (range)
;; Close and pack the current folder.
"Close and pack the current folder.
Display the given RANGE of messages after packing. If RANGE is nil, show the
entire folder."
(mh-process-or-undo-commands mh-current-folder)
(message "Packing folder...")
(mh-set-folder-modified-p t) ; lock folder while packing
(save-excursion
(mh-exec-cmd-quiet t "folder" mh-current-folder "-pack"
"-norecurse" "-fast"))
(mh-reset-threads-and-narrowing)
(mh-regenerate-headers range))
(defun mh-pipe-msg (command include-headers)
"Pipe the current message through the given shell COMMAND.
If INCLUDE-HEADERS (prefix argument) is provided, send the entire message.
......@@ -171,7 +179,6 @@ Otherwise just send the message's body without the headers."
(let ((default-directory message-directory))
(shell-command-on-region (point) (point-max) command nil)))))
(defun mh-page-digest ()
"Advance displayed message to next digested message."
(interactive)
......@@ -188,7 +195,6 @@ Otherwise just send the message's body without the headers."
(forward-line 2)
(mh-recenter 0)))
(defun mh-page-digest-backwards ()
"Back up displayed message to previous digested message."
(interactive)
......@@ -205,12 +211,11 @@ Otherwise just send the message's body without the headers."
(forward-line 2))
(mh-recenter 0)))
(defun mh-print-msg (msg-or-seq)
"Print MSG-OR-SEQ (default: displayed message) on printer.
If optional prefix argument provided, then prompt for the message sequence.
The variable `mh-lpr-command-format' is used to generate the print command.
The messages are formatted by mhl. See the variable `mhl-formfile'."
The messages are formatted by mhl. See the variable `mhl-formfile'."
(interactive (list (if current-prefix-arg
(reverse (mh-seq-to-msgs
(mh-read-seq-default "Print" t)))
......@@ -244,7 +249,7 @@ The messages are formatted by mhl. See the variable `mhl-formfile'."
msg-or-seq)
(format "Sequence from %s"
mh-current-folder)))))))
(if mh-print-background
(if mh-print-background-flag
(mh-exec-cmd-daemon shell-file-name "-c" print-command)
(call-process shell-file-name nil nil nil "-c" print-command))
(if (numberp msg-or-seq)
......@@ -255,17 +260,15 @@ The messages are formatted by mhl. See the variable `mhl-formfile'."
(message "Printing message...done")
(message "Printing sequence...done"))))
(defun mh-msg-filenames (msgs &optional folder)
;; Return a list of file names for MSGS in FOLDER (default current folder).
"Return a list of file names for MSGS in FOLDER (default current folder)."
(mapconcat (function (lambda (msg) (mh-msg-filename msg folder))) msgs " "))
(defun mh-sort-folder (&optional extra-args)
"Sort the messages in the current folder by date.
Calls the MH program sortm to do the work.
The arguments in the list `mh-sortm-args' are passed to sortm
if the optional argument EXTRA-ARGS is given."
The arguments in the list `mh-sortm-args' are passed to sortm if the optional
argument EXTRA-ARGS is given."
(interactive "P")
(mh-process-or-undo-commands mh-current-folder)
(setq mh-next-direction 'forward)
......@@ -275,12 +278,11 @@ if the optional argument EXTRA-ARGS is given."
(message "Sorting folder...done")
(mh-scan-folder mh-current-folder "all"))
(defun mh-undo-folder (&rest ignore)
"Undo all pending deletes and refiles in current folder.
Argument IGNORE is deprecated."
(interactive)
(cond ((or mh-do-not-confirm
(cond ((or mh-do-not-confirm-flag
(yes-or-no-p "Undo all commands in folder? "))
(setq mh-delete-list nil
mh-refile-list nil
......@@ -292,7 +294,6 @@ Argument IGNORE is deprecated."
(message "Commands not undone.")
(sit-for 2))))
(defun mh-store-msg (directory)
"Store the file(s) contained in the current message into DIRECTORY.
The message can contain a shar file or uuencoded file.
......@@ -313,7 +314,8 @@ Default directory is the last directory used, or initially the value of
The buffer can contain a shar file or uuencoded file.
Default directory is the last directory used, or initially the value of
`mh-store-default-directory' or the current directory."
(interactive (list (let ((udir (or mh-store-default-directory default-directory)))
(interactive (list (let ((udir (or mh-store-default-directory
default-directory)))
(read-file-name "Store buffer in directory: "
udir udir nil))))
(let ((store-directory (expand-file-name directory))
......@@ -362,5 +364,42 @@ Default directory is the last directory used, or initially the value of
(set-buffer log-buffer)
(mh-handle-process-error command value))
(insert "\n(mh-store finished)\n")))
;;; Help Functions
(defun mh-ephem-message (string)
"Display STRING in the minibuffer momentarily."
(message "%s" string)
(sit-for 5)
(message ""))