9 years agoMerge commit '0.11.1'
David Bremner [Sat, 4 Feb 2012 17:01:46 +0000 (12:01 -0500)]
Merge commit '0.11.1'


NEWS merged by hand, others taken from master.

9 years agoemacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer
Dmitry Kurochkin [Sat, 4 Feb 2012 07:36:37 +0000 (11:36 +0400)]
emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

`Notmuch-wash-region-to-button' is the function that creates hidden
regions with buttons for signatures, citations and original messages.
Before the change, it did not work correctly if the to-be-hidden
region started at the beginning of a message: the visibility toggle
button was hidden as well.  The patch fixes this.  There are two parts
in the fix:

* Use `insert-before-markers' instead of `insert' for creating the
  button, so that it does not get added to the hidden overlay.

* Stop using PREFIX argument for adding a newline before the button.
  The newline should not be added before a button at the beginning of

The corresponding test is fixed now.

9 years agotest: add test for hiding Original Message region at beginning of a message
Dmitry Kurochkin [Sat, 4 Feb 2012 07:36:36 +0000 (11:36 +0400)]
test: add test for hiding Original Message region at beginning of a message

The test is currently broken and will be fixed by a subsequent patch.

The patch adds a new file for tests of Emacs notmuch-show view.

Based on patch by David Edmondson [1].

[1] id:""

9 years agoemacs: Move the blank line from the bottom of the headers to the top of the body.
David Edmondson [Mon, 30 Jan 2012 16:52:20 +0000 (16:52 +0000)]
emacs: Move the blank line from the bottom of the headers to the top of the body.

The blank line doesn't really change position, but is now considered
to be part of the body rather than part of the headers. This means
that it is visible when the body is visible rather than when the
headers are visible.

9 years agoemacs: More address cleaning.
David Edmondson [Mon, 30 Jan 2012 14:59:54 +0000 (14:59 +0000)]
emacs: More address cleaning.

Remove outer single-quotes from the mailbox part. Allow for multiple
sets of nested single and double quotes.

Add more tests.

9 years agoemacs: Prefer '[No Subject]' to blank subjects.
David Edmondson [Mon, 30 Jan 2012 10:16:01 +0000 (10:16 +0000)]
emacs: Prefer '[No Subject]' to blank subjects.

9 years agoemacs: Stop the `truncate-string-to-width' madness.
David Edmondson [Mon, 30 Jan 2012 10:16:00 +0000 (10:16 +0000)]
emacs: Stop the `truncate-string-to-width' madness.

There's no need to call `truncate-string-to-width' twice in this code

9 years agolib: Use talloc to simplify cleanup in notmuch_database_open
Austin Clements [Sun, 29 Jan 2012 05:50:10 +0000 (00:50 -0500)]
lib: Use talloc to simplify cleanup in notmuch_database_open

Previously, we manually "free"d various pointers in
notmuch_database_open.  Use a local talloc context instead to simplify
cleanup and eliminate various NULL pointer initializations and

9 years agolib: Release resources if notmuch_database_open fails
Austin Clements [Sun, 29 Jan 2012 05:50:09 +0000 (00:50 -0500)]
lib: Release resources if notmuch_database_open fails

Previously, if a Xapian exception occurred in notmuch_database_open,
we failed to clean up the allocated notmuch_database_t object.

9 years agolib: Don't delete uninitialized pointers
Austin Clements [Sun, 29 Jan 2012 05:50:08 +0000 (00:50 -0500)]
lib: Don't delete uninitialized pointers

In the error-handling paths of notmuch_database_open, we call
notmuch_database_close, which "delete"s several objects referenced by
the notmuch_database_t object.  However, some of these pointers may be
uninitialized, resulting in undefined behavior.  Hence, allocate the
notmuch_database_t with talloc_zero to make sure these pointers are
NULL so that "delete"ing them is harmless.

9 years agotest: remove ".sh" extension from the recently added Emacs tests
Dmitry Kurochkin [Sat, 28 Jan 2012 04:47:39 +0000 (08:47 +0400)]
test: remove ".sh" extension from the recently added Emacs tests

All test files, except for the recently added Emacs tests, do not have
".sh" extension.  So remove it from the new test files for consistency.

9 years agoconfigure: update explicit check for glib : >= 2.22
Pieter Praet [Fri, 3 Feb 2012 12:12:25 +0000 (13:12 +0100)]
configure: update explicit check for glib : >= 2.22

As of commit b3caef1f, we're using g_array_unref() in 'lib/',
which was only introduced in glib 2.22, so update the dependency.

Thanks to for reporting this [1].

Also see commit b88e6abc.

[1] id:""

9 years agodebian: changelog for 0.11.1 0.11.1 debian/0.11.1-1
David Bremner [Fri, 3 Feb 2012 12:36:58 +0000 (08:36 -0400)]
debian: changelog for 0.11.1

mention the two bugfixes

