Commits on May 4, 2011
  1. vim: parse 'from' address

    In order to pass it to sendmail.
    Signed-off-by: Felipe Contreras <>
    committed Feb 6, 2011
  2. vim: use sendmail directly

    The problem with 'mailx' is that it's not standardized, and it doesn't
    allow the -f option, which is pretty important on many sendmail
    Signed-off-by: Felipe Contreras <>
    committed Jun 16, 2010
  3. vim: add myself (Felipe Contreras) as contributor

    Signed-off-by: Felipe Contreras <>
    committed May 4, 2011
  4. vim: implement archive in show view

    Signed-off-by: Felipe Contreras <>
    committed Dec 9, 2010
  5. vim: refactor tagging stuff

    Signed-off-by: Felipe Contreras <>
    committed Dec 9, 2010
Commits on Apr 25, 2011
  1. TODO: Add item for remembing files detected as not email.

    As recently discussed on the mailing list. See, for example:
    cworth-gh committed Apr 25, 2011
  2. test: Mark the search-insufficient-from-quoting tests to expect success

    Theses were expected failures only due to a bug in GMime (with
    versions of GMime before 2.4.18). As of GMime version 2.4.18 this bug
    is fixed and these tests now pass.
    cworth-gh committed Apr 25, 2011
  3. use custom-face-edit value-type in notmuch-search-line-faces

    This enables the proper face customization UI for
    jrollins committed with cworth-gh Mar 27, 2011
