Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: pioto/notmuch
base: 8c123d0da6
head fork: pioto/notmuch
compare: 35cb1c95cc
Checking mergeability… Don't worry, you can still create the pull request.
Commits on May 17, 2012
Tomi Ollila NEWS: Dropped old 'Reply to sender' section
'Reply to sender' section was 0.12 news which was accidentally
duplicated in 0.13 news
Tomi Ollila NEWS: Changed 0.13 release date in NEWS file to 2012-05-15 be63e15
Tomi Ollila NEWS: Insert markdown formatting commands in 0.13 section text
NEWS entries in section 0.13 is brought consistent with rest of the
NEWS file.
Tomi Ollila NEWS: Capitalized go bindings changes title
Align 'Go bindings changes' title capitalization to rest of the file
@bremner bremner debian: fix typo in changelog.
the path for NEWS was wrong
(cherry picked from commit b9520ef)
Commits on May 24, 2012
Tomi Ollila emacs: use 'gnus-decoded in notmuch-mm-display-part-inline ()
When mail message is read from emacs, the message structure
obtained may contain parts which have content included
(`text/plain` for example) and other parts where content is not
included (`text/html` for example).

In case content is included, the string is already available in
emacs' internal format and therefore mm-... functions should not
attempt to do further decoding for the data in temp buffer
provided for it.

Currently when reply buffer is created,
notmuch-mm-display-part-inline () is used to provided quoted reply
content. This change makes the mm-... functions called by it use
'gnus-decoded as charset whenever the content is already available.

File .../emacs-23.3/lisp/gnus/mm-uu.el mentions:
"`gnus-decoded' is a fake charset, which means no further decoding."
@aclements aclements lib: Make directory document creation optional for _notmuch_directory…

Previously this function would create directory documents if they
didn't exist.  As a result, it could only be used on writable
databases.  This adds an argument to make creation optional and to
make this function work on read-only databases.  We use a flag
argument to avoid a bare boolean and to permit future expansion.

Both callers have been updated, but currently retain the old behavior.
We'll take advantage of the new argument in the following patches.
@aclements aclements lib: Perform the same transformation to _notmuch_database_find_direct…

Now _notmuch_database_find_directory_id takes a flags argument, which
it passes through to _notmuch_directory_create and can indicate if the
directory does not exist.  Again, callers have been updated, but
retain their original behavior.
@aclements aclements lib: Perform the same transformation to _notmuch_database_filename_to…

Now _notmuch_database_filename_to_direntry takes a flags argument and
can indicate if the necessary directory documents do not exist.
Again, callers have been updated, but retain their original behavior.
@aclements aclements lib: Make notmuch_database_get_directory return NULL if the directory…
… is not found

Using the new support from _notmuch_directory_create, this makes
notmuch_database_get_directory a read-only operation that simply
returns the directory object if it exists or NULL otherwise.  This
also means that notmuch_database_get_directory can work on read-only

This change breaks the directory mtime workaround in notmuch-new.c by
fixing the exact issue it was working around.  This permits mtime
update races to prevent scans of changed directories, which
non-deterministically breaks a few tests.  The next patch fixes this.
@aclements aclements new: Remove workaround for detecting newly created directory objects
Previously, notmuch_database_get_directory did not indicate whether or
not the returned directory object was newly created, which required a
workaround to distinguish newly created directory objects with no
child messages from directory objects that had no mtime set but did
have child messages.  Now that notmuch_database_get_directory
distinguishes whether or not the directory object exists in the
database, this workaround is no longer necessary.
@aclements aclements python: Update Database.get_directory documentation
notmuch_database_get_directory no longer returns an error for
read-only databases, so remove ReadOnlyDatabaseError from the list of
get_directory exceptions.
@aclements aclements lib: Make notmuch_database_find_message_by_filename not crash on read…
…-only databases

Previously, _notmuch_database_filename_to_direntry would abort with an
internal error when called on a read-only database.  Now that creating
the directory document is optional,
notmuch_database_find_message_by_filename can disable directory
document creation (as it should) and, as a result, not abort on
read-only databases.
@aclements aclements python: Remove find_message_by_filename workaround
Now that notmuch_database_find_message_by_filename works on read-only
databases, remove the workaround that disabled it on read-write

This also adds a regression test for find_message_by_filename.
@aclements aclements lib: Don't needlessly create directory docs in _notmuch_message_remov…

Previously, if passed a filename with a directory that did not exist
in the database, _notmuch_message_remove_filename would needlessly
create that directory document.  Fix it so that doesn't happen.
@jnikula jnikula cli: add user address matching helpers for notmuch reply
Add a multi-purpose address_match() function for matching strings
against user's configured primary and other email addresses. Add thin
wrappers user_address_in_string() and string_in_user_address() for
ease of use, and also convert existing address_is_users() to wrapper
for the same.

No functional changes.

Signed-off-by: Jani Nikula <>
@jnikula jnikula cli: clean up user address matching code in guess_from_received_header()
Get rid of user address matching code duplication in
guess_from_received_header() by using the new address matching

No functional changes.

Signed-off-by: Jani Nikula <>
@bremner bremner Merge branch 'release'
merge 0.13.1 bugfix patches back to master, fixes for emacs reply and
spurious directory document creation.
Commits on May 25, 2012
@aclements aclements test: Test notmuch new with a broken symlink 72c9446
@aclements aclements new: Centralize file type stat-ing logic
This moves our logic to get a file's type into one function.  This has
several benefits: we can support OSes and file systems that do not
provide dirent.d_type or always return DT_UNKNOWN, complex
symlink-handling logic has been replaced by a simple stat fall-through
in one place, and the error message for un-stat-able file is more
accurate (previously, the error always mentioned directories, even
though a broken symlink is not a directory).
@aclements aclements new: Merge error checks from add_files and add_files_recursive
Previously, add_files_recursive could have been called on a symlink to
a non-directory.  Hence, calling it on a non-directory was not an
error, so a separate function, add_files, existed to fail loudly in
situations where the path had to be a directory.

With the new stat-ing logic, add_files_recursive is always called on
directories, so the separation of this logic is no longer necessary.
Hence, this patch moves the strict error checking previously done by
add_files into add_files_recursive.
@aclements aclements new: Unify add_files and add_files_recursive
Since starting at the top of a directory tree and recursing within
that tree are now identical operations, there's no need for both
add_files and add_files_recursive.  This eliminates add_files (which
did nothing more than call add_files_recursive after the previous
patch) and renames add_files_recursive to add_files.
@aclements aclements Recommend libgmime-2.6-dev in INSTALL
Given that everything prefers 2.6 over 2.4, it seems appropriate to
suggest that people install the 2.6 dev package instead of 2.4.
@jnikula jnikula cli: also use Delivered-To header to figure out the reply from address
Add another fallback header Delivered-To for guessing the user's from
address for notmuch reply before using the Received
headers. Apparently some MTAs use Delivered-To instead of
X-Original-To (which already exists as a fallback).

Reported-by: Michael Hudson-Doyle <>
Signed-off-by: Jani Nikula <>
@jnikula jnikula test: add tests for notmuch reply From guessing
Add tests for picking up user's From address from fallback headers
Envelope-To, X-Original-To, and Delivered-To.

Signed-off-by: Jani Nikula <>
@felipec felipec Revert "ruby: Add workarounds to use in-tree build not the installed …

This reverts commit 82b73ff.

Only leave the copyright changes.

Signed-off-by: Felipe Contreras <>
Something went wrong with that request. Please try again.