9 years agoversion: bump to 0.11.1
David Bremner [Fri, 3 Feb 2012 12:32:49 +0000 (08:32 -0400)]
version: bump to 0.11.1

also semi-automatically update man page and python bindings versions.

9 years agoNEWS: set release date for 0.11.1
David Bremner [Fri, 3 Feb 2012 12:30:30 +0000 (08:30 -0400)]
NEWS: set release date for 0.11.1

9 years agoemacs: quote MML tags in replies
Aaron Ecay [Fri, 3 Feb 2012 10:24:08 +0000 (11:24 +0100)]
emacs: quote MML tags in replies

Emacs message-mode uses certain text strings to indicate how to attach
files to outgoing mail.  If these are present in the text of an email,
and a user is tricked into replying to the message, the user’s files
could be exposed.

Edited-by: Pieter Praet <>: Rebased to release branch.
9 years agotest: add tests for quoting of MML tags in replies
Aaron Ecay [Fri, 3 Feb 2012 10:24:07 +0000 (11:24 +0100)]
test: add tests for quoting of MML tags in replies

The test is broken at this time; the next commit will introduce a fix.

Edited-by: Pieter Praet <>:
  Rebased to release branch, moved expected output into the actual test,
  and fixed "Fcc:" line.

9 years agoemacs: globally replace non-branching "(if COND (progn ..." with "(when ..."
Pieter Praet [Wed, 1 Feb 2012 13:50:00 +0000 (14:50 +0100)]
emacs: globally replace non-branching "(if COND (progn ..." with "(when ..."

Less code, same results, without sacrificing readability.

9 years agoemacs: fix show-previous-message doc string
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:23 +0000 (16:06 -0800)]
emacs: fix show-previous-message doc string

9 years agoemacs: modify the default show-mode key bindings for archiving
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:22 +0000 (16:06 -0800)]
emacs: modify the default show-mode key bindings for archiving

This changes the default key bindings for the 'a' key in notmuch-show
mode.  Instead of archiving the entire thread, it now just archives
the current message, and then advance to the next open message
(archive-message-then-next).  'A' is now bound to the previous
archive-thread-then-next function.

9 years agoemacs: use pop-at-end functionality in show-archive-message-then-next function
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:21 +0000 (16:06 -0800)]
emacs: use pop-at-end functionality in show-archive-message-then-next function

This provides a smoother message processing flow by reducing the
number of key presses needed for these common operations.

9 years agoemacs: add option to show-next-{, open-}message functions to pop out to parent buffer...
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:20 +0000 (16:06 -0800)]
emacs: add option to show-next-{, open-}message functions to pop out to parent buffer if at end

This will allow for keybindings that achieve a smoother message
processing flow by reducing the number of key presses needed for most
common operations.

9 years agoemacs: add message archiving functions
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:19 +0000 (16:06 -0800)]
emacs: add message archiving functions

This adds two new message archiving functions that parallel the thread
archiving functions: notmuch-show-archive-message{,-then-next}.  The
former also takes a prefix argument to unarchive the message (ie. put
back in inbox).

9 years agoemacs: break out thread navigation from notmuch-show-archive-thread
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:18 +0000 (16:06 -0800)]
emacs: break out thread navigation from notmuch-show-archive-thread

This function is now just for archiving the current thread.  A new
function is created to archive-then-next.  The 'a' key binding is
updated accordingly.

This will allow people to bind to the simple thread archiving function
without the extra navigation.  The archive-thread function now also
takes a prefix to unarchive the current thread (ie. put the whole
thread back in the inbox).

9 years agoemacs: break up notmuch-show-archive-thread-internal into two more generally useful...
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:17 +0000 (16:06 -0800)]
emacs: break up notmuch-show-archive-thread-internal into two more generally useful functions

Break up notmuch-show-archive-thread-internal into two new functions:

notmuch-show-tag-thread-internal: applies a tag to all messages in
thread.  If option remove flag is t, tags will be removed instead of

notmuch-show-next-thread: moves to the next thread in the search
result.  If given a prefix, will show the next result, otherwise will
just move to it in the search view.

Two new interactive functions, notmuch-show-{add,remove}-tag-thread,
are also added.  Together, these provide a better suit of thread
tagging and navigation tools.

The higher level thread archiving functions are modified to use these
new function.

9 years agoemacs: use search-next-thread to move to next thread in show mode
Jameson Graef Rollins [Wed, 25 Jan 2012 00:06:16 +0000 (16:06 -0800)]
emacs: use search-next-thread to move to next thread in show mode

We should always use the dedicated search mode navigation functions,
in case navigation mechanics change down the line.

9 years agomoved _config_(get|set)_list () functions earlier in the file
Tomi Ollila [Mon, 30 Jan 2012 10:31:25 +0000 (12:31 +0200)]
moved _config_(get|set)_list () functions earlier in the file

Moved static functions _config_get_list () and _config_set_list ()
closer to the beginning of file so that their definition is known
(without adding forward declarations) in upcoming changes.