Commits on Mar 21, 2011
  1. Fixup string list author

    aclements committed Mar 21, 2011
  2. Add the tag list to the unified message metadata pass.

    Now each caller of notmuch_message_get_tags only gets a new iterator,
    instead of a whole new list.  In principle this could cause problems
    with iterating while modifying tags, but through the magic of talloc
    references, we keep the old tag list alive even after the cache in the
    message object is invalidated.
    This reduces my index search from the 3.102 seconds before the unified
    metadata pass to 1.811 seconds (1.7X faster).  Combined with the
    thread search optimization in b3caef1,
    that makes this query 2.5X faster than when I started.
    aclements committed Dec 9, 2010
  3. Add the file name list to the unified message metadata pass.

    Even if the caller never uses the file names, there is little cost to
    simply fetching the file name terms.  However, retrieving the full
    paths requires additional database work, so the expansion from terms
    to full paths is performed lazily.
    This also simplifies clearing the filename cache, since that's now
    handled by the generic metadata cache code.
    This further reduces my inbox search from 3.102 seconds before the
    unified metadata pass to 2.206 seconds (1.4X faster).
    aclements committed Dec 9, 2010
  4. Add a generic function to get a list of terms with some prefix.

    Replace _notmuch_convert_tags with this and simplify
    _create_filenames_for_terms_with_prefix.  This will also come in handy
    shortly to get the message file name list.
    aclements committed Dec 9, 2010
  5. Implement an internal generic string list and use it.

    This replaces the guts of the filename list and tag list, making those
    interfaces simple iterators over the generic string list.  The
    directory, message filename, and tags-related code now build generic
    string lists and then wraps them in specific iterators.  The real wins
    come in later patches, when we use these for even more generic
    As a nice side-effect, this also eliminates the annoying dependency on
    GList in the tag list.
    aclements committed Dec 9, 2010
  6. Use a single unified pass to fetch scalar message metadata.

    This performs a single pass over a message's term list to fetch the
    thread ID, message ID, and reply-to, rather than requiring a pass for
    each.  Xapian decompresses the term list anew for each iteration, so
    this reduces the amount of time spent decompressing message metadata.
    This reduces my inbox search from 3.102 seconds to 2.555 seconds (1.2X
    aclements committed Nov 27, 2010
Commits on Mar 16, 2011
  1. python: Remove completed TODO item

    Really just a left-over TODO item in the code, nothing spectacular to
    see here.
    Signed-off-by: Sebastian Spaeth <>
    jvasile committed with spaetz Mar 16, 2011
Commits on Mar 11, 2011
  1. emacs: Define notmuch-search-process-filter-data before first use.

    To avoid a wraning about a reference to a free variable when compiling.
    cworth-gh committed Mar 11, 2011
  2. emacs: Don't drop error messages from "notmuch search"

    With the previous commit, unexpected output before or between search results
    would be displayed. However, trailing junk from the "notmuch search" output
    would still be silently swallowed.
    The most common case for an error message from "notmuch search" would be
    an invalid command-line, and in that case, there would be no search results
    and the trailing error message would get swallowed.
    We fix the process sentinel to check for leftover data and add it to the
    final buffer. We also add a test case to ensure this works.
    cworth-gh committed Mar 11, 2011
  3. emacs: Fix notmuch-search-process-filter to handle incomplete lines

    This fixes the recently-added emacs-large-search-buffer test. This is
    as simple as saving any trailing input and then pre-prepending it on
    the next call.
    MAny thanks to Thomas Schwinge <> for tracking
    down this problem and contributing a preliminary version of this fix.
    cworth-gh committed Mar 10, 2011
Commits on Mar 10, 2011
  1. emacs: Display any unexpected output from notmuch search

    Rather than silently swallowing unexpected output, the emacs interface will now
    display it. This will allow error messages to actually arrive at the emacs
    interface (though not in an especially pretty way). This also allows for easier
    investigation of the inadvertent swallowing of search results that span page
    boundaries (as demonstrated by the recent added emacs-large-search-buffer test).
    The page-boundary bug has been present since a commit from 2009-11-24:
    Many thanks to Thomas Schwinge for tracking that bug down and
    contributing the test for it.
    cworth-gh committed Mar 10, 2011
  2. Rename/rewrite the new emacs-forgetfulness test (to emacs-large-searc…

    The new name is more descriptive of the bug being tested. Also, the test
    is rewritten slightly so that it's much more plain to see how the bug
    manifests itself, (that messages are droped from the emacs result at
    regular intervals). Primarily, this is by collapsing the large blobs
    used to inflate the message subjects.
    cworth-gh committed Mar 10, 2011
  3. New test: Emacs' forgetfulness.

    Signed-off-by: Thomas Schwinge <>
    tschwinge committed with cworth-gh Feb 2, 2011
  4. new: Update comments for add_files_recursive

    The most recent commit optimized the implementation of this
    function. This commit simply updates the relevant comments to match
    the new implementation.
    cworth-gh committed Mar 10, 2011
  5. new: read db_files and db_subdirs only if mtime changed

    The db_files and db_subdirs are unnecessary for unchanged directories.
    maildir with 10000 e-mails:
    old version:
    	$ time ./notmuch new
    	No new mail.
    	real    0m0.053s
    	user    0m0.028s
    	sys     0m0.026s
    new version:
    	$ time ./notmuch new
    	No new mail.
    	real    0m0.032s
    	user    0m0.009s
    	sys     0m0.023s
    Signed-off-by: Karel Zak <>
    Reviewed-by:  Austin Clements <>
    Looks good (faster than, but provably equivalent to the original code!
    notmuch_directory_get_child_* are side-effect free,
    db_files/db_subdirs aren't used between where they were set in the old
    code and where they are set in the new code, and db_files/db_subdirs
    are initialized to NULL when declared).
    Another timing data point:
    Old code: ./notmuch new  0.77s user 0.28s system 99% cpu 1.051 total
    New code: ./notmuch new  0.09s user 0.27s system 98% cpu 0.368 total
    karelzak committed with cworth-gh Feb 4, 2011
  6. build: Save configure options and re-use them for automatic runs of c…

    This supports the case of a user running "configure --prefix=/foo" then later
    updating the soruce (including the configure script) and re-running make.
    In this case, the make invocation will re-run configure. Before this change,
    this run of configure would lose the user's carefully chosen prefix. This
    is now fixed so that configrue is re-run with the user's options.
    cworth-gh committed Mar 10, 2011
  7. build: Fix a plain "make" to automatically run configure.

    The recent change to support non-source-directory builds broke this case.
    cworth-gh committed Mar 10, 2011
Commits on Mar 9, 2011
  1. build: Add support for non-source-directory builds.

    Such as:
         mkdir build
         cd build
    This is implemented by having the configure script set a srcdir
    variable in Makefile.config, and then sprinkling $(srcdir) into
    various make rules. We also use vpath directives to convince GNU make
    to find the source files from the original source directory.
    cworth-gh committed Mar 9, 2011
  2. TODO: Add item for the build system to support a non-source-dir build

    This would be a handy feature that many people would expect to just
    cworth-gh committed Jan 30, 2011
  3. json: Fix search result with no matches to be a valid json object.

    In the original json code, search matching nothing would return a
    valid, empty json array (that is, "[]"). I broke this in commit
    6dcb759 when adding support for
    --output=threads|messages|tags. This time, while fixing the bug also
    add a test to the test suite to help avoid future regressions.
    cworth-gh committed Jan 30, 2011
  4. test: Rename and clarify the search-lwn test

    Now that we understand the bug here, we rename this test to
    search-insufficient-from-quoting to clarify the bug being exercised,
    (which occurs when the From: line contains an unquoted '.' character).
    We also mark these tests as expected failures until the bug gets fixed.
    cworth-gh committed Jan 28, 2011
  5. search: Move lwn tests into their own file.

    Since it's much easier to debug and fix these if they can be run on
    their own.
    cworth-gh committed Jan 28, 2011
  6. Add a few tests for searching LWN emails.

    These tests should pass -- but they currently don't.
    Signed-off-by: Thomas Schwinge <>
    tschwinge committed with cworth-gh Jan 27, 2011
Commits on Feb 3, 2011
  1. update for go-release-2011-02-01:

      * M bindings/go/cmds/notmuch-addrlookup.go
        log.Exitf -> log.Fatalf
    sbinet committed Feb 3, 2011
Commits on Feb 2, 2011