Notmuch 0.22 (2016-04-26)


Xapian 1.3 support

Notmuch should now build (and the test suite should pass) on recent releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.

Limited support for S/MIME messages

Signature verification is supported, but not decryption. S/MIME signature creation and S/MIME encryption are supported via built-in support in Emacs. S/MIME support is not extensively tested at this time.

Bug Fixes

Fix for threading bug involving deleting and re-adding messages. Fix for case-sensitive content disposition headers. Fix handling of 1 character directory names at top level.

Command Line Interface

notmuch show now supports verifying S/MIME signatures

This support relies on an appropriately configured gpgsm.

Build System

Drop dependency on "pkg-config emacs".

Emacs Interface

Notmuch replies now include all parts shown in the show view

There are two main user visible changes. The first is that rfc822 parts are now included in replies.

The second change is that part headers are now included in the reply buffer to provide visible separation of the parts. The choice of which part headers to show is customizable via the variable notmuch-mua-reply-insert-header-p-function.

Filtering or Limiting messages is now bound to l in the search view

This binding now matches the analogous binding in show view.

F forwards all open messages in a thread

When viewing a thread of messages, the new binding F can be used to generate a new outgoing message which forwards all of the open messages in the thread. This is analogous to the f binding, which forwards only the current message.

Preferred content type can be determined from the message content

More flexibility in choosing which sub-part of a multipart/alternative part is initially shown is available by setting notmuch-multipart/alternative-discouraged to a function that returns a list of discouraged types. The function so specified is passed the message as an argument and can examine the message content to determine which content types should be discouraged. This is in addition to the current capabilities (i.e. setting notmuch-multipart/alternative-discouraged to a list of discouraged types).

When viewing a thread ("show" mode), queries that match no messages no longer generate empty buffers

Should an attempt be made to view the thread corresponding to a query that matches no messages, a warning message is now displayed and the terminal bell rung rather than displaying an empty buffer (or, in some cases, displaying an empty buffer and throwing an error). This also affects re-display of the current thread.

Handle S/MIME signatures in emacs

The emacs interface is now capable making and verifying S/MIME signatures.

notmuch-message-address-insinuate is now a no-op

This reduces the amount of interference with non-notmuch uses of message-mode.

Address completion improvements

An external script is no longer needed for address completion; if you previously configured one, customize the variable notmuch-address-command to try the internal completion. If company-mode is available, notmuch uses it by default for interactive address completion.

Test and experiment with the emacs MUA available in source tree

./devel/try-emacs-mua runs emacs and fills the window with information how to try the MUA safely. Emacs is configured to use the notmuch (lisp) files located in ./emacs directory.


New notmuch-report(1) and notmuch-report.json(5) man pages describe notmuch-report and its JSON configuration file. You can build these files by running make in the devel/nmbug/doc directory.


Renamed from nmbug-status. This script generates reports based on notmuch queries, and doesn't really have anything to do with nmbug, except for sharing the NMBGIT environment variable. The new name focuses on the script's action, instead of its historical association with the nmbug workflow. This should make it more discoverable for users looking for generic notmuch reporting tools.

The default configuration file name (extracted from the config branch of NBMGIT has changed from status-config.json to notmuch-report.json so it is more obviously associated with the report-generating script. The configuration file also has a new meta.message-url setting, which is documented in notmuch-report.json(5).

notmuch-report now wraps query phrases in parentheses when and-ing them together, to avoid confusion about clause grouping.