9 years agoemacs: Don't mark messages as "unsaved" when printing.
David Edmondson [Wed, 25 Jan 2012 13:48:33 +0000 (13:48 +0000)]
emacs: Don't mark messages as "unsaved" when printing.

`ps-print-buffer' notes that a buffer is unsaved unless
`buffer-modified-p' returns `nil', so ensure that it does.

9 years agoemacs: Another special case for `notmuch-show-clean-address'.
David Edmondson [Wed, 25 Jan 2012 13:54:00 +0000 (13:54 +0000)]
emacs: Another special case for `notmuch-show-clean-address'.

Remove backslashes.

9 years agotest: Updated expected output for new `notmuch-show-clean-address'.
David Edmondson [Wed, 25 Jan 2012 13:53:59 +0000 (13:53 +0000)]
test: Updated expected output for new `notmuch-show-clean-address'.

9 years agoemacs: Avoid `mail-header-parse-address' in `notmuch-show-clean-address'.
David Edmondson [Wed, 25 Jan 2012 13:53:58 +0000 (13:53 +0000)]
emacs: Avoid `mail-header-parse-address' in `notmuch-show-clean-address'.

`mail-header-parse-address' expects un-decoded mailbox parts, which is
not what we have at this point. Replace it with simple string

Mark the corresponding test as no longer broken.

Minor whitespace cleanup.

9 years agoemacs: Re-enable line wrapping in `notmuch-show-mode'.
David Edmondson [Thu, 26 Jan 2012 08:17:50 +0000 (08:17 +0000)]
emacs: Re-enable line wrapping in `notmuch-show-mode'.

Turn on `visual-line-mode' via a hook, so that those who so choose can
avoid it.

9 years agoemacs: `notmuch-search-operate-all' code cleanup, no functional changes
Dmitry Kurochkin [Thu, 26 Jan 2012 17:34:49 +0000 (21:34 +0400)]
emacs: `notmuch-search-operate-all' code cleanup, no functional changes

9 years agoemacs: add completion to "tag all" operation ("*" binding)
Dmitry Kurochkin [Thu, 26 Jan 2012 17:34:48 +0000 (21:34 +0400)]
emacs: add completion to "tag all" operation ("*" binding)

