]> git.notmuchmail.org Git - notmuch/blobdiff - NEWS
NEWS: untabified and added file local variables block
[notmuch] / NEWS
diff --git a/NEWS b/NEWS
index 3bfb2b4a36b7efc2bd86b8217c13f673821bd12c..500e7a71d1b990c338ee93ddb1cd81713579dc8c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,554 @@
-Notmuch 0.8 (2011-09-05)
+Notmuch 0.13 (2012-xx-xx)
+=========================
+
+Command-Line Interface
+----------------------
+
+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).
+
+JSON reply format
+
+  "notmuch reply" can now produce JSON output that contains the headers
+  for a reply message and full information about the original message
+  begin replied to. This allows MUAs to create replies intelligtently.
+  For example, an MUA that can parse HTML might quote HTML parts.
+
+  Calling notmuch reply with --format=json imposes the restriction that
+  only a single message is returned by the search, as replying to
+  multiple messages does not have a well-defined behavior. The default
+  retains its current behavior for multiple message replies.
+
+Tag exclusion
+
+  Tags can be automatically excluded from search results by adding them
+  to the new 'search.exclude_tags' option in the Notmuch config file.
+
+  This behaviour can be overridden by explicitly including an excluded
+  tag in your query, for example:
+
+    notmuch search $your_query and tag:$excluded_tag
+
+  Existing users will probably want to run "notmuch setup" again to add
+  the new well-commented [search] section to the configuration file.
+
+  For new configurations, accepting the default setting will cause the
+  tags "deleted" and "spam" to be excluded, equivalent to running:
+
+    notmuch config set search.exclude_tags deleted spam
+
+Raw show format changes
+
+  The output of show --format=raw has changed for multipart and
+  message parts.  Previously, the output was a mash of somewhat-parsed
+  headers and transfer-decoded bodies.  Now, such parts are reproduced
+  faithfully from the original source.  Message parts (which includes
+  part 0) output the full message, including the message headers (but
+  not the transfer headers).  Multipart parts output the part as
+  encoded in the original message, including the part's headers.  Leaf
+  parts, as before, output the part's transfer-decoded body.
+
+Listing configuration items
+
+  The new "config list" command prints out all configuration items and
+  their values.
+
+Emacs Interface
+---------------
+
+Reply improvement using the JSON format
+
+  Emacs now uses the JSON reply format to create replies. It obeys
+  the customization variables message-citation-line-format and
+  message-citation-line-function when creating the first line of the
+  reply body, and it will quote HTML parts if no text/plain parts are
+  available.
+
+New add-on tool: notmuch-mutt
+-----------------------------
+
+The new contrib/ tool "notmuch-mutt" provides Notmuch integration for
+the Mutt mail user agent. Using it, Mutt users can perform mail
+search, thread reconstruction, and mail tagging/untagging without
+leaving Mutt.  notmuch-mutt, formerly distributed under the name
+"mutt-notmuch" by Stefano Zacchiroli, will be maintained as a notmuch
+contrib/ from now on.
+
+Library changes
+---------------
+
+API changes
+
+  The function notmuch_database_close has been split into
+  notmuch_database_close and notmuch_database_destroy.
+
+  This makes it possible for long running programs to close the xapian
+  database and thus release the lock associated with it without
+  destroying the data structures obtained from it.
+
+Notmuch 0.12 (2012-03-20)
+=========================
+
+Command-Line Interface
+----------------------
+
+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).
+
+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".
+
+  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.
+
+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.
+
+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'.
+
+More flexible and consistent tagging operations
+
+  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.
+
+  `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:
+
+    (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 =.
+
+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).
+
+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.
+
+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.
+
+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'.
+
+Support text/calendar MIME type
+
+  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.
+
+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.
+
+Printing Support
+
+  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.
+
+Python bindings changes
+-----------------------
+
+Python 3.2 compatibility
+
+  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.
+
+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.
+
+Notmuch 0.11.1 (2012-02-03)
+===========================
+
+Bug-fix release.
+----------------
+
+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.
+
+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.
+
+Notmuch 0.11 (2012-01-13)
+=========================
+
+Command-Line Interface
+----------------------
+
+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.
+
+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.
+
+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.
+
+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).
+
+Memory Management
+-----------------
+
+Reduction of memory leaks
+
+  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.
+
+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.
+
+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.
+
+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).
+
+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.
+
+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".
+
+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:
+
+  (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
+
+Various performance improvements.
+
+New add-on tool
+---------------
+
+The tool contrib/notmuch-deliver helps with initial delivery and
+tagging of mail (replacing running notmuch new).
+
+
+Notmuch 0.10.2 (2011-12-04)
+===========================
+
+Bug-fix release.
+----------------
+
+Fix crash in python bindings.
+
+  The python bindings did not call g_type_init, which caused crashes
+  for some, but not all users.
+
+Notmuch 0.10.1 (2011-11-25)
+===========================
+
+Bug-fix release.
+----------------
+
+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.
+
+Notmuch 0.10 (2011-11-23)
+=========================
+
+New build and testing features
+------------------------------
+
+Emacs tests are now done in dtach. This means that dtach  is now
+needed to run the notmuch test suite, at least until the checking for
+prerequisites is improved.
+
+Full test coverage of the stashing feature in Emacs.
+
+New command-line features
+-------------------------
+
+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.
+
+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.
+
+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.
+
+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.
+
+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:".
+
+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.
+
+Add keybinding ('c I') for stashing Message-ID's without an id: prefix
+
+  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.
+
+Performance
+-----------
+
+Emacs now constructs large search buffers more efficiently
+
+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:
+
+        notmuch dump > notmuch.dump
+        # Backup, then remove notmuch database ($MAIL/.notmuch)
+        notmuch new
+        notmuch restore notmuch.dump
+
+New collection of add-on tools
+------------------------------
+
+The source directory "contrib" contains tools built on notmuch.  These
+tools are not part of notmuch, and you should check their individual
+licenses.  Feel free to report problems with them to the notmuch
+mailing list.
+
+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.
+
+Notmuch 0.9 (2011-10-01)
+========================
+
+New, general features
+---------------------
+
+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.
+
+Library changes
+---------------
+
+New functions
+
+  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.
+
+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
+
+Python bindings changes
+-----------------------
+
+  - Re-encode python unicode objects to utf-8 before passing back to
+    libnotmuch.
+  - Support Database().begin_atomic()/end_atomic()
+  - Support Database().find_message_by_filename()
+    NB! This needs a db opened in READ-WRITE mode currently, or it will crash
+    the python process. The is a limitation (=bug) of the underlying libnotmuch.
+  - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
+  - Update for n_d_find_message* API changes (see above).
+
+Ruby bindings changes
+---------------------
+
+  - Wrap new library functions notmuch_database_{begin,end}_atomic.
+  - Add new exception Notmuch::UnbalancedAtomicError.
+  - Rename destroy  to destroy! according to Ruby naming conventions.
+  - Update for n_d_find_message* API changes (see above).
+
+Emacs improvements
+------------------
+
+  * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
+    signing key.
+  * Add notmuch-show-refresh-view function (and corresponding binding)
+    to refresh the view of a notmuch-show buffer.
+
+Reply formatting cleanup
+------------------------
+
+  "notmuch reply" no longer includes notification that non-leafnode
+  MIME parts are being suppressed.
+
+Notmuch 0.8 (2011-09-10)
 ========================
 
 Improved handling of message/rfc822 parts
@@ -9,7 +559,7 @@ Improved handling of message/rfc822 parts
   headers, is unfortunately not yet supported (but hopefully will be
   soon).
 
-Improved Build system portability 
+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
@@ -52,7 +602,7 @@ Sebastian Spaeth contributed two changes related to unicode and UTF8:
   * message tags are now explicitly unicode
   * query string is encoded as a UTF8 byte string
 
-Build-System improvments
+Build-System improvements
 ------------------------
 
 Generate notmuch.sym after the relevant object files
@@ -67,7 +617,7 @@ Bug-fix release.
 ----------------
 
 Re-export Xapian exception typeinfo symbols.
-  
+
   It turned out our aggressive symbol hiding caused problems for
   people running gcc 4.4.5.
 
@@ -81,11 +631,11 @@ Folder-based searching
   directories in which mail files are stored (within the mail
   storage). The syntax is as follows:
 
-       folder:<path>
+        folder:<path>
 
   For example, one might use things such as:
 
-       folder:spam
+        folder:spam
         folder:2011-*
         folder:work/todo
 
@@ -102,10 +652,10 @@ Folder-based searching
   this feature for all mail, the entire notmuch index will need to be
   rebuilt as follows:
 
-       notmuch dump > notmuch.dump
-       # Backup, then remove notmuch database ($MAIL/.notmuch)
-       notmuch new
-       notmuch restore notmuch.dump
+        notmuch dump > notmuch.dump
+        # Backup, then remove notmuch database ($MAIL/.notmuch)
+        notmuch new
+        notmuch restore notmuch.dump
 
 Support for PGP/MIME
 
@@ -232,12 +782,12 @@ 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.
-  
+
 Automatic detection and hiding of original message in top-posted message
 
   When a message contains a line looking something like:
 
-       ----- Original Message -----
+        ----- Original Message -----
 
   emacs hides this and all subsequent lines as an "original message",
   (allowing the user to click or press enter on the "original message"
@@ -252,8 +802,8 @@ New hooks for running code when tags are modified
   tool. To facilitate this, two new hooks are added which can be
   modified in the following settings of the notmuch customize group:
 
-       Notmuch Before Tag Hook
-       Notmuch After Tag Hook
+        Notmuch Before Tag Hook
+        Notmuch After Tag Hook
 
 New optional support for hiding some multipart/alternative parts
 
@@ -261,7 +811,7 @@ New optional support for hiding some multipart/alternative parts
   multipart/alternative group (such as a text/plain part as well as a
   text/html part). Users can configure the setting:
 
-       Notmuch Show All Multipart/Alternative Parts
+        Notmuch Show All Multipart/Alternative Parts
 
   to "off" in the notmuch customize group to have the interface
   automatically hide some part alternatives (such as text/html
@@ -298,7 +848,7 @@ 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
 
-* Python bindings have been upodated and extended
+* Python bindings have been updated and extended
   (docs online at http://packages.python.org/notmuch/)
 
   New bindings:
@@ -313,11 +863,11 @@ Ruby bindings are now much more complete
   As well as set arithmetic on Messages():
 
         s1, s2= set(msgs1), set(msgs2)
-       s1.union(s2)
-       s2 -= s1
+        s1.union(s2)
+        s2 -= s1
 
-   Removed:
-     - len(Messages()) as it exausted the iterator.
+  Removed:
+     - len(Messages()) as it exhausted the iterator.
        Use len(list(Messages())) or
        Query.count_messages() to get the length.
 
@@ -330,10 +880,10 @@ 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:
 
-       mkdir build
-       cd build
-       ../configure
-       make
+        mkdir build
+        cd build
+        ../configure
+        make
 
 Fix to save configure options for future, implicit runs of configure
 
@@ -383,11 +933,11 @@ Fixed spurious search results from "overlapped" indexing of addresses
 
   This fixed a bug where a search for:
 
-       to:user@elsewhere.com
+        to:user@elsewhere.com
 
   would incorrectly match a message sent:
 
-       To: user@example,com, someone@elsewhere.com
+        To: user@example,com, someone@elsewhere.com
 
 Fix --output=json when search has no results
 
@@ -449,10 +999,10 @@ Maildir-flag synchronization
   tags in the notmuch database. The following flag/tag mappings are
   supported:
 
-       Flag <-> Tag
-       ----     -----
-       'D'      draft
-       'F'      flagged
+        Flag <-> Tag
+        ----     -----
+        'D'      draft
+        'F'      flagged
         'P'      passed
         'R'      replied
         'S'      unread (added when 'S' flag is not present)
@@ -468,7 +1018,7 @@ Maildir-flag synchronization
   new maildir.synchronize_flags option in the configuration file. For
   example:
 
-       notmuch config set maildir.synchronize_flags false
+        notmuch config set maildir.synchronize_flags false
 
   Users upgrading may also want to run "notmuch setup" once (just
   accept the existing configuration) to get a new, nicely-commented
@@ -477,8 +1027,8 @@ Maildir-flag synchronization
   For users of the notmuch library, the new synchronization
   functionality is available with the following two new functions:
 
-       notmuch_message_maildir_flags_to_tags
-       notmuch_message_tags_to_maildir_flags
+        notmuch_message_maildir_flags_to_tags
+        notmuch_message_tags_to_maildir_flags
 
   It is anticipated that future improvements to this support will
   allow for safe synchronization of the 'T' flag with the "deleted"
@@ -496,7 +1046,7 @@ Support for querying multiple filenames for a single message
   With this release, library users can access all filenames for a
   message with the new function:
 
-       notmuch_message_get_filenames
+        notmuch_message_get_filenames
 
   Together with notmuch_filenames_valid, notmuch_filenames_get, and
   notmuch_filenames_move_to_next it is now possible to iterate over
@@ -515,7 +1065,7 @@ New "notmuch show --format=raw" for getting at original email contents
   do this, simply set the notmuch-command variable in emacs to the
   name of a script containing:
 
-       ssh user@host notmuch "$@"
+        ssh user@host notmuch "$@"
 
   If the ssh client has enabled connection sharing (ControlMaster
   option in OpenSSH), the emacs interface can be quite responsive this
@@ -527,7 +1077,7 @@ Fix "notmuch search" to print nothing when nothing matches
 
   The 0.4 release had a bug in which:
 
-       notmuch search <expression-with-no-matches>
+        notmuch search <expression-with-no-matches>
 
   would produce a single blank line of output, (where previous
   versions would produce no output. This fix also causes a change in
@@ -583,9 +1133,9 @@ notmuch search --output=(summary|threads|messages|tags|files)
   expected that this new option will be very useful in shell
   scripts. For example:
 
-       for file in $(notmuch search --output=files <search-terms>); do
-               <operations-on> "$file"
-       done
+        for file in $(notmuch search --output=files <search-terms>); do
+                <operations-on> "$file"
+        done
 
 notmuch show --format=mbox <search-specification>
 
@@ -688,13 +1238,13 @@ Arrange for libnotmuch to be found automatically after make install
   errors of the form "libnotmuch.so could not be found" immediately
   after installing. This support takes two forms:
 
-       1. If the library is installed to a system directory,
-          (configured in /etc/ld.so.conf), then "make install" will
-          automatically run ldconfig.
+        1. If the library is installed to a system directory,
+           (configured in /etc/ld.so.conf), then "make install" will
+           automatically run ldconfig.
 
-       2. If the library is installed to a non-system directory, the
-          build system adds a DR_RUNPATH entry to the final binary
-          pointing to the directory to which the library is installed.
+        2. If the library is installed to a non-system directory, the
+           build system adds a DR_RUNPATH entry to the final binary
+           pointing to the directory to which the library is installed.
 
   When this support works, the user should be able to run notmuch
   immediately after "make install", without any errors trying to find
@@ -738,7 +1288,7 @@ Fix potential corruption of database when "notmuch new " is interrupted.
   in a corrupt database. The corruption would manifest itself by a
   persistent error of the form:
 
-       document ID of 1234 has no thread ID
+        document ID of 1234 has no thread ID
 
   The message-adding code has been carefully audited and reworked to
   avoid this sort of corruption regardless of when it is interrupted.
@@ -898,15 +1448,15 @@ An entirely new initial view for notmuch, (friendly yet powerful)
   away.
 
   Note: For users that liked the original mode of "emacs -f notmuch"
-       immediately displaying a particular search result, we
-       recommend instead running something like:
+        immediately displaying a particular search result, we
+        recommend instead running something like:
 
-               emacs --eval '(notmuch search "tag:inbox" t)'
+                emacs --eval '(notmuch search "tag:inbox" t)'
 
-       The "t" means to sort the messages in an "oldest first" order,
-       (as notmuch would do previously by default). You can also
-       leave that off to have your search results in "newest first"
-       order.
+        The "t" means to sort the messages in an "oldest first" order,
+        (as notmuch would do previously by default). You can also
+        leave that off to have your search results in "newest first"
+        order.
 
 Full-featured "customize" support for configuring notmuch
 
@@ -937,7 +1487,7 @@ Support for doing tab-completion of email addresses
   One such program (implemented in python with the python bindings to
   notmuch) is available via:
 
-       git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
+        git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
 
   Install that program as notmuch-addresses on your PATH, and then
   hitting TAB on a partial email address or name within the To: or Cc:
@@ -1128,11 +1678,11 @@ Fix headers to be properly decoded in "notmuch reply"
 
   Previously, the user might see:
 
-       Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
+        Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
 
   rather than:
 
-       Subject: Re: Rozlučka
+        Subject: Re: Rozlučka
 
   The former text is properly encoded to be RFC-compliant SMTP, will
   be sent correctly, and will be properly decoded by the
@@ -1177,12 +1727,12 @@ Add support to configure for many standard options.
 
   We include actual support for:
 
-       --includedir --mandir --sysconfdir
+        --includedir --mandir --sysconfdir
 
   And accept and silently ignore several more:
 
-       --build --infodir --libexecdir --localstatedir
-       --disable-maintainer-mode --disable-dependency-tracking
+        --build --infodir --libexecdir --localstatedir
+        --disable-maintainer-mode --disable-dependency-tracking
 
 Install emacs client in "make install" rather than requiring a
 separate "make install-emacs".
@@ -1210,3 +1760,12 @@ tags. This would cause distracting pauses when reading mail while
 notmuch would wait for Xapian when removing the "inbox" and "unread"
 tags from messages in a thread.
 
+
+<!--
+ Local variables:
+ mode: text
+ tab-width: 8
+ indent-tabs-mode: nil
+ End:
+ vi: sw=8 ts=8 et
+-->