### Fix `--help` argument
- Argument processing changes in 0.10 introduced a bug where
- `notmuch --help` crashed while `notmuch help` worked fine.
- This is fixed in 0.10.1.
+Argument processing changes in 0.10 introduced a bug where
+`notmuch --help` crashed while `notmuch help` worked fine.
+This is fixed in 0.10.1.
### Fix crash in python bindings
- The python bindings did not call `g_type_init`, which caused crashes
- for some, but not all users.
+The python bindings did not call `g_type_init`, which caused crashes
+for some, but not all users.
### Add `notmuch restore --accumulate` option
- The `--accumulate` switch causes the union of the existing and new tags to
- be applied, instead of replacing each message's tags as they are read in
- from the dump file.
+The `--accumulate` switch causes the union of the existing and new tags to
+be applied, instead of replacing each message's tags as they are read in
+from the dump file.
### Add search terms to `notmuch dump`
- The dump command now takes an optional search term much like notmuch
- search/show/tag. The output file argument of dump is deprecated in
- favour of using stdout.
+The dump command now takes an optional search term much like notmuch
+search/show/tag. The output file argument of dump is deprecated in
+favour of using stdout.
### Add `notmuch search` `--offset` and `--limit` options
- The search command now takes options `--offset=[-]N` and `--limit=N` to
- limit the number of results shown.
+The search command now takes options `--offset=[-]N` and `--limit=N` to
+limit the number of results shown.
### Add `notmuch count --output` option
- The count command is now capable of counting threads in addition to
- messages. This is selected using the new `--output=(threads|messages)`
- option.
+The count command is now capable of counting threads in addition to
+messages. This is selected using the new `--output=(threads|messages)`
+option.
New emacs UI features
---------------------
### Add tab-completion for `notmuch-search` and `notmuch-search-filter`
- These functions now support completion tags for query parts
- starting with "tag:".
+These functions now support completion tags for query parts
+starting with "tag:".
### Turn "id:MSG-ID" links into buttons associated with notmuch searches
- Text of the form "id:MSG-ID" in mails is now a clickable button that
- opens a notmuch search for the given message id.
+Text of the form "id:MSG-ID" in mails is now a clickable button that
+opens a notmuch search for the given message id.
### Add keybinding ('c I') for stashing Message-ID's without an id: prefix
- Reduces manual labour when stashing them for use outside notmuch.
+Reduces manual labour when stashing them for use outside notmuch.
### Do not query on `notmuch-search` exit
- It is harmless to kill the external notmuch process, so the user
- is no longer interrogated when they interrupt a search.
+It is harmless to kill the external notmuch process, so the user
+is no longer interrogated when they interrupt a search.
Performance
-----------
### Search avoids opening and parsing message files
- We now store more information in the database so search no longer
- has to open every message file to get basic headers. This can
- improve search speed by as much as 10X, but taking advantage of this
- requires a database rebuild:
+We now store more information in the database so search no longer
+has to open every message file to get basic headers. This can
+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)
### nmbug - share tags with a given prefix
- nmbug helps maintain a git repo containing all tags with a given
- prefix (by default "notmuch::"). Tags can be shared by commiting
- them to git in one location and restoring in another.
+nmbug helps maintain a git repo containing all tags with a given
+prefix (by default "notmuch::"). Tags can be shared by commiting
+them to git in one location and restoring in another.
### Fix error handling in python bindings
- The python bindings in 0.11 failed to detect NULL pointers being
- returned from libnotmuch functions and thus failed to raise
- exceptions to indicate the error condition. Any subsequent calls
- into libnotmuch caused segmentation faults.
+The python bindings in 0.11 failed to detect NULL pointers being
+returned from libnotmuch functions and thus failed to raise
+exceptions to indicate the error condition. Any subsequent calls
+into libnotmuch caused segmentation faults.
### Quote MML tags in replies
- MML tags are text codes that Emacs uses to indicate attachments
- (among other things) in messages being composed. The Emacs
- interface did not quote MML tags in the quoted text of a reply.
- User could be tricked into replying to a maliciously formatted
- message and not editing out the MML tags from the quoted text. This
- could lead to files from the user's machine being attached to the
- outgoing message. The Emacs interface now quotes these tags in
- reply text, so that they do not effect outgoing messages.
+MML tags are text codes that Emacs uses to indicate attachments
+(among other things) in messages being composed. The Emacs
+interface did not quote MML tags in the quoted text of a reply.
+User could be tricked into replying to a maliciously formatted
+message and not editing out the MML tags from the quoted text. This
+could lead to files from the user's machine being attached to the
+outgoing message. The Emacs interface now quotes these tags in
+reply text, so that they do not effect outgoing messages.
### Hooks
- Hooks have been introduced to notmuch. Hooks are scripts that notmuch
- invokes before and after certain actions. Initially, `notmuch new`
- supports `pre-new` and `post-new` hooks that are run before and after
- importing new messages into the database.
+Hooks have been introduced to notmuch. Hooks are scripts that notmuch
+invokes before and after certain actions. Initially, `notmuch new`
+supports `pre-new` and `post-new` hooks that are run before and after
+importing new messages into the database.
### `notmuch reply --decrypt bugfix`
- The `notmuch reply` command with `--decrypt` argument had a rarely
- occurring bug that caused an encrypted message not to be decrypted
- sometimes. This is now fixed.
+The `notmuch reply` command with `--decrypt` argument had a rarely
+occurring bug that caused an encrypted message not to be decrypted
+sometimes. This is now fixed.
Performance
-----------
### Automatic tag query optimization
- `notmuch tag` now automatically optimizes the user's query to
- exclude messages whose tags won't change. In the past, we've
- suggested that people do this by hand; this is no longer necessary.
+`notmuch tag` now automatically optimizes the user's query to
+exclude messages whose tags won't change. In the past, we've
+suggested that people do this by hand; this is no longer necessary.
### Don't sort messages when creating a dump file
- This speeds up tag dumps considerably, without any loss of
- information. To replicate the old behavior of sorted output (for
- example to compare two dump files), one can use e.g. `sort(1)`.
+This speeds up tag dumps considerably, without any loss of
+information. To replicate the old behavior of sorted output (for
+example to compare two dump files), one can use e.g. `sort(1)`.
Memory Management
-----------------
### Reduction of memory leaks
- Two memory leaks when searching and showing messages were identified
- and fixed in this release.
+Two memory leaks when searching and showing messages were identified
+and fixed in this release.
Emacs Interface
---------------
### Bug fixes
- notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
- a bug that caused it to always jump to the next message, even if it
- should have scrolled down to show more of the current message instead.
- This is now fixed.
+notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
+a bug that caused it to always jump to the next message, even if it
+should have scrolled down to show more of the current message instead.
+This is now fixed.
### Support `notmuch new` as a notmuch-poll-script
- It's now possible to use `notmuch new` as a notmuch-poll-script
- directly. This is also the new default. This allows taking better
- advantage of the `notmuch new` hooks from emacs without intermediate
- scripts.
+It's now possible to use `notmuch new` as a notmuch-poll-script
+directly. This is also the new default. This allows taking better
+advantage of the `notmuch new` hooks from emacs without intermediate
+scripts.
### Improvements in saved search management
- New saved searches are now appended to the list of saved searches,
- not inserted in front. It's also possible to define a sort function
- for displaying saved searches; alphabetical sort is provided.
+New saved searches are now appended to the list of saved searches,
+not inserted in front. It's also possible to define a sort function
+for displaying saved searches; alphabetical sort is provided.
### Hooks for notmuch-hello
- Two new hooks have been added: "notmuch-hello-mode-hook" (called after
- entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
- after updating a notmuch-hello buffer).
+Two new hooks have been added: "notmuch-hello-mode-hook" (called after
+entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
+after updating a notmuch-hello buffer).
### New face for crypto parts headers
- Crypto parts used to be displayed with a hardcoded color. A new face
- has been introduced to fix this: notmuch-crypto-part-header. It
- defaults to the same value as before, but can be customized to match
- other color themes.
+Crypto parts used to be displayed with a hardcoded color. A new face
+has been introduced to fix this: notmuch-crypto-part-header. It
+defaults to the same value as before, but can be customized to match
+other color themes.
### Use space as default thousands separator
- Large numbers in notmuch-hello are now displayed using a space as
- thousands separator (e.g. "123 456" instead of "123,456"). This can be
- changed by customizing "notmuch-hello-thousands-separator".
+Large numbers in notmuch-hello are now displayed using a space as
+thousands separator (e.g. "123 456" instead of "123,456"). This can be
+changed by customizing "notmuch-hello-thousands-separator".
### Call notmuch-show instead of notmuch-search when clicking on buttonized id: links
### New function notmuch-show-advance
- This new function advances through just the current thread, and is
- less invasive than notmuch-show-advance-and-archive. It can easily
- be bound to SPC with:
+This new function advances through just the current thread, and is
+less invasive than notmuch-show-advance-and-archive. It can easily
+be bound to SPC with:
(define-key notmuch-show-mode-map " " 'notmuch-show-advance)
### Reply to sender
- `notmuch reply` has gained the ability to create a reply template
- for replying just to the sender of the message, in addition to reply
- to all. The feature is available through the new command line option
- `--reply-to=(all|sender)`.
+`notmuch reply` has gained the ability to create a reply template
+for replying just to the sender of the message, in addition to reply
+to all. The feature is available through the new command line option
+`--reply-to=(all|sender)`.
### Mail store folder/file ignore
- A new configuration option, `new.ignore`, lets users specify a
- ;-separated list of file and directory names that will not be
- searched for messages by `notmuch new`.
+A new configuration option, `new.ignore`, lets users specify a
+;-separated list of file and directory names that will not be
+searched for messages by `notmuch new`.
- NOTE: *Every* file/directory that goes by one of those names will
- be ignored, independent of its depth/location in the mail store.
+NOTE: *Every* file/directory that goes by one of those names will
+be ignored, independent of its depth/location in the mail store.
### Unified help and manual pages
- The notmuch help command now runs man for the appropriate page. If
- you install notmuch somewhere "unusual", you may need to update
- MANPATH.
+The notmuch help command now runs man for the appropriate page. If
+you install notmuch somewhere "unusual", you may need to update
+MANPATH.
### Manual page for notmuch configuration options
- The notmuch CLI configuration file options are now documented in the
- notmuch-config(1) manual page in addition to the configuration file
- itself.
+The notmuch CLI configuration file options are now documented in the
+notmuch-config(1) manual page in addition to the configuration file
+itself.
Emacs Interface
---------------
### Reply to sender
- The Emacs interface has, with the new CLI support, gained the
- ability to reply to sender in addition to reply to all. In both show
- and search modes, 'r' has been bound to reply to sender, replacing
- reply to all, which now has key binding 'R'.
+The Emacs interface has, with the new CLI support, gained the
+ability to reply to sender in addition to reply to all. In both show
+and search modes, 'r' has been bound to reply to sender, replacing
+reply to all, which now has key binding 'R'.
### More flexible and consistent tagging operations
- All tagging operations ('+', '-', '`*`') now accept multiple tags with
- '+' or '-' prefix, like '`*`' operation in notmuch-search view before.
+All tagging operations ('+', '-', '`*`') now accept multiple tags with
+'+' or '-' prefix, like '`*`' operation in notmuch-search view before.
- '`*`' operation (`notmuch-show-tag-all`) is now available in
- notmuch-show view.
+'`*`' operation (`notmuch-show-tag-all`) is now available in
+notmuch-show view.
- `notmuch-show-{add,remove}-tag` functions no longer accept tag
- argument, `notmuch-show-tag-message` should be used instead. Custom
- bindings using these functions should be updated, e.g.:
+`notmuch-show-{add,remove}-tag` functions no longer accept tag
+argument, `notmuch-show-tag-message` should be used instead. Custom
+bindings using these functions should be updated, e.g.:
(notmuch-show-remove-tag "unread")
- should be changed to:
+should be changed to:
(notmuch-show-tag-message "-unread")
### Refreshing the show view ('=' by default) no longer opens or closes messages
- To get the old behavior of putting messages back in their initial
- opened/closed state, use a prefix argument, e.g., 'C-u ='.
+To get the old behavior of putting messages back in their initial
+opened/closed state, use a prefix argument, e.g., 'C-u ='.
Attachment buttons can be used to view or save attachments.
- When the cursor is on an attachment button the key 's' can be used
- to save the attachment, the key 'v' to view the attachment in the
- default mailcap application, and the key 'o' prompts the user for an
- application to use to open the attachment. By default Enter or mouse
- button 1 saves the attachment but this is customisable (option
- Notmuch Show Part Button Default Action).
+When the cursor is on an attachment button the key 's' can be used
+to save the attachment, the key 'v' to view the attachment in the
+default mailcap application, and the key 'o' prompts the user for an
+application to use to open the attachment. By default Enter or mouse
+button 1 saves the attachment but this is customisable (option
+Notmuch Show Part Button Default Action).
### New functions
- `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
- optionally visiting a URI to the current message at one of a number
- of Mailing List Archives.
+`notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
+optionally visiting a URI to the current message at one of a number
+of Mailing List Archives.
### Fix MML tag quoting in replies
- The MML tag quoting fix of 0.11.1 unintentionally quoted tags
- inserted in `message-setup-hook`. Quoting is now limited to the
- cited message.
+The MML tag quoting fix of 0.11.1 unintentionally quoted tags
+inserted in `message-setup-hook`. Quoting is now limited to the
+cited message.
### Show view archiving key binding changes
- The show view archiving key bindings 'a' and 'x' now remove the
- "inbox" tag from the current message only (instead of thread), and
- move to the next message. At the last message, 'a' proceeds to the
- next thread in search results, and 'x' returns to search
- results. The thread archiving functions are now available in 'A' and
- 'X'.
+The show view archiving key bindings 'a' and 'x' now remove the
+"inbox" tag from the current message only (instead of thread), and
+move to the next message. At the last message, 'a' proceeds to the
+next thread in search results, and 'x' returns to search
+results. The thread archiving functions are now available in 'A' and
+'X'.
### Support text/calendar MIME type
- The text/calendar MIME type is now supported in addition to
- text/x-vcalendar.
+The text/calendar MIME type is now supported in addition to
+text/x-vcalendar.
### Generate inline patch fake attachment file names from message subject
- Use the message subject to generate file names for the inline patch
- fake attachments. The names are now similar to the ones generated by
- 'git format-patch' instead of just "inline patch". See "Notmuch Show
- Insert Text/Plain Hook" in the notmuch customize interface.
+Use the message subject to generate file names for the inline patch
+fake attachments. The names are now similar to the ones generated by
+'git format-patch' instead of just "inline patch". See "Notmuch Show
+Insert Text/Plain Hook" in the notmuch customize interface.
### Enable `notmuch-search-line-faces` by default
- Make the `notmuch-search-line-faces` functionality more discoverable
- for new users by showing "unread" messages bold and "flagged"
- messages blue by default in the search view.
+Make the `notmuch-search-line-faces` functionality more discoverable
+for new users by showing "unread" messages bold and "flagged"
+messages blue by default in the search view.
### Printing Support
- notmuch-show mode now has simple printing support, bound to '#' by
- default. You can customize the variable notmuch-print-mechanism.
+notmuch-show mode now has simple printing support, bound to '#' by
+default. You can customize the variable notmuch-print-mechanism.
Library changes
---------------
### New functions
- `notmuch_query_add_tag_exclude` supports the new tag exclusion
- feature.
+`notmuch_query_add_tag_exclude` supports the new tag exclusion
+feature.
Python bindings changes
-----------------------
### Python 3.2 compatibility
- The python bindings are now compatible with both python 2.5+ and 3.2.
+The python bindings are now compatible with both python 2.5+ and 3.2.
### Added missing unicode conversions
- Python strings have to be encoded to and decoded from utf-8 when
- calling libnotmuch functions. Porting the bindings to python 3.2
- revealed a few function calls that were missing these conversions.
+Python strings have to be encoded to and decoded from utf-8 when
+calling libnotmuch functions. Porting the bindings to python 3.2
+revealed a few function calls that were missing these conversions.
Build fixes
-----------
### Compatibility with GMime 2.6
- It is now possible to build notmuch against both GMime 2.4 and 2.6.
- However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
- report signatures where the signer key is unavailable (GNOME bug
- 668085). For compatibility with GMime 2.4's tolerance of "From "
- headers we require GMime 2.6 >= 2.6.7.
+It is now possible to build notmuch against both GMime 2.4 and 2.6.
+However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
+report signatures where the signer key is unavailable (GNOME bug
+668085). For compatibility with GMime 2.4's tolerance of "From "
+headers we require GMime 2.6 >= 2.6.7.
### Better guessing of From: header
- Notmuch now tries harder to guess which configured address should be
- used as the From: line in a "notmuch reply". It will examine the
- Received: headers if it fails to find any configured address in To:
- or Cc:. This allows it to often choose the correct address even when
- replying to a message sent to a mailing list, and not directly to a
- configured address.
+Notmuch now tries harder to guess which configured address should be
+used as the From: line in a "notmuch reply". It will examine the
+Received: headers if it fails to find any configured address in To:
+or Cc:. This allows it to often choose the correct address even when
+replying to a message sent to a mailing list, and not directly to a
+configured address.
### Make "notmuch count" with no arguments count all messages
- Previously, it was hard to construct a search term that was
- guaranteed to match all messages.
+Previously, it was hard to construct a search term that was
+guaranteed to match all messages.
### Provide a new special-case search term of "*" to match all messages
- This can be used in any command accepting a search term, such as
- "notmuch search '*'". Note that you'll want to take care that the
- shell doesn't expand * against the current files. And note that the
- support for "*" is a special case. It's only meaningful as a single
- search term and loses its special meaning when combined with any
- other search terms.
+This can be used in any command accepting a search term, such as
+"notmuch search '*'". Note that you'll want to take care that the
+shell doesn't expand * against the current files. And note that the
+support for "*" is a special case. It's only meaningful as a single
+search term and loses its special meaning when combined with any
+other search terms.
### Automatically detect thread connections even when a parent message is missing
- Previously, if two or more message were received with a common
- parent, but that parent was not received, then these messages would
- not be recognized as belonging to the same thread. This is now fixed
- so that such messages are properly connected in a thread.
+Previously, if two or more message were received with a common
+parent, but that parent was not received, then these messages would
+not be recognized as belonging to the same thread. This is now fixed
+so that such messages are properly connected in a thread.
General bug fixes
-----------------
### Fix potential data loss in "notmuch new" with SIGINT
- One code path in "notmuch new" was not properly handling
- SIGINT. Previously, this could lead to messages being removed from
- the database (and their tags being lost) if the user pressed
- Control-C while "notmuch new" was working.
+One code path in "notmuch new" was not properly handling
+SIGINT. Previously, this could lead to messages being removed from
+the database (and their tags being lost) if the user pressed
+Control-C while "notmuch new" was working.
### Fix segfault when a message includes a MIME part that is empty
### Fix handling of non-ASCII characters with --format=json
- Previously, characters outside the range of 7-bit ASCII were
- silently dropped from the JSON output. This led to corrupted display
- of utf-8 content in the upcoming notmuch web-based frontends.
+Previously, characters outside the range of 7-bit ASCII were
+silently dropped from the JSON output. This led to corrupted display
+of utf-8 content in the upcoming notmuch web-based frontends.
### Fix headers to be properly decoded in "notmuch reply"
- Previously, the user might see:
+Previously, the user might see:
Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
- rather than:
+rather than:
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
- recipient. But the user trying to edit the reply would likely be
- unable to read or edit that field in its encoded form.
+The former text is properly encoded to be RFC-compliant SMTP, will
+be sent correctly, and will be properly decoded by the
+recipient. But the user trying to edit the reply would likely be
+unable to read or edit that field in its encoded form.
Emacs client features
---------------------
### Show the last few lines of citations as well as the first few lines
- It's often the case that the last sentence of a citation is what is
- being replied to directly, so the last few lines are often much more
- important. The number of lines shown at the beginning and end of any
- citation can be configured, (notmuch-show-citation-lines-prefix and
- notmuch-show-citation-lines-suffix).
+It's often the case that the last sentence of a citation is what is
+being replied to directly, so the last few lines are often much more
+important. The number of lines shown at the beginning and end of any
+citation can be configured, (notmuch-show-citation-lines-prefix and
+notmuch-show-citation-lines-suffix).
### The '+' and '-' commands in the search view can now add and remove tags by region
- Selective bulk tagging is now possible by selecting a region of
- threads and then using either the '+' or '-' keybindings. Bulk
- tagging is still available for all threads matching the current
- search with the '*' binding.
+Selective bulk tagging is now possible by selecting a region of
+threads and then using either the '+' or '-' keybindings. Bulk
+tagging is still available for all threads matching the current
+search with the '*' binding.
### More meaningful buffer names for thread-view buffers
- Notmuch now uses the Subject of the thread as the buffer
- name. Previously it was using the thread ID, which is a meaningless
- number to the user.
+Notmuch now uses the Subject of the thread as the buffer
+name. Previously it was using the thread ID, which is a meaningless
+number to the user.
### Provide for customized colors of threads in search view based on tags
- See the documentation of notmuch-search-line-faces, (or us "M-x
- customize" and browse to the "notmuch" group within "Applications"
- and "Mail"), for details on how to configure this colorization.
+See the documentation of notmuch-search-line-faces, (or us "M-x
+customize" and browse to the "notmuch" group within "Applications"
+and "Mail"), for details on how to configure this colorization.
Build-system features
---------------------
### Add support to configure for many standard options
- We include actual support for:
+We include actual support for:
--includedir --mandir --sysconfdir
- And accept and silently ignore several more:
+And accept and silently ignore several more:
--build --infodir --libexecdir --localstatedir
--disable-maintainer-mode --disable-dependency-tracking
### Automatically compute versions numbers between releases
- This support uses the git-describe notation, so a version such as
- 0.1-144-g43cbbfc indicates a version that is 144 commits since the
- 0.1 release and is available as git commit "43cbbfc".
+This support uses the git-describe notation, so a version such as
+0.1-144-g43cbbfc indicates a version that is 144 commits since the
+0.1 release and is available as git commit "43cbbfc".
### Add a new "make test" target to run the test suite and actually verify its results
### Fix an infinite loop in "notmuch reply"
- This bug could be triggered by replying to a message where the
- user's primary email address did not appear in the To: header and
- the user had not configured any secondary email addresses. The bug
- was a simple re-use of the same iterator variable in nested loops.
+This bug could be triggered by replying to a message where the
+user's primary email address did not appear in the To: header and
+the user had not configured any secondary email addresses. The bug
+was a simple re-use of the same iterator variable in nested loops.
### Fix a potential SEGV in "notmuch search"
- This bug could be triggered by an author name ending in a ','.
- Admittedly - that's almost certainly a spam email, but we never
- want notmuch to crash.
+This bug could be triggered by an author name ending in a ','.
+Admittedly - that's almost certainly a spam email, but we never
+want notmuch to crash.
Emacs bug fixes
---------------
### Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
- Without this, the C++ sources could not find strcasestr and the
- final linking of notmuch would fail.
+Without this, the C++ sources could not find strcasestr and the
+final linking of notmuch would fail.
### User-configurable tags for new messages
- A new "new.tags" option is available in the configuration file to
- determine which tags are applied to new messages. Run "notmuch
- setup" to generate new documentation within ~/.notmuch-config on how
- to specify this value.
+A new "new.tags" option is available in the configuration file to
+determine which tags are applied to new messages. Run "notmuch
+setup" to generate new documentation within ~/.notmuch-config on how
+to specify this value.
### Threads search results named based on subjects that match search
- This means that when new mails arrived to a thread you've previously
- read, and the new mails have a new subject, you will see that
- subject in the search results rather than the old subject.
+This means that when new mails arrived to a thread you've previously
+read, and the new mails have a new subject, you will see that
+subject in the search results rather than the old subject.
### Faster operation of "notmuch tag" (avoid unneeded sorting)
- Since the user just wants to tag all matching messages, we can make
- things perform a bit faster by avoiding the sort.
+Since the user just wants to tag all matching messages, we can make
+things perform a bit faster by avoiding the sort.
### Even Better guessing of From: header for "notmuch reply"
- Notmuch now looks at a number of headers when trying to figure out
- the best From: header to use in a reply. This is helpful if you have
- several configured email addresses, and you also subscribe to various
- mailing lists with different addresses, (so that mails you are
- replying to won't always include your subscribed address in the To:
- header).
+Notmuch now looks at a number of headers when trying to figure out
+the best From: header to use in a reply. This is helpful if you have
+several configured email addresses, and you also subscribe to various
+mailing lists with different addresses, (so that mails you are
+replying to won't always include your subscribed address in the To:
+header).
### Indication of author names that match a search
- When notmuch displays threads as the result of a search, it now
- lists the authors that match the search before listing the other
- authors in the thread. It inserts a pipe '|' symbol between the last
- matching and first non-matching author. This is especially useful in
- a search that includes tag:unread. Now the authors of the unread
- messages in the thread are listed first.
+When notmuch displays threads as the result of a search, it now
+lists the authors that match the search before listing the other
+authors in the thread. It inserts a pipe '|' symbol between the last
+matching and first non-matching author. This is especially useful in
+a search that includes tag:unread. Now the authors of the unread
+messages in the thread are listed first.
New: Python bindings
--------------------
### An entirely new initial view for notmuch, (friendly yet powerful)
- Some of us call the new view "notmuch hello" but you can get at it
- by simply calling "emacs -f notmuch". The new view provides a search
- bar where new searches can be performed. It also displays a list of
- recent searches, along with a button to save any of these, giving it
- a new name as a "saved search". Many people find these "saved
- searches" one of the most convenient ways of organizing their mail,
- (providing all of the features of "folders" in other mail clients,
- but without any of the disadvantages).
+Some of us call the new view "notmuch hello" but you can get at it
+by simply calling "emacs -f notmuch". The new view provides a search
+bar where new searches can be performed. It also displays a list of
+recent searches, along with a button to save any of these, giving it
+a new name as a "saved search". Many people find these "saved
+searches" one of the most convenient ways of organizing their mail,
+(providing all of the features of "folders" in other mail clients,
+but without any of the disadvantages).
- Finally, this view can also optionally display all of the tags that
- exist in the database, along with a count for each tag, and a custom
- search of messages with that tag that's simply a click (or keypress)
- away.
+Finally, this view can also optionally display all of the tags that
+exist in the database, along with a count for each tag, and a custom
+search of messages with that tag that's simply a click (or keypress)
+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:
+NOTE: For users that liked the original mode of "emacs -f notmuch"
+immediately displaying a particular search result, we recommend
+instead running something like:
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
- Notmuch now plugs in well to the emacs "customize" mode to make it
- much simpler to find things about the notmuch interface that can be
- tweaked by the user.
+Notmuch now plugs in well to the emacs "customize" mode to make it
+much simpler to find things about the notmuch interface that can be
+tweaked by the user.
- You can get to this mode by starting at the main "Customize" menu in
- emacs, then browsing through "Applications", "Mail", and
- "Notmuch". Or you can go straight to "M-x customize-group"
- "notmuch".
+You can get to this mode by starting at the main "Customize" menu in
+emacs, then browsing through "Applications", "Mail", and
+"Notmuch". Or you can go straight to "M-x customize-group"
+"notmuch".
- Once you're at the customize screen, you'll see a list of documented
- options that can be manipulated along with checkboxes, drop-down
- selectors, and text-entry boxes for configuring the various
- settings.
+Once you're at the customize screen, you'll see a list of documented
+options that can be manipulated along with checkboxes, drop-down
+selectors, and text-entry boxes for configuring the various
+settings.
### Support for doing tab-completion of email addresses
- This support currently relies on an external program,
- (notmuch-addresses), that is not yet shipped with notmuch
- itself. But multiple, suitable implementations of this program have
- already been written that generate address completions by doing
- notmuch searches of your email collection. For example, providing
- first those addresses that you have composed messages to in the
- past, etc.
+This support currently relies on an external program,
+(notmuch-addresses), that is not yet shipped with notmuch
+itself. But multiple, suitable implementations of this program have
+already been written that generate address completions by doing
+notmuch searches of your email collection. For example, providing
+first those addresses that you have composed messages to in the
+past, etc.
- One such program (implemented in python with the python bindings to
- notmuch) is available via:
+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
- 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:
- line of an email message will provide matching completions.
+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:
+line of an email message will provide matching completions.
### Support for file-based (Fcc) delivery of sent messages to mail store
- This isn't yet enabled by default. To enable this, one will have to
- set the "Notmuch Fcc Dirs" setting within the notmuch customize
- screen, (see its documentation there for details). We anticipate
- making this automatic in a future release.
+This isn't yet enabled by default. To enable this, one will have to
+set the "Notmuch Fcc Dirs" setting within the notmuch customize
+screen, (see its documentation there for details). We anticipate
+making this automatic in a future release.
### New 'G' key binding to trigger mail refresh (G == "Get new mail")
- The 'G' key works wherever '=' works. Before refreshing the screen
- it calls an external program that can be used to poll email servers,
- run notmuch new and setup specific tags for the new emails. The
- script to be called should be configured with the "Notmuch Poll
- Script" setting in the customize interface. This script will
- typically invoke "notmuch new" and then perhaps several "notmuch
- tag" commands.
+The 'G' key works wherever '=' works. Before refreshing the screen
+it calls an external program that can be used to poll email servers,
+run notmuch new and setup specific tags for the new emails. The
+script to be called should be configured with the "Notmuch Poll
+Script" setting in the customize interface. This script will
+typically invoke "notmuch new" and then perhaps several "notmuch
+tag" commands.
### Implement emacs message display with the JSON output from notmuch
- This is much more robust than the previous implementation, (where
- some HTML mails and mail quoting the notmuch code with the delimiter
- characters in it would cause the parser to fall over).
+This is much more robust than the previous implementation, (where
+some HTML mails and mail quoting the notmuch code with the delimiter
+characters in it would cause the parser to fall over).
### Better handling of HTML messages and MIME attachments (inline images!)
- Allow for any MIME parts that emacs can display to be displayed
- inline. This includes inline viewing of image attachments, (provided
- the window is large enough to fit the image at its natural size).
+Allow for any MIME parts that emacs can display to be displayed
+inline. This includes inline viewing of image attachments, (provided
+the window is large enough to fit the image at its natural size).
- Much more robust handling of HTML messages. Currently both text/plain
- and text/html alternates will be rendered next to each other. In a
- future release, users will be able to decide to see only one or the
- other representation.
+Much more robust handling of HTML messages. Currently both text/plain
+and text/html alternates will be rendered next to each other. In a
+future release, users will be able to decide to see only one or the
+other representation.
- Each attachment now has its own button so that attachments can be
- saved individually (the 'w' key is still available to save all
- attachments).
+Each attachment now has its own button so that attachments can be
+saved individually (the 'w' key is still available to save all
+attachments).
### Customizable support for tidying of text/plain message content
- Many new functions are available for tidying up message
- content. These include options such as wrapping long lines,
- compressing duplicate blank lines, etc.
+Many new functions are available for tidying up message
+content. These include options such as wrapping long lines,
+compressing duplicate blank lines, etc.
- Most of these are disabled by default, but can easily be enabled by
- clicking the available check boxes under the "Notmuch Show Insert
- Text/Plain Hook" within the notmuch customize screen.
+Most of these are disabled by default, but can easily be enabled by
+clicking the available check boxes under the "Notmuch Show Insert
+Text/Plain Hook" within the notmuch customize screen.
### New support for searchable citations (even when hidden)
- When portions of overly-long citations are hidden, the contents of
- these citations will still be available for emacs' standard
- "incremental search" functions. When the search matches any portion
- of a hidden citation, the citation will become visible temporarily
- to display the search result.
+When portions of overly-long citations are hidden, the contents of
+these citations will still be available for emacs' standard
+"incremental search" functions. When the search matches any portion
+of a hidden citation, the citation will become visible temporarily
+to display the search result.
### More flexible handling of header visibility
- As an answer to complaints from many users, the To, Cc, and Date
- headers of messages are no longer hidden by default. For those users
- that liked that these were hidden, a new "Notmuch Messages Headers
- Visible" option in the customize interface can be set to nil. The
- visibility of headers can still be toggled on a per-message basis
- with the 'h' keybinding.
+As an answer to complaints from many users, the To, Cc, and Date
+headers of messages are no longer hidden by default. For those users
+that liked that these were hidden, a new "Notmuch Messages Headers
+Visible" option in the customize interface can be set to nil. The
+visibility of headers can still be toggled on a per-message basis
+with the 'h' keybinding.
- For users that don't want to see some subset of those headers, the
- new "Notmuch Message Headers" variable can be customized to list
- only those headers that should be present in the display of a message.
+For users that don't want to see some subset of those headers, the
+new "Notmuch Message Headers" variable can be customized to list
+only those headers that should be present in the display of a message.
### The Return key now toggles message visibility anywhere
- Previously this worked only on the first summary-line of a message.
+Previously this worked only on the first summary-line of a message.
### Customizable formatting of search results
- The user can easily customize the order, width, and formatting of
- the various fields in a "notmuch search" buffer. See the "Notmuch
- Search Result Format" section of the customize interface.
+The user can easily customize the order, width, and formatting of
+the various fields in a "notmuch search" buffer. See the "Notmuch
+Search Result Format" section of the customize interface.
### Generate nicer names for search buffers when using a saved search
### Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
- This can be somewhat faster when sorting simply isn't desired. For
- example when collecting a set of messages that will all be
- manipulated identically, (adding a tag, removing a tag, deleting the
- messages), then there's no advantage to sorting the messages by
- date.
+This can be somewhat faster when sorting simply isn't desired. For
+example when collecting a set of messages that will all be
+manipulated identically, (adding a tag, removing a tag, deleting the
+messages), then there's no advantage to sorting the messages by
+date.
Build fixes
-----------
### Fix to compile against GMime 2.6
- Previously notmuch insisted on being able to find GMime 2.4, (even
- though GMime 2.6 would have worked all along).
+Previously notmuch insisted on being able to find GMime 2.4, (even
+though GMime 2.6 would have worked all along).
### Fix configure script to accept (and ignore) various standard options
- For example, those that the Gentoo build scripts expect configure to
- accept are now all accepted.
+For example, those that the Gentoo build scripts expect configure to
+accept are now all accepted.
Test suite
----------
### Better display of output from failed tests
- Now shows failures with diff rather than forcing the user to gaze at
- complete actual and expected output looking for deviation.
+Now shows failures with diff rather than forcing the user to gaze at
+complete actual and expected output looking for deviation.
### `notmuch search --output=(summary|threads|messages|tags|files)`
- This new option allows for particular items to be returned from
- notmuch searches. The "summary" option is the default and behaves
- just as "notmuch search" has historically behaved.
+This new option allows for particular items to be returned from
+notmuch searches. The "summary" option is the default and behaves
+just as "notmuch search" has historically behaved.
- The new option values allow for thread IDs, message IDs, lists of
- tags, and lists of filenames to be returned from searches. It is
- expected that this new option will be very useful in shell
- scripts. For example:
+The new option values allow for thread IDs, message IDs, lists of
+tags, and lists of filenames to be returned from searches. It is
+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"
### `notmuch show --format=mbox <search-specification>`
- This new option allows for the messages matching a search
- specification to be presented as an mbox. Specifically the "mboxrd"
- format is used which allows for reversible quoting of lines
- beginning with "From ". A reader should remove a single '>' from the
- beginning of all lines beginning with one or more '>' characters
- followed by the 5 characters "From ".
+This new option allows for the messages matching a search
+specification to be presented as an mbox. Specifically the "mboxrd"
+format is used which allows for reversible quoting of lines
+beginning with "From ". A reader should remove a single '>' from the
+beginning of all lines beginning with one or more '>' characters
+followed by the 5 characters "From ".
### `notmuch config [get|set] <section>.<item> [value ...]`
- The new top-level "config" command allows for any value in the
- notmuch configuration file to be queried or set to a new value. Both
- single-valued and multi-valued items are supported, as our any
- custom items stored in the configuration file.
+The new top-level "config" command allows for any value in the
+notmuch configuration file to be queried or set to a new value. Both
+single-valued and multi-valued items are supported, as our any
+custom items stored in the configuration file.
### Avoid setting Bcc header in "notmuch reply"
- We decided that this was a bit heavy-handed as the actual mail
- user-agent should be responsible for setting any Bcc option. Also,
- see below for the notmuch/emacs user-agent now setting an Fcc by
- default rather than Bcc.
+We decided that this was a bit heavy-handed as the actual mail
+user-agent should be responsible for setting any Bcc option. Also,
+see below for the notmuch/emacs user-agent now setting an Fcc by
+default rather than Bcc.
New library features
--------------------
### Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
- These are simply functions for querying properties of a
- `notmuch_query_t` object.
+These are simply functions for querying properties of a
+`notmuch_query_t` object.
New emacs features
------------------
### Enable Fcc of all sent messages by default (to "sent" directory)
- All messages sent from the emacs interface will now be saved to the
- notmuch mail store where they will be incorporated to the database
- by the next "notmuch new". By default, messages are saved to the
- "sent" directory at the top-level of the mail store. This directory
- can be customized by means of the "Notmuch Fcc Dirs" option in the
- notmuch customize interface.
+All messages sent from the emacs interface will now be saved to the
+notmuch mail store where they will be incorporated to the database
+by the next "notmuch new". By default, messages are saved to the
+"sent" directory at the top-level of the mail store. This directory
+can be customized by means of the "Notmuch Fcc Dirs" option in the
+notmuch customize interface.
### Ability to all open messages in a thread to a pipe
- Historically, the '|' keybinding allows for piping a single message
- to an external command. Now, by prefixing this key with a prefix
- argument, (for example, by pressing "Control-U |"), all open
- messages in the current thread will be sent to the external command.
+Historically, the '|' keybinding allows for piping a single message
+to an external command. Now, by prefixing this key with a prefix
+argument, (for example, by pressing "Control-U |"), all open
+messages in the current thread will be sent to the external command.
### Optional support for detecting inline patches
- This hook is disabled by default but can be enabled with a checkbox
- under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
- interface. It allows for inline patches to be detected and treated
- as if they were attachments, (with context-sensitive highlighting).
+This hook is disabled by default but can be enabled with a checkbox
+under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
+interface. It allows for inline patches to be detected and treated
+as if they were attachments, (with context-sensitive highlighting).
### Automatically tag messages as "replied" when sending a reply
- Messages replied to within the emacs interface will now be tagged as
- "replied". This feature can easily be customized to add or remove
- other tags as well. For example, a user might use a tag of
- "needs-reply" and can configure this feature to automatically remove
- that tag when replying. See "Notmuch Message Mark Replied" in the
- notmuch customize interface.
+Messages replied to within the emacs interface will now be tagged as
+"replied". This feature can easily be customized to add or remove
+other tags as well. For example, a user might use a tag of
+"needs-reply" and can configure this feature to automatically remove
+that tag when replying. See "Notmuch Message Mark Replied" in the
+notmuch customize interface.
### Allow search-result color specifications to overlay each other
- For example, one tag can specify the background color of matching
- lines, while another can specify the foreground. With this change,
- both settings will now be visible simultaneously, (which was not the
- case in previous releases). See "Notmuch Search Line Faces" in the
- notmuch customize interface.
+For example, one tag can specify the background color of matching
+lines, while another can specify the foreground. With this change,
+both settings will now be visible simultaneously, (which was not the
+case in previous releases). See "Notmuch Search Line Faces" in the
+notmuch customize interface.
### Make hidden author names still available for incremental search
- When there is insufficient space to display all authors of a thread
- in search results, the names of hidden authors are now still made
- available to emacs' incremental search commands. As the user
- searches, matching lines will temporarily expand to show the hidden
- names.
+When there is insufficient space to display all authors of a thread
+in search results, the names of hidden authors are now still made
+available to emacs' incremental search commands. As the user
+searches, matching lines will temporarily expand to show the hidden
+names.
### New binding of Control-TAB (works like TAB in reverse)
- Many notmuch nodes already use TAB to navigate forward through
- various items allowing actions, (message headers, email attachments,
- etc.). The new Control-TAB binding operates similarly but in the
- opposite direction.
+Many notmuch nodes already use TAB to navigate forward through
+various items allowing actions, (message headers, email attachments,
+etc.). The new Control-TAB binding operates similarly but in the
+opposite direction.
New build-system features
-------------------------
### Various portability fixes have been applied
- These include fixes for build failures on at least Solaris, FreeBSD,
- and Fedora systems. We're hopeful that the notmuch code base is now
- more portable than ever before.
+These include fixes for build failures on at least Solaris, FreeBSD,
+and Fedora systems. We're hopeful that the notmuch code base is now
+more portable than ever before.
### Arrange for libnotmuch to be found automatically after make install
- The notmuch build system is now careful to help the user avoid
- errors of the form "libnotmuch.so could not be found" immediately
- after installing. This support takes two forms:
+The notmuch build system is now careful to help the user avoid
+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
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
- the notmuch library, and without having to manually set environment
- variables such as `LD_LIBRARY_PATH`.
+When this support works, the user should be able to run notmuch
+immediately after "make install", without any errors trying to find
+the notmuch library, and without having to manually set environment
+variables such as `LD_LIBRARY_PATH`.
### Check compiler/linker options before using them
- The configure script now carefully checks that any desired
- compilation options, (whether for enabling compiler warnings, or for
- embedding rpath, etc.), are supported. Only supported options are
- used in the resulting Makefile.
+The configure script now carefully checks that any desired
+compilation options, (whether for enabling compiler warnings, or for
+embedding rpath, etc.), are supported. Only supported options are
+used in the resulting Makefile.
New test-suite features
-----------------------
### New modularization of test suite
- Thanks to a gracious relicensing of the test-suite infrastructure
- from the git project, notmuch now has a modular test suite. This
- provides the ability to run individual sections of the test suite
- rather than the whole things. It also provides better summary of
- test results, with support for tests that are expected to fail
- (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
- it easy to run the test suite within valgrind (pass --valgrind to
- notmuch-test or to any sub-script) which has been very useful.
+Thanks to a gracious relicensing of the test-suite infrastructure
+from the git project, notmuch now has a modular test suite. This
+provides the ability to run individual sections of the test suite
+rather than the whole things. It also provides better summary of
+test results, with support for tests that are expected to fail
+(BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
+it easy to run the test suite within valgrind (pass --valgrind to
+notmuch-test or to any sub-script) which has been very useful.
### New testing of emacs interface
- The test suite has been augmented to allow automated testing of the
- emacs interfaces. So far, this includes basic searches, display of
- threads, and tag manipulation. This also includes a test that a new
- message can successfully be sent out through a (dummy) SMTP server
- and that said message is successfully integrated into the notmuch
- database via the FCC setting.
+The test suite has been augmented to allow automated testing of the
+emacs interfaces. So far, this includes basic searches, display of
+threads, and tag manipulation. This also includes a test that a new
+message can successfully be sent out through a (dummy) SMTP server
+and that said message is successfully integrated into the notmuch
+database via the FCC setting.
General bug fixes
-----------------
### Fix potential corruption of database when "notmuch new" is interrupted
- Previously, an interruption of "notmuch new" would (rarely) result
- in a corrupt database. The corruption would manifest itself by a
- persistent error of the form:
+Previously, an interruption of "notmuch new" would (rarely) result
+in a corrupt database. The corruption would manifest itself by a
+persistent error of the form:
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.
+The message-adding code has been carefully audited and reworked to
+avoid this sort of corruption regardless of when it is interrupted.
### Fix failure with extremely long message ID headers
- Previously, a message with an extremely long message ID, (say, more
- than 300 characters), would fail to be added to notmuch, (triggering
- Xapian exceptions). This has now been fixed.
+Previously, a message with an extremely long message ID, (say, more
+than 300 characters), would fail to be added to notmuch, (triggering
+Xapian exceptions). This has now been fixed.
### Fix for messages with "charset=unknown-8bit"
- Previously, messages with this charset would cause notmuch to emit a
- GMime warning, (which would then trip up emacs or other interfaces
- parsing the notmuch results).
+Previously, messages with this charset would cause notmuch to emit a
+GMime warning, (which would then trip up emacs or other interfaces
+parsing the notmuch results).
### Fix `notmuch_query_search_threads` function to return NULL on any exception
### Fix "notmuch search" to return non-zero if `notmuch_query_search_threads` fails
- Previously, this command could confusingly report a Xapian
- exception, yet still return an error code of 0. It now correctly
- returns a failing error code of 1 in this case.
+Previously, this command could confusingly report a Xapian
+exception, yet still return an error code of 0. It now correctly
+returns a failing error code of 1 in this case.
Emacs bug fixes
---------------
### Fix to handle a message with a subject containing, for example "[1234]"
- Previously, a message subject containing a sequence of digits within
- square brackets would cause the emacs interface to mis-parse the
- output of "notmuch search". This would result in the message being
- mis-displayed and prevent the user from manipulating the message in
- the emacs interface.
+Previously, a message subject containing a sequence of digits within
+square brackets would cause the emacs interface to mis-parse the
+output of "notmuch search". This would result in the message being
+mis-displayed and prevent the user from manipulating the message in
+the emacs interface.
### Fix to correctly handle message IDs containing ".."
- The emacs interface now properly quotes message IDs to avoid a
- Xapian bug in which the ".." within a message ID would be
- misinterpreted as a numeric range specification.
+The emacs interface now properly quotes message IDs to avoid a
+Xapian bug in which the ".." within a message ID would be
+misinterpreted as a numeric range specification.
Python-binding fixes
--------------------
### Fix emacs initialization so "M-x notmuch" works for users by default
- Now, a new Debian user can immediately run "emacs -f notmuch" after
- "apt-get install notmuch". Previously, the user would have had to
- edit the ~/.emacs file to add "(require 'notmuch)" before this would
- work.
+Now, a new Debian user can immediately run "emacs -f notmuch" after
+"apt-get install notmuch". Previously, the user would have had to
+edit the ~/.emacs file to add "(require 'notmuch)" before this would
+work.
### Maildir-flag synchronization
- Notmuch now knows how to synchronize flags in maildir filenames with
- tags in the notmuch database. The following flag/tag mappings are
- supported:
+Notmuch now knows how to synchronize flags in maildir filenames with
+tags in the notmuch database. The following flag/tag mappings are
+supported:
Flag <-> Tag
---- -----
'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
- adding the "replied" tag to a message will cause the file to be
- renamed with an 'R' flag).
+The synchronization occurs in both directions, (for example, adding
+the 'S' flag to a file will cause the "unread" tag to be added, and
+adding the "replied" tag to a message will cause the file to be
+renamed with an 'R' flag).
- This synchronization is enabled by default for users of the
- command-line interface, (though only files in directories named
- "cur" or "new" will be renamed). It can be disabled by setting the
- new `maildir.synchronize_flags` option in the configuration file. For
- example:
+This synchronization is enabled by default for users of the
+command-line interface, (though only files in directories named
+"cur" or "new" will be renamed). It can be disabled by setting the
+new `maildir.synchronize_flags` option in the configuration file. For
+example:
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
- [maildir] section added to the configuration file.
+Users upgrading may also want to run "notmuch setup" once (just
+accept the existing configuration) to get a new, nicely-commented
+[maildir] section added to the configuration file.
- For users of the notmuch library, the new synchronization
- functionality is available with the following two new functions:
+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
- It is anticipated that future improvements to this support will
- allow for safe synchronization of the 'T' flag with the "deleted"
- tag, as well as support for custom flag/tag mappings.
+It is anticipated that future improvements to this support will
+allow for safe synchronization of the 'T' flag with the "deleted"
+tag, as well as support for custom flag/tag mappings.
New library features
--------------------
### Support for querying multiple filenames for a single message
- It is common for the mailstore to contain multiple files with the
- same message ID. Previously, notmuch would always hide these
- duplicate files, (returning a single, arbitrary filename with
- `notmuch_message_get_filename`).
+It is common for the mailstore to contain multiple files with the
+same message ID. Previously, notmuch would always hide these
+duplicate files, (returning a single, arbitrary filename with
+`notmuch_message_get_filename`).
- With this release, library users can access all filenames for a
- message with the new function:
+With this release, library users can access all filenames for a
+message with the new function:
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 all available filenames for a given message.
+Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
+and `notmuch_filenames_move_to_next` it is now possible to iterate
+over all available filenames for a given message.
New command-line features
-------------------------
### New "notmuch show --format=raw" for getting at original email contents
- This new feature allows for a fully-functional email client to be
- built on top of the notmuch command-line without needing any direct
- access to the mail store itself.
+This new feature allows for a fully-functional email client to be
+built on top of the notmuch command-line without needing any direct
+access to the mail store itself.
- For example, it's now possible to run "emacs -f notmuch" on a local
- machine with only ssh access to the mail store/notmuch database. To
- do this, simply set the notmuch-command variable in emacs to the
- name of a script containing:
+For example, it's now possible to run "emacs -f notmuch" on a local
+machine with only ssh access to the mail store/notmuch database. To
+do this, simply set the notmuch-command variable in emacs to the
+name of a script containing:
ssh user@host notmuch "$@"
- If the ssh client has enabled connection sharing (ControlMaster
- option in OpenSSH), the emacs interface can be quite responsive this
- way.
+If the ssh client has enabled connection sharing (ControlMaster
+option in OpenSSH), the emacs interface can be quite responsive this
+way.
General bug fixes
-----------------
### Fix "notmuch search" to print nothing when nothing matches
- The 0.4 release had a bug in which:
+The 0.4 release had a bug in which:
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
- the --format=json output, (which would previously produce "[]" and
- now produces nothing).
+would produce a single blank line of output, (where previous
+versions would produce no output. This fix also causes a change in
+the --format=json output, (which would previously produce "[]" and
+now produces nothing).
Emacs interface improvements
----------------------------
### Allow for notmuch-fcc-dirs to have a value of nil
- Also, the more complex form of notmuch-fcc-dirs now has a slightly
- different format. It no longer has a special first-element, fallback
- string. Instead it's now a list of cons cells where the car of each
- cell is a regular expression to be matched against the sender
- address, and the cdr is the name of a folder to use for an FCC. So
- the old fallback behavior can be achieved by including a final cell
- of (".*" . "default-fcc-folder").
+Also, the more complex form of notmuch-fcc-dirs now has a slightly
+different format. It no longer has a special first-element, fallback
+string. Instead it's now a list of cons cells where the car of each
+cell is a regular expression to be matched against the sender
+address, and the cdr is the name of a folder to use for an FCC. So
+the old fallback behavior can be achieved by including a final cell
+of (".*" . "default-fcc-folder").
Vim interface improvements
--------------------------
### Felipe Contreras provided a number of updates for the vim interface
- These include optimizations, support for newer versions of vim, fixed
- support for sending mail on modern systems, new commands, and
- various cleanups.
+These include optimizations, support for newer versions of vim, fixed
+support for sending mail on modern systems, new commands, and
+various cleanups.
New bindings
------------
### Re-export Xapian exception typeinfo symbols
- It turned out our aggressive symbol hiding caused problems for
- people running gcc 4.4.5.
+It turned out our aggressive symbol hiding caused problems for
+people running gcc 4.4.5.
### Folder-based searching
- Notmuch queries can now include a search term to match the
- directories in which mail files are stored (within the mail
- storage). The syntax is as follows:
+Notmuch queries can now include a search term to match the
+directories in which mail files are stored (within the mail
+storage). The syntax is as follows:
folder:<path>
- For example, one might use things such as:
+For example, one might use things such as:
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.
+to match any path containing a directory "spam", "work/todo", or
+containing a directory starting with "2011-", respectively.
- This feature is particularly useful for users of delivery-agent
- software (such as procmail or maildrop) that is filtering mail and
- delivering it to particular folders, or users of systems such as
- Gmail that use filesystem directories to indicate message tags.
+This feature is particularly useful for users of delivery-agent
+software (such as procmail or maildrop) that is filtering mail and
+delivering it to particular folders, or users of systems such as
+Gmail that use filesystem directories to indicate message tags.
- NOTE: Only messages that are newly indexed with this version of
- notmuch will be searchable with folder: terms. In order to enable
- this feature for all mail, the entire notmuch index will need to be
- rebuilt as follows:
+NOTE: Only messages that are newly indexed with this version of
+notmuch will be searchable with folder: terms. In order to enable
+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)
### Support for PGP/MIME
- Both the command-line interface and the emacs-interface have new
- support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
- and Jameson Graef Rollins for making this happen.
+Both the command-line interface and the emacs-interface have new
+support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
+and Jameson Graef Rollins for making this happen.
### New, automatic tags: "signed" and "encrypted"
- These tags will automatically be applied to messages containing
- multipart/signed and multipart/encrypted parts.
+These tags will automatically be applied to messages containing
+multipart/signed and multipart/encrypted parts.
- NOTE: Only messages that are newly indexed with this version of
- notmuch will receive these tags.
+NOTE: Only messages that are newly indexed with this version of
+notmuch will receive these tags.
New command-line features
-------------------------
### Add new "notmuch show --verify" option for signature verification
- This option instruct notmuch to verify the signature of
- PGP/MIME-signed parts.
+This option instruct notmuch to verify the signature of
+PGP/MIME-signed parts.
### Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
- This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
- Note that this feature currently requires gpg-agent and a passphrase entry
- tool (e.g. pinentry-gtk or pinentry-curses).
+This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
+Note that this feature currently requires gpg-agent and a passphrase entry
+tool (e.g. pinentry-gtk or pinentry-curses).
### Proper nesting of multipart parts in "notmuch show" output
- MIME parts are now display with proper nesting to reflect original
- MIME hierarchy of a message. This allows clients to correctly
- analyze the MIME structure, (such as, for example, determining to
- which parts a signature part applies).
+MIME parts are now display with proper nesting to reflect original
+MIME hierarchy of a message. This allows clients to correctly
+analyze the MIME structure, (such as, for example, determining to
+which parts a signature part applies).
### Add new "notmuch show --part" option
- This is a replacement for the older "notmuch part" command, (which
- is now deprecated—it should still work as always, but is no longer
- documented). Putting part output under "notmuch show" allows for all
- of the "notmuch show" options to be applied when extracting a single
- part, (such as --format=json for extracting a message part with JSON
- formatting).
+This is a replacement for the older "notmuch part" command, (which
+is now deprecated—it should still work as always, but is no longer
+documented). Putting part output under "notmuch show" allows for all
+of the "notmuch show" options to be applied when extracting a single
+part, (such as --format=json for extracting a message part with JSON
+formatting).
### Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
- The "notmuch search-tags" sub-command has been redundant since the
- addition of the --output=tags option to "notmuch search". We now
- make that more clear by deprecating "notmuch search-tags", (dropping
- it from the documentation). We do continue to support the old syntax
- by translating it internally to the new call.
+The "notmuch search-tags" sub-command has been redundant since the
+addition of the --output=tags option to "notmuch search". We now
+make that more clear by deprecating "notmuch search-tags", (dropping
+it from the documentation). We do continue to support the old syntax
+by translating it internally to the new call.
Performance improvements
------------------------
### Faster searches (by doing fewer searches to construct threads)
- Whenever a user asks for search results as threads, notmuch first
- performs a search for messages matching the query, then performs
- additional searches to find other messages in the resulting threads.
+Whenever a user asks for search results as threads, notmuch first
+performs a search for messages matching the query, then performs
+additional searches to find other messages in the resulting threads.
- Removing inefficiencies and redundancies in these secondary searches
- results in a measured speedups of 1.5x for a typical search.
+Removing inefficiencies and redundancies in these secondary searches
+results in a measured speedups of 1.5x for a typical search.
### Faster searches (by doing fewer passes to gather message data)
- Optimizing Xapian data access patterns (using a single pass to get
- all message-document data rather than a pass for each data type)
- results in a measured speedup of 1.7x for a typical search.
+Optimizing Xapian data access patterns (using a single pass to get
+all message-document data rather than a pass for each data type)
+results in a measured speedup of 1.7x for a typical search.
- The benefits of this optimization combine with the preceding
- optimization. With both in place, Austin Clements measured a speedup
- of 2.5x for a search of all messages in his inbox (was 4.5s, now
- 1.8s). Thanks, Austin!
+The benefits of this optimization combine with the preceding
+optimization. With both in place, Austin Clements measured a speedup
+of 2.5x for a search of all messages in his inbox (was 4.5s, now
+1.8s). Thanks, Austin!
### Faster initial indexing
- More efficient indexing of new messages results in a measured
- speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
- rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
+More efficient indexing of new messages results in a measured
+speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
+rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
### Make "notmuch new" faster for unchanged directories
- Optimizing to not do any further examinations of sub-directories
- when the filesystem indicates that a directory is unchanged from the
- last "notmuch new" results in measured speedups of 8.5 for the "No
- new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
+Optimizing to not do any further examinations of sub-directories
+when the filesystem indicates that a directory is unchanged from the
+last "notmuch new" results in measured speedups of 8.5 for the "No
+new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
New emacs-interface features
----------------------------
### Support for PGP/MIME (GnuPG)
- Automatically indicate validity of signatures for multipart/signed
- messages. Automatically display decrypted content for
- multipart/encrypted messages. See the emacs variable
- notmuch-crypto-process-mime for more information. Note that this
- needs gpg-agent and a pinentry tool just as the command-line tools.
- Also note there is no support SMIME yet.
+Automatically indicate validity of signatures for multipart/signed
+messages. Automatically display decrypted content for
+multipart/encrypted messages. See the emacs variable
+notmuch-crypto-process-mime for more information. Note that this
+needs gpg-agent and a pinentry tool just as the command-line tools.
+Also note there is no support SMIME yet.
### Output of pipe command is now displayed if pipe command fails
- This is extremely useful in the common use case of piping a patch to
- "git am". If git fails to cleanly merge the patch the error messages
- from the failed merge are now clearly displayed to the user, (where
- previously they were silently hidden from the user).
+This is extremely useful in the common use case of piping a patch to
+"git am". If git fails to cleanly merge the patch the error messages
+from the failed merge are now clearly displayed to the user, (where
+previously they were silently hidden from the user).
### User-selectable From address
- A user can choose which configured email addresses should be used as
- the From address whenever composing a new message. To do so, simply
- press C-u before the command which will open a new message. Emacs
- will prompt for the from address to use.
+A user can choose which configured email addresses should be used as
+the From address whenever composing a new message. To do so, simply
+press C-u before the command which will open a new message. Emacs
+will prompt for the from address to use.
- The user can customize the "Notmuch Identities" setting in the
- notmuch customize group in order to use addresses other than those in
- the notmuch configuration file if desired.
+The user can customize the "Notmuch Identities" setting in the
+notmuch customize group in order to use addresses other than those in
+the notmuch configuration file if desired.
- The user can also choose to always be prompted for the from address
- when composing a new message (without having to use C-u) by setting
- the "Notmuch Always Prompt For Sender" option in the notmuch
- customize group.
+The user can also choose to always be prompted for the from address
+when composing a new message (without having to use C-u) by setting
+the "Notmuch Always Prompt For Sender" option in the notmuch
+customize group.
### Hiding of repeated subjects in collapsed thread view
- In notmuch-show mode, if a collapsed message has the same subject as
- its parent, the subject is not shown.
+In notmuch-show mode, if a collapsed message has the same subject as
+its parent, the subject is not shown.
### Automatic detection and hiding of original message in top-posted message
- When a message contains a line looking something like:
+When a message contains a line looking something like:
----- 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"
- button to display it again). This makes the handling of top-posted
- citations work much like conventional citations.
+emacs hides this and all subsequent lines as an "original message",
+(allowing the user to click or press enter on the "original message"
+button to display it again). This makes the handling of top-posted
+citations work much like conventional citations.
### New hooks for running code when tags are modified
- Some users want to perform additional actions whenever a particular
- tag is added/removed from a message. This could be used to, for
- example, interface with some external spam-recognition training
- tool. To facilitate this, two new hooks are added which can be
- modified in the following settings of the notmuch customize group:
+Some users want to perform additional actions whenever a particular
+tag is added/removed from a message. This could be used to, for
+example, interface with some external spam-recognition training
+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
### New optional support for hiding some multipart/alternative parts
- Many emails are sent with redundant content within a
- multipart/alternative group (such as a text/plain part as well as a
- text/html part). Users can configure the setting:
+Many emails are sent with redundant content within a
+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
- to "off" in the notmuch customize group to have the interface
- automatically hide some part alternatives (such as text/html
- parts). This new part hiding is not configured by default yet
- because there's not yet a simple way to re-display such a hidden
- part if it is not actually redundant with a displayed part.
+to "off" in the notmuch customize group to have the interface
+automatically hide some part alternatives (such as text/html
+parts). This new part hiding is not configured by default yet
+because there's not yet a simple way to re-display such a hidden
+part if it is not actually redundant with a displayed part.
### Better rendering of text/x-vcalendar parts
- These parts are now displayed in a format suitable for use with the
- emacs diary.
+These parts are now displayed in a format suitable for use with the
+emacs diary.
### Avoid getting confused by Subject and Author fields with newline characters
- Replacing all characters with ASCII code less than 32 with a question mark.
+Replacing all characters with ASCII code less than 32 with a question mark.
### Cleaner display of From line in email messages
- Remove double quotes, and drop "name" if it's actually just a repeat of
- the email address.
+Remove double quotes, and drop "name" if it's actually just a repeat of
+the email address.
Vim interface improvements
--------------------------
### Ruby bindings are now much more complete
- Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
- `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
+Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
+`MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
### Python bindings have been updated and extended
- (docs online at http://packages.python.org/notmuch/)
+(docs online at http://packages.python.org/notmuch/)
New bindings:
### Added support for building in a directory other than the source directory
- This can be used with the widely-supported idiom of simply running
- the configure script from some other directory:
+This can be used with the widely-supported idiom of simply running
+the configure script from some other directory:
mkdir build
cd build
### Fix to save configure options for future, implicit runs of configure
- When a user updates the source (such as with "git pull") calling
- "make" may cause an automatic re-run of the configure script. When
- this happens, the configure script will automatically be called with
- the same options the user originally passed in the most-recent
- manual invocation of configure.
+When a user updates the source (such as with "git pull") calling
+"make" may cause an automatic re-run of the configure script. When
+this happens, the configure script will automatically be called with
+the same options the user originally passed in the most-recent
+manual invocation of configure.
New test-suite feature
----------------------
### Binary for bash for running test suite now located via PATH
- The notmuch test suite requires a fairly recent version of bash (>=
- bash 4). As some systems supply an older version of bash at
- /bin/bash, the test suite is now updated to search $PATH to locate
- the bash binary. This allows users of systems with old /bin/bash to
- simply install bash >= 4 somewhere on $PATH before /bin and then use
- the test suite.
+The notmuch test suite requires a fairly recent version of bash (>=
+bash 4). As some systems supply an older version of bash at
+/bin/bash, the test suite is now updated to search $PATH to locate
+the bash binary. This allows users of systems with old /bin/bash to
+simply install bash >= 4 somewhere on $PATH before /bin and then use
+the test suite.
### Support for testing output with a trailing newline
- Previously, some tests would fail to notice a difference in the
- presence/absence of a trailing newline in a program output, (which
- has led to bugs in the past). Now, carefully-written tests (using
- `test_expect_equal_file` rather than `test_expect_equal`) will detect
- any change in the presence/absence of a trailing newline. Many tests
- are updated to take advantage of this.
+Previously, some tests would fail to notice a difference in the
+presence/absence of a trailing newline in a program output, (which
+has led to bugs in the past). Now, carefully-written tests (using
+`test_expect_equal_file` rather than `test_expect_equal`) will detect
+any change in the presence/absence of a trailing newline. Many tests
+are updated to take advantage of this.
### Avoiding accessing user's $HOME while running test suite
- The test suite now carefully creates its own HOME directory. This
- allows the test suite to be run with no existing HOME directory, (as
- some build systems apparently do), and avoids test-suite differences
- due to configuration files in the users HOME directory.
+The test suite now carefully creates its own HOME directory. This
+allows the test suite to be run with no existing HOME directory, (as
+some build systems apparently do), and avoids test-suite differences
+due to configuration files in the users HOME directory.
General bug fixes
### Output *all* files for "notmuch search --output=files"
- For the cases where multiple files have the same Message ID,
- previous versions of notmuch would output only one such file. This
- command is now fixed to correctly output all files.
+For the cases where multiple files have the same Message ID,
+previous versions of notmuch would output only one such file. This
+command is now fixed to correctly output all files.
### Fixed spurious search results from "overlapped" indexing of addresses
- This fixed a bug where a search for:
+This fixed a bug where a search for:
to:user@elsewhere.com
- would incorrectly match a message sent:
+would incorrectly match a message sent:
To: user@example,com, someone@elsewhere.com
### Fix --output=json when search has no results
- A bug present since notmuch 0.4 had caused searches with no results
- to produce an invalid json object. This is now fixed to cleanly
- return a valid json object representing an empty array "[]" as
- expected.
+A bug present since notmuch 0.4 had caused searches with no results
+to produce an invalid json object. This is now fixed to cleanly
+return a valid json object representing an empty array "[]" as
+expected.
### Fix the automatic detection of the From address for "notmuch reply" from the Received headers in some cases
### Fix libnotmuch library to only export notmuch API functions
- Previous release of the notmuch library also exported some Xapian
- C++ exception type symbols. These were never part of the library
- interface and were never intended to be exported.
+Previous release of the notmuch library also exported some Xapian
+C++ exception type symbols. These were never part of the library
+interface and were never intended to be exported.
Emacs-interface bug fixes
-------------------------
### Display any unexpected output or errors from "notmuch search" invocations
- Previously any misformatted output or trailing error messages were
- silently ignored. This output is now clearly displayed. This fix was
- very helpful in identifying and fixing the bug described below.
+Previously any misformatted output or trailing error messages were
+silently ignored. This output is now clearly displayed. This fix was
+very helpful in identifying and fixing the bug described below.
### Fix bug where some threads would be missing from large search results
- When a search returned a "large" number of results, the emacs
- interface was incorrectly dropping one thread every time the output
- of the "notmuch search" process spanned the emacs read-buffer. This
- is now fixed.
+When a search returned a "large" number of results, the emacs
+interface was incorrectly dropping one thread every time the output
+of the "notmuch search" process spanned the emacs read-buffer. This
+is now fixed.
### Avoid re-compression of .gz files (and similar) when saving attachment
- Emacs was being too clever for its own good and trying to
- re-compress pre-compressed .gz files when saving such attachments
- (potentially corrupting the attachment). The emacs interface is
- fixed to avoid this bug.
+Emacs was being too clever for its own good and trying to
+re-compress pre-compressed .gz files when saving such attachments
+(potentially corrupting the attachment). The emacs interface is
+fixed to avoid this bug.
### Fix hiding of a message when a previously-hidden citation is visible
- Previously the citation would remain visible in this case. This is
- fixed so that hiding a message hides all parts.
+Previously the citation would remain visible in this case. This is
+fixed so that hiding a message hides all parts.
### Generate notmuch.sym after the relevant object files
- This fixes a bug in parallel building. Thanks to Thomas Jost for the
- patch.
+This fixes a bug in parallel building. Thanks to Thomas Jost for the
+patch.
### Improved handling of message/rfc822 parts
- Both in the CLI and the emacs interface. Output of rfc822 parts now
- includes the primary headers, as well as the body and all subparts.
- Output of the completely raw rfc822-formatted message, including all
- headers, is unfortunately not yet supported (but hopefully will be
- soon).
+Both in the CLI and the emacs interface. Output of rfc822 parts now
+includes the primary headers, as well as the body and all subparts.
+Output of the completely raw rfc822-formatted message, including all
+headers, is unfortunately not yet supported (but hopefully will be
+soon).
### Improved Build system portability
- Certain parts of the shell script generating notmuch.sym were
- specific to the GNU versions of sed and nm. The new version should
- be more portable to e.g. OpenBSD.
+Certain parts of the shell script generating notmuch.sym were
+specific to the GNU versions of sed and nm. The new version should
+be more portable to e.g. OpenBSD.
### Documentation update for Ruby bindings
- Added documentation, typo fixes, and improved support for rdoc.
+Added documentation, typo fixes, and improved support for rdoc.
### Unicode, iterator, PEP8 changes for python bindings
### Correct handling of interruptions during `notmuch new`
- `notmuch new` now operates as a series of small, self-consistent
- transactions, so it can correctly resume after an interruption or
- crash. Previously, interruption could lose existing tags, fail to
- detect messages on resume, or leave the database in a state
- temporarily or permanently inconsistent with the mail store.
+`notmuch new` now operates as a series of small, self-consistent
+transactions, so it can correctly resume after an interruption or
+crash. Previously, interruption could lose existing tags, fail to
+detect messages on resume, or leave the database in a state
+temporarily or permanently inconsistent with the mail store.
Library changes
---------------
### New functions
- `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
- allow multiple database operations to be performed atomically.
+`notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
+allow multiple database operations to be performed atomically.
- `notmuch_database_find_message_by_filename` does exactly what it says.
+`notmuch_database_find_message_by_filename` does exactly what it says.
### API changes
- `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
- a status indicator and uses an output parameter for the
- message. This change required changing the SONAME of libnotmuch to
- libnotmuch.so.2
+`notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
+a status indicator and uses an output parameter for the
+message. This change required changing the SONAME of libnotmuch to
+libnotmuch.so.2
Python bindings changes
-----------------------
Reply formatting cleanup
------------------------
- `notmuch reply` no longer includes notification that non-leafnode
- MIME parts are being suppressed.
+`notmuch reply` no longer includes notification that non-leafnode
+MIME parts are being suppressed.