improve search speed by as much as 10X, but taking advantage of this
requires a database rebuild:
- notmuch dump > notmuch.dump
- # Backup, then remove notmuch database ($MAIL/.notmuch)
- notmuch new
- notmuch restore notmuch.dump
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
New collection of add-on tools
------------------------------
directories in which mail files are stored (within the mail
storage). The syntax is as follows:
- folder:<path>
+ folder:<path>
For example, one might use things such as:
- folder:spam
- folder:2011-*
- folder:work/todo
+ folder:spam
+ folder:2011-*
+ folder:work/todo
to match any path containing a directory "spam", "work/todo", or
containing a directory starting with "2011-", respectively.
this feature for all mail, the entire notmuch index will need to be
rebuilt as follows:
- notmuch dump > notmuch.dump
- # Backup, then remove notmuch database ($MAIL/.notmuch)
- notmuch new
- notmuch restore notmuch.dump
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
Support for PGP/MIME
When a message contains a line looking something like:
- ----- Original Message -----
+ ----- Original Message -----
emacs hides this and all subsequent lines as an "original message",
(allowing the user to click or press enter on the "original message"
tool. To facilitate this, two new hooks are added which can be
modified in the following settings of the notmuch customize group:
- Notmuch Before Tag Hook
- Notmuch After Tag Hook
+ Notmuch Before Tag Hook
+ Notmuch After Tag Hook
New optional support for hiding some multipart/alternative parts
multipart/alternative group (such as a text/plain part as well as a
text/html part). Users can configure the setting:
- Notmuch Show All Multipart/Alternative Parts
+ Notmuch Show All Multipart/Alternative Parts
to "off" in the notmuch customize group to have the interface
automatically hide some part alternatives (such as text/html
- Message().__cmp__() and __hash__()
These allow, for example:
- if msg1 == msg2: ...
+ if msg1 == msg2: ...
As well as set arithmetic on Messages():
- s1, s2= set(msgs1), set(msgs2)
- s1.union(s2)
- s2 -= s1
+ s1, s2= set(msgs1), set(msgs2)
+ s1.union(s2)
+ s2 -= s1
Removed:
- len(Messages()) as it exhausted the iterator.
This can be used with the widely-supported idiom of simply running
the configure script from some other directory:
- mkdir build
- cd build
- ../configure
- make
+ mkdir build
+ cd build
+ ../configure
+ make
Fix to save configure options for future, implicit runs of configure
This fixed a bug where a search for:
- to:user@elsewhere.com
+ to:user@elsewhere.com
would incorrectly match a message sent:
- To: user@example,com, someone@elsewhere.com
+ To: user@example,com, someone@elsewhere.com
Fix --output=json when search has no results
tags in the notmuch database. The following flag/tag mappings are
supported:
- Flag <-> Tag
- ---- -----
- 'D' draft
- 'F' flagged
- 'P' passed
- 'R' replied
- 'S' unread (added when 'S' flag is not present)
+ Flag <-> Tag
+ ---- -----
+ 'D' draft
+ 'F' flagged
+ 'P' passed
+ 'R' replied
+ 'S' unread (added when 'S' flag is not present)
The synchronization occurs in both directions, (for example, adding
the 'S' flag to a file will cause the "unread" tag to be added, and
new maildir.synchronize_flags option in the configuration file. For
example:
- notmuch config set maildir.synchronize_flags false
+ notmuch config set maildir.synchronize_flags false
Users upgrading may also want to run "notmuch setup" once (just
accept the existing configuration) to get a new, nicely-commented
For users of the notmuch library, the new synchronization
functionality is available with the following two new functions:
- notmuch_message_maildir_flags_to_tags
- notmuch_message_tags_to_maildir_flags
+ notmuch_message_maildir_flags_to_tags
+ notmuch_message_tags_to_maildir_flags
It is anticipated that future improvements to this support will
allow for safe synchronization of the 'T' flag with the "deleted"
With this release, library users can access all filenames for a
message with the new function:
- notmuch_message_get_filenames
+ notmuch_message_get_filenames
Together with notmuch_filenames_valid, notmuch_filenames_get, and
notmuch_filenames_move_to_next it is now possible to iterate over
do this, simply set the notmuch-command variable in emacs to the
name of a script containing:
- ssh user@host notmuch "$@"
+ ssh user@host notmuch "$@"
If the ssh client has enabled connection sharing (ControlMaster
option in OpenSSH), the emacs interface can be quite responsive this
The 0.4 release had a bug in which:
- notmuch search <expression-with-no-matches>
+ notmuch search <expression-with-no-matches>
would produce a single blank line of output, (where previous
versions would produce no output. This fix also causes a change in
expected that this new option will be very useful in shell
scripts. For example:
- for file in $(notmuch search --output=files <search-terms>); do
- <operations-on> "$file"
- done
+ for file in $(notmuch search --output=files <search-terms>); do
+ <operations-on> "$file"
+ done
notmuch show --format=mbox <search-specification>
errors of the form "libnotmuch.so could not be found" immediately
after installing. This support takes two forms:
- 1. If the library is installed to a system directory,
- (configured in /etc/ld.so.conf), then "make install" will
- automatically run ldconfig.
+ 1. If the library is installed to a system directory,
+ (configured in /etc/ld.so.conf), then "make install" will
+ automatically run ldconfig.
- 2. If the library is installed to a non-system directory, the
- build system adds a DR_RUNPATH entry to the final binary
- pointing to the directory to which the library is installed.
+ 2. If the library is installed to a non-system directory, the
+ build system adds a DR_RUNPATH entry to the final binary
+ pointing to the directory to which the library is installed.
When this support works, the user should be able to run notmuch
immediately after "make install", without any errors trying to find
in a corrupt database. The corruption would manifest itself by a
persistent error of the form:
- document ID of 1234 has no thread ID
+ document ID of 1234 has no thread ID
The message-adding code has been carefully audited and reworked to
avoid this sort of corruption regardless of when it is interrupted.
away.
Note: For users that liked the original mode of "emacs -f notmuch"
- immediately displaying a particular search result, we
- recommend instead running something like:
+ immediately displaying a particular search result, we
+ recommend instead running something like:
- emacs --eval '(notmuch search "tag:inbox" t)'
+ emacs --eval '(notmuch search "tag:inbox" t)'
- The "t" means to sort the messages in an "oldest first" order,
- (as notmuch would do previously by default). You can also
- leave that off to have your search results in "newest first"
- order.
+ The "t" means to sort the messages in an "oldest first" order,
+ (as notmuch would do previously by default). You can also
+ leave that off to have your search results in "newest first"
+ order.
Full-featured "customize" support for configuring notmuch
One such program (implemented in python with the python bindings to
notmuch) is available via:
- git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
+ git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
Install that program as notmuch-addresses on your PATH, and then
hitting TAB on a partial email address or name within the To: or Cc:
Previously, the user might see:
- Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
+ Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
rather than:
- Subject: Re: Rozlučka
+ Subject: Re: Rozlučka
The former text is properly encoded to be RFC-compliant SMTP, will
be sent correctly, and will be properly decoded by the
We include actual support for:
- --includedir --mandir --sysconfdir
+ --includedir --mandir --sysconfdir
And accept and silently ignore several more:
- --build --infodir --libexecdir --localstatedir
- --disable-maintainer-mode --disable-dependency-tracking
+ --build --infodir --libexecdir --localstatedir
+ --disable-maintainer-mode --disable-dependency-tracking
Install emacs client in "make install" rather than requiring a
separate "make install-emacs".
tags. This would cause distracting pauses when reading mail while
notmuch would wait for Xapian when removing the "inbox" and "unread"
tags from messages in a thread.
+
+
+<!--
+ Local variables:
+ mode: text
+ tab-width: 8
+ indent-tabs-mode: nil
+ End:
+ vi: sw=8 ts=8 et
+-->