Mutt 2.1 Release Notes

Note: this is a review of some of the more interesting features in this release. For a complete list of changes please be sure to read the UPDATING file.

Build/infrastructure changes

C99 libc required

Mutt has required a C99 compliant compiler since the 1.5.24 release, but with this release it now also expects a C99 compliant libc. I've started pulling out checks, fixes, and internal replacements for functions that the C99 standard mandates. This means you can't compile Mutt on an ancient system just by upgrading the compiler anymore. (Or, if it happens to compile, expect it to work properly.)

gettext updated to 0.21

The gettext autoconf files have been updated to the latest release (0.21). The installation was previously heavily customized, but those have been removed, resulting in a clean "vanilla" installation of gettext (which should be much easier to update in the future). The latest gettext version no longer includes a bundled libintl, and so configure no longer supports the --with-included-gettext option.

autoconf 2.70 support

The autoconf files have been updated to support 2.70. If you notice any issues, please let me know.

Viewing Attachments using copiousoutput mailcap entries

<view-pager> forces the use of a copiousoutput mailcap entry to view the attachment. For example, let say you have a PDF attachment and a mailcap file with:

      application/pdf; evince %s
      application/pdf; pdftotext -layout %s -; copiousoutput
    

Invoking <view-mailcap> (default 'm') will run evince. Invoking <view-attach> (default 'Enter') will also run evince, because application/pdf is not an internally supported MIME type. Invoking <view-text> (default 'T') will display the raw PDF code, which probably isn't useful to look at...

The new function, <view-pager>, will cause Mutt to invoke pdftotext and view the output in the pager. For more details, including a discussion <view-attach> and internally supported MIME types, please see Viewing Attachments in the manual.

An equivalent function <view-alt-pager> was added for previewing $send_multipart_alternative_filter output using a copiousoutput mailcap entry.

Also, the <view-mailcap>, <view-pager>, and <view-text> functions were all added to the compose menu, to allow viewing attachments in a variety of manner while composing too.

List Email Management Menu

<list-action>, bound to 'Esc-L' by default, brings up a menu of actions to perform on a mailing list email:

The menu scans the currently selected email for common mailing list headers. An entry with a mailto URL may be selected to begin composing an email to the address.

ANSI Color Improvements

Mutt now recognizes 256-color ANSI escape sequences, when $allow_ansi is set.

If using a modern version of ncurses, Mutt will also use the extended color allocation API, enabling the simultaneous use of more than 256 color pairs at the same time (a limitation of the COLOR_PAIR() macro).

These two new features allow the ability to view the output of 256 color "image to ANSI text" generators inside Mutt:

Message ID Format

The Mutt 2.0 release changed the default generated Message-ID format. There are all sorts of opinions about how a Message-ID ought to be generated, though, so this release created a new configuration variable: $message_id_format.

The pre-2.0 Message-ID style can be generated by setting this to "<%Y%02m%02d%02H%02M%02S.G%c%p@%f>", for instance. There are a few other expandos that may be useful, but also note that format strings can use a filter and be generated by your own script.

Mutt doesn't perform validation on the generated value; it's your responsibility to generate legal (and unique) values if you change the format string. Please be a good netizen and customize responsibly.

Browser Menu Sorting

The browser menu operates in two modes: directory/file browsing, and mailbox browsing. They can be toggled between using <toggle-mailboxes> (bound to 'Tab' by default), or mailbox mode can be entered directly via <browse-mailboxes>.

The modes previously shared the same sort variable, $sort_browser, but this release creates a separate variable for mailbox mode: $sort_browser_mailboxes.

Manually changing the sort order via <sort> or <sort-reverse> will alter the active sort variable.

The sort value "unsorted" now actually does sort: it does so in the order the values were added (for example the order listed in the muttrc). So manually changing from "unsorted" to "alpha" and then back to "unsorted" again will now revert to the original order.

In directory/file mode, the up-directory entry, ".." is now excluded from sorting and always listed at the top.

~h patterns over IMAP

Mutt will now download only the headers for each message, unless body caching is enabled. (In that case, the whole message will be downloaded, but will be stored in the body cache.) It's still not a great idea to use this pattern over IMAP, but hopefully this will make it a little bit less painful.

Monitored mailboxes without notification

Mutt 1.14 added the -nopoll option when specifying mailboxes. This allowed adding entries to the list that don't incur the penalty of polling, which could be useful for the sidebar.

This release adds an inverse flag: -nonotify. This flag keeps the polling on, but stops Mutt from notifying when new mail is detected in the mailbox: either in the echo area, or via $beep_new or $new_mail_command.

This could be useful if you want to show accurate message counts in the sidebar or mailbox browser for certain mailboxes, but don't want to be notified of changes in them.

GMT Date Header

When the new option $local_date_header is unset, Mutt will generate Date headers using GMT, instead of the local timezone.

Pager Improvements

Some more performance improvements were made to the pager, affecting extremely long lines with multiple matching color regexps. These aren't common, but if you ever opened a spam email filled with URLs and waited (and waited, and waited) for the pager to display, this should help some.

While working on that, I cleaned up and made a few related pager fixes too. Jumping to the middle of an email should handle coloring better in a few cases (e.g. for quoting, body patterns, and header colors.) Searching in an email now also resolves color types and so should display headers properly.

<skip-headers> bound to 'H' by default, will skip to the first blank line following the headers.

A small change was made to hdr_order, fixing it to find the longest match instead of the first match when ordering the headers. In fact the example in the manual, "hdr_order From Date: From: To: Cc: Subject:" did not work properly before. Both the From_ and From: header were previously displayed at the beginning. With this change, the From: header will now be displayed after the Date: header.

Mailcap Filenames

This release cycle, a couple different users reported Mutt's mailcap file sanitization being a bit too strict. Any 8-bit characters were converted to "_" which converted non-ascii filenames to "________". This has been loosened a bit, hopefully producing more helpful filenames in those cases.