The patch adds <tab> completion to "tag all" operation bound to "*"
(`notmuch-search-operate-all' function).

9 years agotest: `notmuch-test-run' should protect against buffer switching.
David Edmondson [Thu, 26 Jan 2012 07:19:38 +0000 (07:19 +0000)]
test: `notmuch-test-run' should protect against buffer switching.

The body of the test may cause the current buffer to change. Ensure
that the output goes to the correct buffer by switching back before
inserting it.

9 years agotest: `visible-buffer-substring' should not return text properties.
David Edmondson [Thu, 26 Jan 2012 07:19:37 +0000 (07:19 +0000)]
test: `visible-buffer-substring' should not return text properties.

When using `visible-buffer-substring' to examine a buffer, the text
properties are not useful, so don't include them.

9 years agoemacs: polish notmuch-hello help text
Dmitry Kurochkin [Wed, 25 Jan 2012 18:24:56 +0000 (22:24 +0400)]
emacs: polish notmuch-hello help text

Make `=' binding description consistent with others.

9 years agoemacs: Fix a notmuch-print.el compiler warning.
David Edmondson [Wed, 25 Jan 2012 08:52:15 +0000 (08:52 +0000)]
emacs: Fix a notmuch-print.el compiler warning.

`notmuch-show-get-prop' should be declared.

9 years agoemacs: Make the part content available to `mm-inlinable-p'.
David Edmondson [Thu, 19 Jan 2012 09:34:07 +0000 (09:34 +0000)]
emacs: Make the part content available to `mm-inlinable-p'.

The `mm-inlinable-p' function works better if it has access to the
data of the relevant part, so load that content before calling it.

Don't load the content for parts that the user has indicated no desire
to inline.

This fixes the display of attached image/jpeg parts, for example.

9 years agoemacs: bind "s" to `notmuch-hello-search' in notmuch-hello buffer
Dmitry Kurochkin [Wed, 25 Jan 2012 01:10:54 +0000 (05:10 +0400)]
emacs: bind "s" to `notmuch-hello-search' in notmuch-hello buffer

`notmuch-hello-search' uses `notmuch-search' function but refreshes
notmuch-hello buffer when the search buffer is closed.

9 years agoemacs: use a single history for all searches
Dmitry Kurochkin [Wed, 25 Jan 2012 01:10:53 +0000 (05:10 +0400)]
emacs: use a single history for all searches

There are two ways to do search in Emacs UI: search widget in
notmuch-hello buffer and `notmuch-search' function bound to "s".
Before the change, these search mechanisms used different history
lists.  The patch makes notmuch-hello search use the same history list
as `notmuch-search' function.

9 years agoemacs: bind "s" to `notmuch-search' in notmuch-hello buffer
Dmitry Kurochkin [Wed, 25 Jan 2012 01:10:52 +0000 (05:10 +0400)]
emacs: bind "s" to `notmuch-search' in notmuch-hello buffer

Before the change, "s" in notmuch-hello buffer would jump to the
search box.  The patch changes the binding to `notmuch-search' which
is consistent with all other notmuch buffers.

9 years agouncrustify.cfg: label indent, some known types, not, # and ##
Tomi Ollila [Tue, 24 Jan 2012 20:55:59 +0000 (22:55 +0200)]
uncrustify.cfg: label indent, some known types, not, # and ##

Adjusted some uncrustify variables to get closer to prevailing style:

* Label indent (for goto) relative to current indentation.
* Registered GMimeObject and mime_node_t being as types.
* Space after ! (not) operator.
* No space after 'stringify' (#) preprosessor token.
* No spacing change around ## (option not versatile enough).

There are at least 3 cases where attention needs to be paid:

* If there is newline between function name and open paren in function
  call, the paren (and args) are indented too far right.
* #define HOUR (60 *MINUTE) -- i.e. no space after star (*).
* void (*foo)(args) -- i.e no space between (name) and (args).

9 years agotest: Add address cleaning tests.
David Edmondson [Tue, 24 Jan 2012 16:14:07 +0000 (16:14 +0000)]
test: Add address cleaning tests.

9 years agotest: Add more helpers for emacs tests.
David Edmondson [Tue, 24 Jan 2012 16:14:06 +0000 (16:14 +0000)]
test: Add more helpers for emacs tests.

9 years agotest: Add `test_emacs_expect_t'.
David Edmondson [Tue, 24 Jan 2012 16:14:05 +0000 (16:14 +0000)]
test: Add `test_emacs_expect_t'.

Add a new test function to allow simpler testing of emacs

`test_emacs_expect_t' takes one argument - a lisp expression to
evaluate. The test passes if the expression returns `t', otherwise it
fails and the output is reported to the tester.

9 years agotest: Don't return the result of checking for running emacs to the tester.
David Edmondson [Tue, 24 Jan 2012 16:14:04 +0000 (16:14 +0000)]
test: Don't return the result of checking for running emacs to the tester.

When checking for a running emacs, test_emacs evaluates the empty list
'()'. This returns 'nil' when emacs is running, which is then
prepended to the actual test result. Given that it is not part of the
actual test output the test harness can incorrectly report test
failure (or success).

9 years agoshow: Introduce mime_node formatter callback
Austin Clements [Mon, 23 Jan 2012 23:33:10 +0000 (18:33 -0500)]
show: Introduce mime_node formatter callback

This callback is the gateway to the new mime_node_t-based formatters.
This maintains backwards compatibility so the formatters can be
transitioned one at a time.  Once all formatters are converted, the
formatter structure can be reduced to only message_set_{start,sep,end}
and part, most of show_message can be deleted, and all of
show-message.c can be deleted.

9 years agomime node: Record depth-first part numbers
Austin Clements [Mon, 23 Jan 2012 23:33:09 +0000 (18:33 -0500)]
mime node: Record depth-first part numbers

This makes the part numbers readily accessible to formatters.
Hierarchical part numbering would be a more natural and efficient fit
for MIME and may be the way to go in the future, but depth-first
numbering maintains compatibility with what we currently do.

9 years agoemacs: have notmuch-search-archive-thread use -next-thread function
Jameson Graef Rollins [Tue, 17 Jan 2012 18:54:26 +0000 (10:54 -0800)]
emacs: have notmuch-search-archive-thread use -next-thread function

Use this standard function, to keep thread navigation in one place.

9 years agoNEWS: update "Tag exclusion" section
Pieter Praet [Mon, 23 Jan 2012 05:41:45 +0000 (06:41 +0100)]
NEWS: update "Tag exclusion" section

9 years agosetup: prompt user for search.exclude_tags value
Pieter Praet [Mon, 23 Jan 2012 05:40:33 +0000 (06:40 +0100)]
setup: prompt user for search.exclude_tags value

Allow users to customize the search.exclude_tags option during setup.

9 years agosetup: Create functions for tag list printing and parsing
Austin Clements [Mon, 23 Jan 2012 05:50:45 +0000 (06:50 +0100)]
setup: Create functions for tag list printing and parsing

This refactors the tag list printing and parsing currently used for
new.tags so that both can be reused for the new search.exclude_tags

9 years agoconfig: only exclude messages if 'search.exclude_tags' is explicitly set
Pieter Praet [Mon, 23 Jan 2012 04:22:34 +0000 (05:22 +0100)]
config: only exclude messages if 'search.exclude_tags' is explicitly set

Currently, the 'search.exclude_tags' option is automatically
set to "deleted;spam;" if it's missing from the config file.

This violates the Principle of Least Surprise, so *only* set
'search.exclude_tags' to "deleted;spam;" if we didn't find a
configuration file at all.

This patch is actually Austin Clements' work:

9 years agotest: only exclude "deleted" messages from search if explicitly configured
Pieter Praet [Mon, 23 Jan 2012 04:22:33 +0000 (05:22 +0100)]
test: only exclude "deleted" messages from search if explicitly configured

Currently, the 'search.exclude_tags' option is automatically set to
"deleted;spam;" if it's missing from the config file.

This violates the Principle of Least Surprise, so update the tests to
*only* expect the exclusion of messages which are tagged "deleted" if the
'search.exclude_tags' option is explicitly set *and* contains that tag.

9 years agosearch: rename auto_exclude_tags to {search, }exclude_tags
Pieter Praet [Mon, 23 Jan 2012 04:22:32 +0000 (05:22 +0100)]
search: rename auto_exclude_tags to {search, }exclude_tags

All other config-related functions and args include the section
title in their name, so for the sake of consistency, mirror that.

Also, the "auto"matic part is a given, so that was dropped.

9 years agoAdd a NEWS section for 0.11.1 and document the python error handling bugfix
Justus Winter [Mon, 23 Jan 2012 12:15:03 +0000 (13:15 +0100)]
Add a NEWS section for 0.11.1 and document the python error handling bugfix

9 years agopython: fix error handling
Justus Winter [Sun, 22 Jan 2012 13:09:35 +0000 (14:09 +0100)]
python: fix error handling

Before 3434d1940 the return values of libnotmuch functions were
declared as c_void_p and the code checking for errors compared the
returned value to None, which is the ctypes equivalent of a NULL

But said commit wrapped all the data types in python classes and the
semantic changed in a subtle way. If a function returns NULL, the
wrapped python value is falsish, but no longer equal to None.

Backported from master to 0.11.

9 years agoshow: Use consistent header ordering in the text format
Austin Clements [Mon, 23 Jan 2012 02:31:12 +0000 (21:31 -0500)]
show: Use consistent header ordering in the text format

Previously, top-level message headers were printed as Subject, From,
To, Date, while embedded message headers were printed From, To,
Subject, Date.  This makes both cases use the former order and updates
the tests accordingly.

Strangely, the raw format also uses this function, so this also fixes
the two raw format tests affected by this change.

9 years agotest/emacs-large-search-buffer: correct typo (EXPEXTED -> EXPECTED)
Pieter Praet [Mon, 23 Jan 2012 04:26:10 +0000 (05:26 +0100)]
test/emacs-large-search-buffer: correct typo (EXPEXTED -> EXPECTED)

introduced in commit 3b24b396

9 years agotest: make (kill-emacs) from emacsclient work with emacs 23.(1|2)
Tomi Ollila [Fri, 13 Jan 2012 08:17:28 +0000 (10:17 +0200)]
test: make (kill-emacs) from emacsclient work with emacs 23.(1|2)

emacsclient --eval '(kill-emacs)' makes emacs versions 23.1
and 23.2 ask user input from running emacs. Redefining
yes-or-no-p function when kill-emacs is executed for these
emacs versions in test-lib.el avoids this test problem.

9 years agotest: whitespace-cleanup for most test/* files
Tomi Ollila [Wed, 11 Jan 2012 16:53:59 +0000 (18:53 +0200)]
test: whitespace-cleanup for most test/* files

Used emacs (whitespace-cleanup) function to "cleanup blank problems"
in test files where that could be done without breaking tests;
test/emacs was partially, and test/multipart was fully reverted.

9 years ago.dir-locals.el: changed one-char comment prefix '; ' to two; '; ; '
Tomi Ollila [Sun, 22 Jan 2012 08:35:47 +0000 (10:35 +0200)]
.dir-locals.el: changed one-char comment prefix '; ' to two; '; ; '

Like in emacs/*.el two comment chars (;;) is required so that
(indent-region) doesn't break indentation.

9 years agoshow: don't use hex literals in JSON output
Thomas Jost [Sun, 22 Jan 2012 00:20:57 +0000 (01:20 +0100)]
show: don't use hex literals in JSON output

JSON does not support hex literals (0x..) so numbers must be formatted
as %d instead of %x.

Currently, the possible values for the gmime error code are 1 (expired
signature), 2 (no public key), 4 (expired key) and 8 (revoked key).
The other possible value is 16 (unsupported algorithm) but obviously
it is much more rare. If this happens, the current code will add
'"errors": 10'. This is valid JSON (it looks like a decimal number)
but it is incorrect (should be 16, not 10).

Since this is just an issue in the JSON encoder, no changes are needed
on the Emacs side (or in other UIs using the JSON output).

9 years agoFix NEWS about gmime 2.6
Thomas Jost [Sun, 22 Jan 2012 00:29:41 +0000 (01:29 +0100)]
Fix NEWS about gmime 2.6

Previous version had a typo ("they may be" instead of "there may be")
and was lacking a proper description of the gmime bug.

9 years agopython: fix error handling
Justus Winter [Sun, 22 Jan 2012 05:14:57 +0000 (06:14 +0100)]
python: fix error handling

Before 3434d1940 the return values of libnotmuch functions were
declared as c_void_p and the code checking for errors compared the
returned value to None, which is the ctypes equivalent of a NULL

But said commit wrapped all the data types in python classes and the
semantic changed in a subtle way. If a function returns NULL, the
wrapped python value is falsish, but no longer equal to None.

9 years agouncrustify.cfg: initial support for notmuch coding style
David Bremner [Tue, 10 Jan 2012 12:07:07 +0000 (08:07 -0400)]
uncrustify.cfg: initial support for notmuch coding style

Uncrustify is a free (as in GPL2+) tool that indents and beautifies
C/C++ code. It is similar to GNU indent in functionality although
probably more configurable (in fairness, indent has better
documentation).  Uncrustify does not have the indent mis-feature of
needing to have every typedef'ed type defined in the
configuration (even standard types like size_t).

This configuration starts with the linux-kernel style from the
uncrustify config, disables aggressive re-indenting of structs,
and fine tunes the handling 'else' and braces.

In an ideal situation, running uncrustify on notmuch code would be
NOP; currently this is not true for all files because 1) the
configuration is not perfect 2) the coding style of notmuch is not
completely consistent; in particular the treatment of braces after
e.g. for (_) is not consistent.

Some fine tuning by Tomi Olilla.

9 years agoemacs/*.el: changed one-char comment prefix ';' to two; ';;'
Tomi Ollila [Sat, 21 Jan 2012 14:44:28 +0000 (16:44 +0200)]
emacs/*.el: changed one-char comment prefix ';' to two; ';;'

In order for emacs (indent-region) to (re)indent emacs lisp
properly there needs to be at least 2 comment characters (;;).

9 years agoMake buttons for attachments allow viewing as well as saving
Mark Walters [Fri, 20 Jan 2012 09:44:06 +0000 (09:44 +0000)]
Make buttons for attachments allow viewing as well as saving

Define a keymap for attachment buttons to allow multiple actions.
Define 3 possible actions:
    save attachment: exactly as currently,
    view attachment: uses mailcap entry,
    view attachment with user chosen program

Keymap on a button is: s for save, v for view and o for view with
other program. Default (i.e. enter or mouse button) is save but this
is configurable in notmuch customize.

One implementation detail: the view attachment function forces all
attachments to be "displayed" using mailcap even if emacs could
display them itself. Thus, for example, text/html appears in a browser
and text/plain asks whether to save (on a standard debian setup)

9 years agoUpdate NEWS and INSTALL about gmime 2.6
Thomas Jost [Fri, 20 Jan 2012 09:39:25 +0000 (10:39 +0100)]
Update NEWS and INSTALL about gmime 2.6

9 years agoAdd compatibility with gmime 2.6
Thomas Jost [Fri, 20 Jan 2012 09:39:24 +0000 (10:39 +0100)]
Add compatibility with gmime 2.6

There are lots of API changes in gmime 2.6 crypto handling. By adding
preprocessor directives, it is however possible to add gmime 2.6 compatibility
while preserving compatibility with gmime 2.4 too.

This is mostly based on id:"".

This was tested against both gmime 2.6.4 and 2.4.31. With gmime 2.4.31, the
crypto tests all work fine (as expected). With gmime 2.6.4, one crypto test is
currently broken (signature verification with signer key unavailable), most
likely because of a bug in gmime which will hopefully be fixed in a future

9 years agoemacs: add invisible dot instead of space at the end of notmuch-hello search box
Dmitry Kurochkin [Thu, 19 Jan 2012 23:52:14 +0000 (00:52 +0100)]
emacs: add invisible dot instead of space at the end of notmuch-hello search box

This makes `show-trailing-whitespace' happy, i.e. it does not mark the
whole search box line as trailing spaces.

Since the dot is invisible, this change makes no visible difference
for `notmuch-hello'.

Edited-by: Pieter Praet <> to fix the tests.
9 years agoSilence buildbot warnings about unused results
Austin Clements [Thu, 19 Jan 2012 22:29:19 +0000 (17:29 -0500)]
Silence buildbot warnings about unused results

This ignores the results of the two writes in sigint handlers even
harder than before.

While my libc lacks the declarations that trigger these warnings, this
can be tested by adding the following to notmuch.h:

ssize_t write(int fd, const void *buf, size_t count);

9 years agoshow: Handle read and write errors
Austin Clements [Thu, 19 Jan 2012 22:29:18 +0000 (17:29 -0500)]
show: Handle read and write errors

For showing a message in raw format, rather than silently succeeding
when a read or a write fails (or, probably, looping if a read fails),
try to print an error message and exit with a non-zero status.

This silences one of the buildbot warnings about unused results.  While
my libc lacks the declarations that trigger these warnings, this can
be tested by adding the following to notmuch.h:

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

9 years agoemacs: invert relation between 'notmuch-send and 'message customization groups
Pieter Praet [Thu, 19 Jan 2012 19:13:05 +0000 (20:13 +0100)]
emacs: invert relation between 'notmuch-send and 'message customization groups

'message contains options relevant to 'notmuch-send, not the other way around.

Thanks to Austin for suggesting `custom-add-to-group'.

9 years agoemacs: Improved printing support.
David Edmondson [Wed, 18 Jan 2012 08:00:21 +0000 (08:00 +0000)]
emacs: Improved printing support.

Add various functions to print notmuch messages and tie them together
with a simple frontend.

Add a binding ('#') in `notmuch-show-mode' to print the current

one trailing space removed by db.

9 years agoDocument external dependencies in the test suite
Ethan Glasser-Camp [Mon, 16 Jan 2012 18:52:47 +0000 (13:52 -0500)]
Document external dependencies in the test suite

Add an explicit note to the README explaining what programs are
necessary and the perhaps-surprising behavior of skipping tests if
they aren't present.

Signed-off-by: Ethan Glasser-Camp <>
9 years agoemacs: Truncate lines and do not enable visual-line-mode in notmuch-show buffers.
David Edmondson [Mon, 16 Jan 2012 14:13:22 +0000 (14:13 +0000)]
emacs: Truncate lines and do not enable visual-line-mode in notmuch-show buffers.

Enable the truncation of lines in `notmuch-show-mode' to avoid visual
noise caused by the wrapping of the header lines.

Don't enable `visual-line-mode' because it disables line truncation.

The benefits of `visual-line-mode' were that it wrapped long lines
in received messages. With `notmuch-wash-wrap-long-lines' now default
behaviour, this is no longer required.

9 years agoemacs: globally replace non-branching "(if (not ..." with "(unless ..."
Pieter Praet [Mon, 16 Jan 2012 10:56:40 +0000 (11:56 +0100)]
emacs: globally replace non-branching "(if (not ..." with "(unless ..."

Less code, same results, without sacrificing readability.

9 years agoconfig: Better formatting for search section comment
Austin Clements [Wed, 18 Jan 2012 20:56:45 +0000 (15:56 -0500)]
config: Better formatting for search section comment

Since "auto_exclude_tags" is long and its description is multi-line,
start the description on the next line and indent it consistently.

9 years agoNews for tag exclusion
Austin Clements [Wed, 18 Jan 2012 20:58:50 +0000 (15:58 -0500)]
News for tag exclusion

9 years agoemacs: logically group def{custom,face}s
Pieter Praet [Mon, 16 Jan 2012 10:38:33 +0000 (11:38 +0100)]
emacs: logically group def{custom,face}s

To allow for expansion whilst keeping everything tidy and organized,
move all defcustom/defface variables to the following subgroups,
defined in notmuch-lib.el:

- Hello
- Search
- Show
- Send
- Crypto
- Hooks
- External Commands
- Appearance

As an added benefit, defcustom keyword args are now consistently
ordered as they appear @ defcustom's docstring (OCD much?).

Proper defgroup docstrings and various other improvements
by courtesy of Austin Clements.

9 years agoFix dependency generation for compat, test, and util
Austin Clements [Sun, 15 Jan 2012 20:20:42 +0000 (15:20 -0500)]
Fix dependency generation for compat, test, and util

This adds source files in compat, test, and util to SRCS so that the
top-level Makefile.local will generate dependency files for them.

9 years agoFix dependency generation for CLI sources
Austin Clements [Sun, 15 Jan 2012 20:20:23 +0000 (15:20 -0500)]
Fix dependency generation for CLI sources

Previously, the dependency file list was generated before the CLI
sources were added to SRCS, so dependency files weren't generated for
CLI sources.  This moves that code to after the CLI sources are added.

9 years agoStart devel directory for developer tools and documentation.
David Bremner [Tue, 17 Jan 2012 12:47:51 +0000 (08:47 -0400)]
Start devel directory for developer tools and documentation.

We had a lot of back and forth about the name of this directory, but
nothing very conclusive. In the end, I just chose "devel" just to move

9 years agofix .gitignore for gzipped man pages
Jani Nikula [Tue, 17 Jan 2012 18:16:03 +0000 (20:16 +0200)]
fix .gitignore for gzipped man pages

9 years agoRevert "emacs: Don't attempt to colour tags in `notmuch-show-mode'."
David Bremner [Tue, 17 Jan 2012 12:01:48 +0000 (08:01 -0400)]
Revert "emacs: Don't attempt to colour tags in `notmuch-show-mode'."

This reverts commit 4b256ff557e924fbaffca144d25a9d5f92026146.

According to id:"" and followup messages, the
assumptions of the patch seem not to hold in emacs 23.

9 years agoNEWS: consistent 2-space indentation
Tomi Ollila [Tue, 17 Jan 2012 11:00:15 +0000 (13:00 +0200)]
NEWS: consistent 2-space indentation

In NEWS file, indentation for item descriptions is generally 2 spaces
but in a few cases there were 3 or 4 (4 caused different markdown
handling) space indentations. Indentation in those lines are brought
to consistent 2-space indentation.

9 years agosearch: Support automatic tag exclusions
Austin Clements [Sun, 15 Jan 2012 00:17:34 +0000 (19:17 -0500)]
search: Support automatic tag exclusions

This adds a "search" section to the config file and an
"auto_tag_exclusions" setting in that section.  The search and count
commands pass tag tags from the configuration to the library.

9 years agolib: Add support for automatically excluding tags from queries
Austin Clements [Sun, 15 Jan 2012 00:17:33 +0000 (19:17 -0500)]
lib: Add support for automatically excluding tags from queries

This is useful for tags like "deleted" and "spam" that people
generally want to exclude from query results.  These exclusions will
be overridden if a tag is explicitly mentioned in a query.

9 years agocli: pick the user's address in a group list as from address
Jani Nikula [Sat, 14 Jan 2012 21:49:50 +0000 (23:49 +0200)]
cli: pick the user's address in a group list as from address

Messages received to a group list were not replied to using the from
address in the list. Fix it.

Signed-off-by: Jani Nikula <>
9 years agotest: add known broken test for reply from address in named group list
Jani Nikula [Sat, 14 Jan 2012 21:49:49 +0000 (23:49 +0200)]
test: add known broken test for reply from address in named group list

If a message was received to the user's address that was in a named
group list, notmuch reply does not use that address for picking the
from address.

Groups lists are of the form:,;

Signed-off-by: Jani Nikula <>
9 years agopy3k: add a specialized version of _str for python3
Justus Winter [Mon, 16 Jan 2012 12:39:41 +0000 (13:39 +0100)]
py3k: add a specialized version of _str for python3

All strings are unicode strings in python 3 and the basestring and
unicode types are removed hence the need for a specialized version.

Signed-off-by: Justus Winter <>
9 years agotest: don't bail out of `run_emacs' too early when missing prereqs
Pieter Praet [Sat, 14 Jan 2012 09:09:37 +0000 (10:09 +0100)]
test: don't bail out of `run_emacs' too early when missing prereqs

When running the Emacs tests in verbose mode, only the first missing
prereq is reported because the `run_emacs' function is short-circuited

    emacs: Testing emacs interface
     missing prerequisites: [0]  emacs(1)
     skipping test: [0]  Basic notmuch-hello view in emacs
     SKIP   [0]  Basic notmuch-hello view in emacs

This can lead to situations reminiscent of "dependency hell", so instead
of returning based on each individual `test_require_external_prereq's exit
status, we now do so only after checking all the prereqs:

    emacs: Testing emacs interface
     missing prerequisites: [0]  dtach(1) emacs(1) emacsclient(1)
     skipping test: [0]  Basic notmuch-hello view in emacs
     SKIP   [0]  Basic notmuch-hello view in emacs

Also added missing prereq for dtach(1).

9 years agoemacs: Cycle through notmuch buffers rather than jumping to the last.
David Edmondson [Wed, 28 Dec 2011 08:29:58 +0000 (08:29 +0000)]
emacs: Cycle through notmuch buffers rather than jumping to the last.

As suggested by j4ni in #notmuch, rename
`notmuch-jump-to-recent-buffer' as `notmuch-cycle-notmuch-buffers' and
have it behave accordingly.

Consider `message-mode' buffers to be of interest.

9 years agoemacs: Don't attempt to colour tags in `notmuch-show-mode'.
David Edmondson [Tue, 27 Dec 2011 16:47:14 +0000 (16:47 +0000)]
emacs: Don't attempt to colour tags in `notmuch-show-mode'.

The tags were coloured using text properties. Unfortunately that text
(the header line) also has an overlay, which overrides the text
properties. There's not point in applying text properties that will
never be seen.

9 years agoNEWS: add news items for reply to sender
Jani Nikula [Sat, 14 Jan 2012 16:39:28 +0000 (18:39 +0200)]
NEWS: add news items for reply to sender

9 years agoFix build warning: "/*" within comment
Austin Clements [Sat, 14 Jan 2012 03:08:23 +0000 (22:08 -0500)]
Fix build warning: "/*" within comment

9 years agotest: add tests for "notmuch reply" --reply-to=sender
Mark Walters [Sat, 14 Jan 2012 14:46:19 +0000 (16:46 +0200)]
test: add tests for "notmuch reply" --reply-to=sender

9 years agoemacs: bind 'r' to reply-to-sender and 'R' to reply-to-all
Jani Nikula [Sat, 14 Jan 2012 14:46:18 +0000 (16:46 +0200)]
emacs: bind 'r' to reply-to-sender and 'R' to reply-to-all

Change the default reply key bindings, making 'r' reply-to-sender and 'R'

Signed-off-by: Jani Nikula <>