Notmuch 0.17 (2013-12-30)

Incompatible change in SHA1 computation

Previously on big endian architectures like sparc and powerpc the computation of SHA1 hashes was incorrect. This meant that messages with overlong or missing message-ids were given different computed message-ids than on more common little endian architectures like i386 and amd64. If you use notmuch on a big endian architecture, you are strongly advised to make a backup of your tags using notmuch dump before this upgrade. You can locate the affected files using something like:

notmuch dump | \
  awk '/^notmuch-sha1-[0-9a-f]{40} / \
    {system("notmuch search --exclude=false --output=files id:" $1)}'

Command-Line Interface

New options to better support handling duplicate messages

If more than one message file is associated with a message-id, notmuch search --output=files will print all of them. A new --duplicate=N option can be used to specify which duplicate to print for each message.

notmuch count now supports --output=files option to output the number of files associated with matching messages. This may be bigger than the number of matching messages due to duplicates (i.e. multiple files having the same message-id).

Improved notmuch new performance for unchanged folders

notmuch new now skips over unchanged folders more efficiently, which can substantially improve the performance of checking for new mail in some situations (like NFS-mounted Maildirs).

notmuch reply --format=text RFC 2047-encodes headers

Previously, this used a mix of standard MIME encoding for the reply body and UTF-8 for the headers. Now, the text format reply template RFC 2047-encodes the headers, making the output a valid RFC 2822 message. The JSON/sexp format is unchanged.

notmuch compact command

The new compact command exposes Xapian's compaction functionality through a more convenient interface than xapian-compact. notmuch compact will compact the database to a temporary location, optionally backup the original database, and move the compacted database into place.

Emacs Interface

notmuch-tree (formerly notmuch-pick) has been added to mainline

notmuch-tree is a threaded message view for the emacs interface. Each message is one line in the results and the thread structure is shown using UTF-8 box drawing characters (similar to Mutt's threaded view). It comes between search and show in terms of amount of output and can be useful for viewing both single threads and multiple threads.

Using notmuch-tree

The main key entries to notmuch tree are

Once in tree mode, keybindings are mostly in line with the rest of notmuch and are all viewable with '?' as usual.

Customising notmuch-tree

notmuch-tree has several customisation variables. The most significant is the first notmuch-tree-show-out which determines the behaviour when selecting a message (with RET) in tree view. By default tree view uses a split window showing the single message in the bottom pane. However, if this option is set then it views the whole thread in the complete window jumping to the selected message in the thread. In either case command-prefix selects the other option.

Tagging threads in search is now race-free

Previously, adding or removing a tag from a thread in a search buffer would affect messages that had arrived after the search was performed, resulting in, for example, archiving messages that were never seen. Tagging now affects only the messages that were in the thread when the search was performed.

notmuch-hello refreshes when switching to the buffer

The hello buffer now refreshes whenever you switch to the buffer, regardless of how you get there. You can disable automatic refreshing by customizing notmuch-hello-auto-refresh.

Specific mini-buffer prompts for tagging operations

When entering tags to add or remove, the mini-buffer prompt now indicates what operation will be performed (e.g., "Tag thread", "Tag message", etc).

Built-in help improvements

Documentation for many commands has been improved, as displayed by notmuch-help (usually bound to "?"). The bindings listed by notmuch-help also now include descriptions of prefixed commands.

Quote replies as they are displayed in show view

We now render the parts for reply quoting the same way they are rendered for show. At this time, the notable change is that replies to text/calendar are now pretty instead of raw vcalendar.

Fixed inconsistent use of configured search order

All ways of interactively invoking search now honor the value of notmuch-search-oldest-first.

Common keymap for notmuch-wide bindings

Several key bindings have been moved from mode-specific keymaps to the single notmuch-common-keymap, which is inherited by each notmuch mode. If you've customized your key bindings, you may want to move some of them to the common keymap.

The notmuch-tag function now requires a list of tag changes

For users who have scripted the Emacs interface: the notmuch-tag API has changed. Previously, it accepted either a list of tag changes or a space-separated string of tag changes. The latter is no longer supported and the function now returns nothing.

Fixed notmuch-reply putting reply in primary selection

On emacs 24 notmuch-reply used to put the cited text into the primary selection (which could lead to inadvertently pasting this cited text elsewhere). Now the primary-selection is not changed.

Fixed notmuch-show invisible part handling

In some obscure cases part buttons and invisibility had strange interactions: in particular, the default action for some parts gave the wrong action. This has been fixed.

Fixed notmuch-show attachment viewers and stderr

In emacs 24.3+ viewing an attachment could cause spurious text to appear in the show buffer (any stderr or stdout the viewer produced). By default this output is now discarded. For debugging, setting notmuch-show-attachment-debug causes notmuch to keep the viewer's stderr and stdout in a separate buffer.

Fixed notmuch-mua-reply point placement when signature involved

By restricting cursor movement to body section for cursor placement after signature is inserted, the cursor cannot "leak" to header section anymore. Now inserted citation content will definitely go to the body part of the message.

Vim Interface

It is now possible to compose new messages in the Vim interface, as opposed reply to existing messages. There is also support for going straight to a search (bypassing the folders view).