9 years agobuild-system: tag debian-version as part of the release target 0.6.1
David Bremner [Sun, 17 Jul 2011 14:18:10 +0000 (11:18 -0300)]
build-system: tag debian-version as part of the release target

This allows, e.g. gitpkg debian/0.x-1 to do the right thing.  It also
helps enforce the convention that Debian upload -1 is identical to the
release tarball.

9 years agodebian: use 3.0 (quilt) source format.
David Bremner [Sun, 17 Jul 2011 14:11:57 +0000 (11:11 -0300)]
debian: use 3.0 (quilt) source format.

This generates a seperate notmuch-0.x.debian.tar.gz containing

In the initial release this is redundant, but for Debian only updates
between releases, this allows updating the contents of ./debian, and
using the rest of the release tarball.

9 years agobuild-system: update version check to support non-native packages.
David Bremner [Sun, 17 Jul 2011 14:04:08 +0000 (11:04 -0300)]
build-system: update version check to support non-native packages.

We could be a bit more flexible about this and support optional Debian
versions, but for the moment, we pick a policy and stick to it.

9 years agobuild-system: guard parts irrevokable parts of release target with REALLY_UPLOAD
David Bremner [Mon, 4 Jul 2011 11:39:04 +0000 (08:39 -0300)]
build-system: guard parts irrevokable parts of release target with REALLY_UPLOAD

This supports both testing and use by non-upload privileged
users. Along with previous commits in the series, this lets one do a
dry run of the release process and created a tarball, signature file,
and release announcement to inspect before uploading.

9 years agobuild-system: use signed tag to make tar file, if available.
David Bremner [Sun, 3 Jul 2011 20:28:47 +0000 (17:28 -0300)]
build-system: use signed tag to make tar file, if available.

This as the advantage that "make VERSION=n.m dist" will work correctly
even if the wrong branch happens to be checked out.

9 years agobuild-system: tag earlier in the release process.
David Bremner [Sun, 3 Jul 2011 20:06:05 +0000 (17:06 -0300)]
build-system: tag earlier in the release process.

If tagging fails, we really don't want to upload tarballs.

9 years agobuild-system: remove use of git-buildpackage, dput. Add pristine-tar.
David Bremner [Sun, 17 Jul 2011 12:55:50 +0000 (09:55 -0300)]
build-system: remove use of git-buildpackage, dput. Add pristine-tar.

The previous setup was dependent on the git-buildpackage configuration
to find the resulting tar file, and consequently a bit fragile.

We use pristine-tar instead to save a checksum-identical copy of the
tar file. This will also faciliate "non-native" debian packages, if

dput again depends on the local configuration, and mainly is a bit too
brave for me to do automatically.

9 years agobuild-system: run make clean before testing.
David Bremner [Sun, 17 Jul 2011 12:52:05 +0000 (09:52 -0300)]
build-system: run make clean before testing.

The reasoning is that we might have some error in the build system
that causes something not to be rebuilt; this would potentially have
the tests run on the wrong version of the code.

9 years agobuild-system: replace use of ssh with wget for checking the website
David Bremner [Sun, 3 Jul 2011 18:18:30 +0000 (15:18 -0300)]
build-system: replace use of ssh with wget for checking the website

The idea is to see if the version we are already releasing exists on
the notmuch website. Using wget allows more people to run this target,
and also allows people with ssh access to run it without access to
their keys.

9 years agoversion: bump to 0.6.1
David Bremner [Sun, 17 Jul 2011 13:59:08 +0000 (10:59 -0300)]
version: bump to 0.6.1

9 years agoupdate NEWS and debian/changelog for 0.6.1
David Bremner [Sun, 17 Jul 2011 13:58:15 +0000 (10:58 -0300)]
update NEWS and debian/changelog for 0.6.1

9 years agodebian: use a non-native version number.
David Bremner [Sun, 17 Jul 2011 13:42:53 +0000 (10:42 -0300)]
debian: use a non-native version number.

There is concensus to use non-native version number for updates that
contain only Debian changes. Unfortunately changing back and forth
between native and non-native packages has the potential for
confusion, since the archive will end up with notmuch-0.x.tar.gz and
notmuch-0.x.orig.tar.gz. So we use non-native numbering from the

9 years agodebian: add (demangled) Xapian exception typeinfo symbols to libnotmuch1.symbols
David Bremner [Sat, 16 Jul 2011 19:49:45 +0000 (16:49 -0300)]
debian: add (demangled) Xapian exception typeinfo symbols to libnotmuch1.symbols

These are exported (again) by the library to prevent problems with
catching exceptions.

9 years agolibnotmuch: export Xapian typeinfo symbols
David Bremner [Sat, 16 Jul 2011 18:59:44 +0000 (15:59 -0300)]
libnotmuch: export Xapian typeinfo symbols

The lack of such exporting seems to cause problems catching
exceptions, as suggested by

This manifested in the symbol-hiding test failing when notmuch was
compile with gcc 4.4.5. On i386, this further manifested as notmuch
new failing to run (crashing with an uncaught exception on first run).

9 years agodebian: update changelog for strict libnotmuch dependency
David Bremner [Sun, 10 Jul 2011 12:35:00 +0000 (09:35 -0300)]
debian: update changelog for strict libnotmuch dependency

9 years agodebian: strictly depend on the same version of libnotmuch
Uwe Kleine-König [Sat, 9 Jul 2011 19:17:09 +0000 (21:17 +0200)]
debian: strictly depend on the same version of libnotmuch

It took quite some time to debug why folder: searches didn't work for me
though I had notmuch 0.6~rc1 installed. amdragon in #notmuch found out
that I still had libnotmuch1 0.5+nmu3 installed.

To prevent the same problem in the future let notmuch depend on the same
version of libnotmuch1.

Reviewed-By: David Bremner <>
  The underlying issue is that the libnotmuch interface is not
  entirely captured by the set of exported symbols. In particular the
  query syntax can change without being visible to the linker at all.

9 years agodebian: start new changelog stanza for post 0.6 bugfix release
David Bremner [Fri, 8 Jul 2011 01:39:33 +0000 (22:39 -0300)]
debian: start new changelog stanza for post 0.6 bugfix release

The version numbering scheme of n.n.n is chosen so as not to confuse
tools that rely on the presence of a dash to detect non-native

9 years agodebian: install README.Debian files for notmuch-vim and notmuch-emacs.
David Bremner [Fri, 8 Jul 2011 01:36:04 +0000 (22:36 -0300)]
debian: install README.Debian files for notmuch-vim and notmuch-emacs.

The notmuch-vim README.Debian in particular is quite important since
it discussions the need to install the package with vim-addons

9 years agoversion: bump to 0.6 0.6
David Bremner [Fri, 1 Jul 2011 18:12:23 +0000 (15:12 -0300)]
version: bump to 0.6

The release machinery in the build system depends on this file
being correct.

9 years agoNEWS: Update for release 0.6
David Bremner [Fri, 1 Jul 2011 16:59:15 +0000 (13:59 -0300)]
NEWS: Update for release 0.6

Fix some typos, add some notes on python bindings, "improve" the folder searching
description, expand the discussion of crypto changes.

This includes the changes from

Thanks to Sebastian, Austin, and Uwe, Dmitry for the editing help.

9 years agodebian: add changelog stanza for release 0.6, install upstream docs referred to.
David Bremner [Fri, 1 Jul 2011 14:48:01 +0000 (11:48 -0300)]
debian: add changelog stanza for release 0.6, install upstream docs referred to.

This perhaps breaks the "one thing at a time rule", but seems better
than leaving the changelog pointing to nothing.

9 years agodebian: move vim directory creation to notmuch-vim binary package
David Bremner [Thu, 30 Jun 2011 14:38:28 +0000 (11:38 -0300)]
debian: move vim directory creation to notmuch-vim binary package

This step was missed during the package split of notmuch to notmuch,
notmuch-emacs, and notmuch-vim.

It seems mostly harmless in this case, but it is silly for non-vim
users to have those directories.
(cherry picked from commit 4b5875d81ef80dd7138e178f59ac67f66d5fe0ab)

9 years agoNEWS: Add notes for (imminent) notmuch 0.6 release
Carl Worth [Fri, 1 Jul 2011 10:14:03 +0000 (03:14 -0700)]
NEWS: Add notes for (imminent) notmuch 0.6 release

By skimming through "git log 0.5..origin/release" late at
night. Hopefully everything here is accurate.
(cherry picked from commit d173069ad9cf042458f16af00729867cb13bb3b7)

9 years agoemacs: Fix to unconditionally display subject changes in collapsed thread view
Carl Worth [Fri, 1 Jul 2011 08:44:39 +0000 (01:44 -0700)]
emacs: Fix to unconditionally display subject changes in collapsed thread view

The feature to show subject changes in the collapsed thread view was
originally added (8ab433607) with an option
(notmuch-show-always-show-subject) to display the subject
for all messages, even when there was no change.

The subsequent commit (4f04d273) changed the sense of the test (or to
and) and the name of the controlling variable

But this commit is broken in a few ways:

  1. The original definition of notmuch-show-always-show-subject was
     left around

     But the variable isn't actually used in the code at all, so it
     just adds clutter and confusion to the customization interface.

  2. The name and description of the controlling variable doesn't
     match the implementation

     The name suggests that setting the variable to t will cause
     repeated subjects to be elided, (suggesting that when it is nil
     all subjects will be shown).

     However, when the variable is nil, no subjects are shown. So a
     correct name for the variable in this sense would be

Showing subject changes is a useful feature, and should be on by
default. (We don't want to bury generally useful features behind
customizations that users have to find).

Rather than fixing the name of the variable and changing its default
value, here we remove the condition entirely, such that the feature is
enabled unconditionally.

So both the currently-used variable and the stale definition of the
formerly-used are removed.

Also, the one relevant test-suite result is updated, (showing the
intial subject of a collapsed thread, and no subject display for later
messages that do not change the subject).
(cherry picked from commit 580de27177de5cd6c5cbc9cc3759ce320216dd5b)

9 years agodebian: changelog stanza for first "official" release candidate 0.6rc1
David Bremner [Thu, 30 Jun 2011 13:04:57 +0000 (10:04 -0300)]
debian: changelog stanza for first "official" release candidate

The last upload to experimental was really a release candidate too.
Switch versioning to ~rc1 as counting commits is confusing when
building from the release branch.
(cherry picked from commit 117852a5f1269e77a7f76c53236220a9ec89eba6)

9 years agodebian: don't install zsh completion files into /usr/share/zsh
David Bremner [Thu, 30 Jun 2011 11:29:07 +0000 (08:29 -0300)]
debian: don't install zsh completion files into /usr/share/zsh

as of version 4.3.12, perhaps earlier, the Debian zsh package now
ships /usr/share/zsh/functions/Completion/Unix/_notmuch, so we
shouldn't install that ourselves anymore.

My understanding is that letting zsh ship the completion scripts is
the standard thing to do.

The script is still shipped in /usr/share/doc/notmuch/examples
(cherry picked from commit 0a0f5f1bbe4bf256a14dee0ab2af3065a251a72c)

9 years agopython: Do not implicitely call maildir_flags_to_tags etc
Sebastian Spaeth [Fri, 24 Jun 2011 06:44:06 +0000 (08:44 +0200)]
python: Do not implicitely call maildir_flags_to_tags etc

In order to remain consistent with the underlying C API, we do not
automatically synchronize notmuch tags and maildir flags anymore.

The underlying functions Message.maildir_flags_to_tags and
Message.tags_to_maildir_flags still exist and are available to the user.

Signed-off-by: Sebastian Spaeth <>
(cherry picked from commit e59eaa5ddd2c23742c95e2acd34673b58ea34d2d)

9 years agodebian/changelog: Add note that notmuch-vim description is in (bug #631974)
Carl Worth [Wed, 29 Jun 2011 21:08:04 +0000 (14:08 -0700)]
debian/changelog: Add note that notmuch-vim description is in (bug #631974)

This note will automatically cause the bug entry to be closed as fixed when
the next package (including this change) is uploaded.
(cherry picked from commit 04b9ffa56f54976f6a3324a3673915a036646ea6)

9 years agoFix folder: coherence issue
Mark Anderson [Wed, 29 Jun 2011 20:04:45 +0000 (14:04 -0600)]
Fix folder: coherence issue

Add removal of all ZXFOLDER terms to removal of all XFOLDER terms for
each message filename removal.

The existing filename-list reindexing will put all the needed terms
back in.  Test search-folder-coherence now passes.

Signed-off-by:Mark Anderson <>
(cherry picked from commit 8a856e5c38b79359e4fbf9e27f58b1fe00c1e18a)

9 years agotest: Use increment_mtime rather than sleep
Carl Worth [Wed, 29 Jun 2011 21:11:38 +0000 (14:11 -0700)]
test: Use increment_mtime rather than sleep

The sleep was to force the directory's mtime to advance between the
previous notmuch new and the subsequent rm;notmuch new.

The current convention is to use the existing increment_mtime function
for this purpose, (which avoids the test suite being slowed down by
calls to sleep).

Thanks to Austin Clements for noticing this undesired sleep.
(cherry picked from commit 55a78d5dbd96b80939458d9d6cc8a536b1befa87)

9 years agotest:Folder tags shouldn't match after removal of file in given folder
Mark Anderson [Mon, 27 Jun 2011 17:12:24 +0000 (11:12 -0600)]
test:Folder tags shouldn't match after removal of file in given folder

Test for bug.  Current stemming support for notmuch adds extra terms
to the DB which aren't removed when the file renames are detected.

When folder tags are added to a message, Xapian terms for both XFOLDER
and ZXFOLDER are generated.  When one of the filenames are
renamed/removed, only the XFOLDER tags are removed, leaving it possible
for a match on a folder: tag that was previously but is no longer a
match in the maildir.
(cherry picked from commit 86e0baeb6df5509393832488c0de3520a1a5bdcb)

9 years agosearch --output=files: Output all filenames for each matching message
Mark Anderson [Fri, 24 Jun 2011 23:26:55 +0000 (17:26 -0600)]
search --output=files: Output all filenames for each matching message

Messages in the database can have multiple files associated with a
single message-id, but until now only one filename for each message
has been reported by "notmuch search --output=files"

Signed-off-by: Mark Anderson <>
(cherry picked from commit d752509abfd7697d2f8a1c5be6f96f0df4f0299d)

9 years agolibnotmuch: build symbols list without relying on gcc -aux-info.
David Bremner [Mon, 27 Jun 2011 01:08:52 +0000 (22:08 -0300)]
libnotmuch: build symbols list without relying on gcc -aux-info.

Carl reports "gcc -aux-info notmuch.aux lib/notmuch.h" does not
generate notmuch.aux for him with Debian gcc 4.6.0-8. A small
modification of the original sed regular expression allows us to work
directly from lib/notmuch.h, rather than preprocessing with gcc.

As with most such simple regex based "parsing", this is quite
sensitive to the input format, and needs that each symbol to be
exported from libnotmuch should

- start with "notmuch_"
- be the first non-whitespace token on the line
- be followed by an open parenthesis.

(Cherry-picked from 51b7ab69687, with conflicts resolved by db)

10 years agotest: remove useless test_emacs call from an emacs FCC test
Dmitry Kurochkin [Thu, 23 Jun 2011 23:59:33 +0000 (03:59 +0400)]
test: remove useless test_emacs call from an emacs FCC test

This was inadvertently left over when debugging an early version of
this commit. -Carl Worth <>
(cherry picked from commit 8bf0c1c3deb49d54e86c04826a05f0217a81cf47)

10 years agoFix wrong-type-argument lisp error in `notmuch-fcc-header-setup'
Dmitry Kurochkin [Sat, 28 May 2011 21:51:49 +0000 (14:51 -0700)]
Fix wrong-type-argument lisp error in `notmuch-fcc-header-setup'

This error occurs when `notmuch-fcc-dirs' is set to a list.  The error
was in the `notmuch-fcc-dirs' format check which was changed in an
incompatible way from 0.4 to 0.5.

The fix was extracted from a bigger patch series by David
Edmondson id:"".

Signed-off-by: Jameson Graef Rollins <>
(cherry picked from commit ce08571428dc784e279b28527f8073a1a05d7c37)

10 years agotest: Test emacs message composing with various values for notmuch-fcc-dirs
Carl Worth [Thu, 23 Jun 2011 22:10:31 +0000 (15:10 -0700)]
test: Test emacs message composing with various values for notmuch-fcc-dirs

We exercise each of the documented values (nil, a string, and a
list). For the list, we test matching a specific entry, matching a
catch-all regular expression, and no match at all (in which case there
is no FCC set).
(cherry picked from commit 76b54f1898e97f6d07d0eaaf04a1772e60a7c48d)

10 years agodebian: fix installation of notmuch-vim README
David Bremner [Thu, 23 Jun 2011 23:39:29 +0000 (20:39 -0300)]
debian: fix installation of notmuch-vim README

There was a leftover override, installing it into the wrong package.

10 years agostart new changelog stanza
David Bremner [Thu, 23 Jun 2011 22:41:28 +0000 (19:41 -0300)]
start new changelog stanza

10 years agoRevert "debian: Override RPATH_LDFLAGS"
David Bremner [Thu, 23 Jun 2011 22:35:35 +0000 (19:35 -0300)]
Revert "debian: Override RPATH_LDFLAGS"

This reverts commit fc126d89b2baa479d98c864fbef4174b6da707c0.

This override of the make variable RPATH_LDFLAGS should no longer
be required since the auto-configuration was fixed

10 years agodebian: Set conflicts from package split to point to an existing version.
David Bremner [Thu, 23 Jun 2011 17:42:15 +0000 (14:42 -0300)]
debian: Set conflicts from package split to point to an existing version.

The previous version was harmless, since there were no versions
uploaded between ~237 and ~254, but this is less confusing.

10 years agodebian: fix typo in short description of notmuch-vim
David Bremner [Thu, 23 Jun 2011 17:37:29 +0000 (14:37 -0300)]
debian: fix typo in short description of notmuch-vim

Thanks to Dirk Eddelbuettel for noticing.

10 years agodebian: update changelog for upload 0.6~254, bump standards version to 3.9.2 debian/0.6_254
David Bremner [Mon, 20 Jun 2011 22:05:53 +0000 (19:05 -0300)]
debian: update changelog for upload 0.6~254, bump standards version to 3.9.2

10 years agodebian: remove Xapian exceptions symbols from libnotmuch1.symbols
David Bremner [Wed, 22 Jun 2011 00:49:39 +0000 (21:49 -0300)]
debian: remove Xapian exceptions symbols from libnotmuch1.symbols

These were never intended to be public, since the library exports only
a C API.

10 years agodebian: split off vim interface to its own package
David Bremner [Tue, 21 Jun 2011 17:31:21 +0000 (14:31 -0300)]
debian: split off vim interface to its own package

So far the package does notthing fancy with vim-addon-manager.

10 years agodebian: split off emacs interface into its own package.
David Bremner [Tue, 21 Jun 2011 01:00:44 +0000 (22:00 -0300)]
debian: split off emacs interface into its own package.

- rename emacsen-install/remove files, and change embedded package

- split notmuch.install, notmuch.dirs

- add Breaks/Replaces for previous notmuch packages with overlapping

10 years agodebian: Build depend on emacs-nox instead of emacs.
David Bremner [Mon, 20 Jun 2011 21:52:58 +0000 (18:52 -0300)]
debian: Build depend on emacs-nox instead of emacs.

Nothing in the build process needs X, and the number of dependencies
that need to be installed is much smaller.

10 years agodebian: build package for python-bindings.
David Bremner [Sun, 19 Jun 2011 18:09:46 +0000 (15:09 -0300)]
debian: build package for python-bindings.

This uses dh_python2 (included with sufficiently recent versions of
the python/python-all packages). python-all brings in all of the
supported versions of python. The double calls to dh_auto_install and
friends are to avoid looping over python versions ourselves.

10 years agotests: add a test for symbol hiding side effects
David Bremner [Wed, 22 Jun 2011 11:58:01 +0000 (08:58 -0300)]
tests: add a test for symbol hiding side effects

The worry here is that a binary linking with libnotmuch might lose
access to Xapian::Error symbols because libnotmuch hides them.

We are careful here to create ./fakedb/.notmuch in order to trigger a
Xapian exception, and not just a missing file check.

Thanks to jrollins and amddragon for suggestions.
(cherry picked from commit 66f37f5f6864a988f94ddb893e3a176af57f6c8e)

10 years agolibnotmuch: add linker script to declare only notmuch_* symbols as global.
David Bremner [Wed, 22 Jun 2011 00:25:06 +0000 (21:25 -0300)]
libnotmuch: add linker script to declare only notmuch_* symbols as global.

This is closely tied to gcc and particularly gnu ld, but I guess the
shared library linking code would need to be adjusted to work on a
non-gnu linker anyay.

I had to make a few not-obviously related changes to the
lib/Makefile.local to make this work: libnotmuch_modules is defined
with := and used in place of $^
(cherry picked from commit 014bf85b1c06ff49be2bde5a26433d2cf376cf70)

10 years agodebian: add changlog stanza for new snapshot 0.6~237
David Bremner [Sat, 18 Jun 2011 13:14:53 +0000 (10:14 -0300)]
debian: add changlog stanza for new snapshot 0.6~237
(cherry picked from commit 17daa480e435ad4c1d8f4f18447eff1ff36dbe00)

10 years agodebian: Changelog stanza for new git snapshot 0.6~215
David Bremner [Sat, 4 Jun 2011 11:52:20 +0000 (08:52 -0300)]
debian: Changelog stanza for new git snapshot 0.6~215
(cherry picked from commit b85a415a7bd91c360c0acd453ead39be854f63f7)

10 years agodebian: update symbols file for libnotmuch1
David Bremner [Wed, 1 Jun 2011 00:45:35 +0000 (21:45 -0300)]
debian: update symbols file for libnotmuch1

One of the Xapian exception symbols has gone missing.  Hopefully this
doesn't mean we should be bumping the SONAME.
(cherry picked from commit e8260d63f1f5a37094801ecd5d110bf48f22ee45)

10 years agodebian: Changelog stanza for new snapshot 0.6~180
David Bremner [Wed, 1 Jun 2011 00:17:40 +0000 (21:17 -0300)]
debian: Changelog stanza for new snapshot 0.6~180
(cherry picked from commit 54a3983d3c38830e2b609be0a96c5cf6dc6de054)

10 years agodebian: update symbols file for libnotmuch1
David Bremner [Sat, 28 May 2011 11:53:03 +0000 (08:53 -0300)]
debian: update symbols file for libnotmuch1

This re-exports three symbols from Xapian.
(cherry picked from commit f36c36ddd13486d1e38b4dd0efa717108f56c4f9)

10 years agodebian: Override RPATH_LDFLAGS
David Bremner [Sat, 28 May 2011 11:48:34 +0000 (08:48 -0300)]
debian: Override RPATH_LDFLAGS

Probably there is a nicer way to do this; perhaps it should be a
configure option.
(cherry picked from commit 387dc520dd68cc805e390f3a1399f85b5d5bd83a)

10 years agodebian: Add changelog stanza for new snapshot 0.6~171
David Bremner [Sat, 28 May 2011 10:26:50 +0000 (07:26 -0300)]
debian: Add changelog stanza for new snapshot 0.6~171

After some debate, we settled on 0.6~$num as a snapshot version
number, at least until 0.6 is released. This has the needed property
of sorting after 0.5+nmu$num.
(cherry picked from commit 54f7766febc3fa3c9dc475f6ec6718c5e87a189e)

10 years agodebian: Add myself (David Bremner) as an uploader
David Bremner [Sat, 28 May 2011 16:31:26 +0000 (13:31 -0300)]
debian: Add myself (David Bremner) as an uploader

This avoids having to mark every upload as a non-maintainer upload.
(cherry picked from commit e849851d2d38cbf985f3fd884226100b93f3044f)

10 years agodebian: Incorporate changelog entries from post 0.5 uploads
David Bremner [Sat, 28 May 2011 10:03:31 +0000 (07:03 -0300)]
debian: Incorporate changelog entries from post 0.5 uploads

These uploads added the timeout to the tests to fix build failures.
(cherry picked from commit 0901faabd90a689728d8079b3163bd76b29d29aa)

10 years agoemacs: Show all multipart/alternative parts by default.
Jameson Graef Rollins [Thu, 23 Jun 2011 01:14:12 +0000 (18:14 -0700)]
emacs: Show all multipart/alternative parts by default.

This is patch is a temporary work-around for a slight regression that
popped up in the part handling reorganization.  Currently, text/plain
parts are always preferred, if present, over other non-text/plain
parts in multipart/alternative.  However, this means that if there is
a blank text/plain part, no content will be displayed.

One way to get around this is to set the
"notmuch-show-all-multipart/alternative-parts" customization variable
to True ('t'), which will cause all parts to always be displayed.

Since we want to move forward with the next release, we're going to
set this variable true by default, to make sure that no content is
unretrievably hidden from the user.  Once we come up with a better
solution for easy display of hidden parts we can set this back to a
default value of 'nil'.

10 years agosmtp-dummy: Prefer return rather than exit() in main.
Carl Worth [Tue, 21 Jun 2011 21:54:10 +0000 (14:54 -0700)]
smtp-dummy: Prefer return rather than exit() in main.

The main() function should be written as just another function with a
return value. This allows for more reliable code reuse. Imagine that
main() grows too large and needs to be factored into multiple
functions. At that point, exit() is probably the wrong thing, yet can
also be hard to notice as it's in less-frequently-tested exceptional

10 years agoFix compilation warnings in test/smtp-dummy.c.
Dmitry Kurochkin [Thu, 16 Jun 2011 10:32:08 +0000 (14:32 +0400)]
Fix compilation warnings in test/smtp-dummy.c.

* Remove unused variables in main(): buf, bytes and greeting.
* Replace return with no value in main() with exit(3).

10 years agodebian: Generate version from debian/changelog
David Bremner [Tue, 21 Jun 2011 12:03:19 +0000 (09:03 -0300)]
debian: Generate version from debian/changelog

This avoids patching the version file once per Debian upload.
Original version file is saved and restored.
(cherry picked from commit 2938a98bf4c4abe0426caee4555d889d655bc0df)

10 years agotests: Add optional use of timeout utility, if present.
David Bremner [Sat, 28 May 2011 09:50:11 +0000 (06:50 -0300)]
tests: Add optional use of timeout utility, if present.

Each top level test (basic, corpus, etc...) is run with a fixed
timeout of 2 minutes.

The goal here is to treat a hung test as a failure. The emacs test for
sending mail is known to be problematic on the Debian
autobuilders. This is both a bandaid fix for that, and a sensible long
term feature.
(cherry picked from commit 5f99c80e02736c90495558d9b88008a768876b29)

10 years agoDo not import notmuch in
David Bremner [Sun, 19 Jun 2011 19:53:43 +0000 (16:53 -0300)]
Do not import notmuch in

Importing notmuch loads the notmuch shared library. When building
without a system install of notmuch, this requires e.g. setting
LD_LIBRARY_PATH for building and fails completely for cleaning.

10 years agoSimplify (& fix) Message().__str__()
Sebastian Spaeth [Thu, 16 Jun 2011 15:33:47 +0000 (17:33 +0200)]
Simplify (& fix) Message().__str__()

We were still using len(self.get_replies()) for the __str__ summary of a
mail, but 1) len(Messages()) has just gone away 2) the number of replies
can not be retrieved when we got the message via search_messages()
anyway, and 3) it is likely quite expensive to pull all replies for all
messages that we display a summary of.

So we fix this by simplifying str(Message()) to omit the number of replies.

Signed-off-by: Sebastian Spaeth <>
10 years agopython: Bulletproof Database() path parameter
Sebastian Spaeth [Thu, 16 Jun 2011 13:51:13 +0000 (15:51 +0200)]
python: Bulletproof Database() path parameter

libnotmuch (and python) crashed when I accidently passed in an invalid
value as path argument to the Database() instantiation.

Therefore, we now check via assert that the handed in path is actually a
real string (or None).

Signed-off-by: Sebastian Spaeth <>
10 years agopython: Improve API documentation
Sebastian Spaeth [Thu, 16 Jun 2011 13:41:48 +0000 (15:41 +0200)]
python: Improve API documentation

Various API doc cleanups and improvements. No code change.

Signed-off-by: Sebastian Spaeth <>
10 years agoImplement Message.tags_to_maildir_flags
Sebastian Spaeth [Thu, 16 Jun 2011 12:41:02 +0000 (14:41 +0200)]
Implement Message.tags_to_maildir_flags

and also maildir_flags_to_tags. The methods will be invoked by
db.add_message() and also (if not overridden via function parameter) by
add|remove_tag and remove_all_tags. Documentation on the usage has been

Signed-off-by: Sebastian Spaeth <>
10 years agopython: Improve documentation
Sebastian Spaeth [Wed, 15 Jun 2011 19:36:26 +0000 (21:36 +0200)]
python: Improve documentation

Improve the documentation with regard to the new __cmp__ and __hash__
methods and the implications of doing set arithmetic with Messages()

Signed-off-by: Sebastian Spaeth <>
10 years agoFix indentation in guess_from_received_header().
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:14 +0000 (15:12 +0400)]
Fix indentation in guess_from_received_header().

10 years agoFix memory leak in guess_from_received_header().
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:13 +0000 (15:12 +0400)]
Fix memory leak in guess_from_received_header().

Mta variable was not free()d in one case.

10 years agoFix double free in guess_from_received_header().
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:12 +0000 (15:12 +0400)]
Fix double free in guess_from_received_header().

Before the change, the last loop in guess_from_received_header()
did not reset domain and tld variables to NULL.  This leads to
double free error in some cases and possibly other bugs.

10 years agoSimplify message and headers visibility code in notmuch-show view.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:16 +0000 (02:10 +0400)]
Simplify message and headers visibility code in notmuch-show view.

Before the change, headers and message visibility functions took
extra care to correctly set `buffer-invisibility-spec'.  This was
needed because headers overlay `invisible' property had only
headers' invisibility spec.  So visibility of headers was
determined only by the headers invisibility spec.  The patch sets
headers overlay `invisible' property a list with both the headers
and the message invisibility spec.  This makes headers invisible
if either of them is added to the `buffer-invisibility-spec' and
allows to simplify the code.

10 years agoSet higher priority for headers and hidden citation overlays.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:15 +0000 (02:10 +0400)]
Set higher priority for headers and hidden citation overlays.

Before the patch, message, headers and hidden citation overlays
had zero priority.  All these overlay have `invisible' property.
Emacs documentation says that we should not make assumptions
about which overlay will prevail when they have the same priority
[1].  It happens to work as we need, but we should not rely on
undocumented behavior.


10 years agoFix hiding a message while some citations are shown in notmuch-show view.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:14 +0000 (02:10 +0400)]
Fix hiding a message while some citations are shown in notmuch-show view.

Before the change, message and citation invisibility overlays
conflicted: if some citation is made visible and then the whole
message is hidden, that citation remained visible.  This happened
because the citation's overlay has an invisible property which
takes priority over the message overlay.  The message
invisibility spec does not affect citation visibility, it is
determined solely by the citation overlay invisibility spec.
Hence, if citation is made visible, it is not hidden by message
invisibility spec.

The patch changes citation overlay invisibility property to be a
list which contains both the citation and the message
invisibility specs.  This makes the citation invisible if either
of them is added to the `buffer-invisibility-spec'.  Note that
all citation visibility states are "restored" when the message
hidden and shown again.

10 years agoSet message invisibility spec properties before inserting the body.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:13 +0000 (02:10 +0400)]
Set message invisibility spec properties before inserting the body.

This would allow body-inserting code (in particular, wash
button-inserting code) to use message invisibility specs.

10 years agoPass message to the `notmuch-show-insert-text/plain-hook' hook.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:12 +0000 (02:10 +0400)]
Pass message to the `notmuch-show-insert-text/plain-hook' hook.

Before the change, the `notmuch-show-insert-text/plain-hook' was
given only the `depth' argument.  The patch adds another one -
the message.  Currently, the new message argument is not used by
any on the hooks.  But it will be used later to get access to
message invisibility specs when wash buttons are inserted.

10 years agoWorkaround for Emacs bug #8721.
Dmitry Kurochkin [Sat, 28 May 2011 01:29:17 +0000 (05:29 +0400)]
Workaround for Emacs bug #8721.

The emacs bug is that isearch cannot search through invisible text
when the 'invisible' property is a list.

The patch adds `notmuch-isearch-range-invisible' function which
is the same as `isearch-range-invisible' but with fixed Emacs bug
 #8721.  Advice added for `isearch-range-invisible' which calls
`notmuch-isearch-range-invisible' instead of the original
`isearch-range-invisible' when in `notmuch-show-mode'.

10 years agotest emacs: Add tests for hiding messages in notmuch-show view
Dmitry Kurochkin [Thu, 26 May 2011 21:38:34 +0000 (01:38 +0400)]
test emacs: Add tests for hiding messages in notmuch-show view

This test is expected to fail as it exposes a current bug, (which we
hope to fix soon).

10 years agopython: Implement Message.__cmp__ and __hash__
Sebastian Spaeth [Wed, 15 Jun 2011 13:05:47 +0000 (15:05 +0200)]
python: Implement Message.__cmp__ and __hash__

We can now do: if msg1 == msg2, and we can use set arithmetic on
  s1, s2= msgs1, msgs2
  s2 -= s1

Signed-off-by: Sebastian Spaeth <>
10 years agopython: Remove Messages().__len__
Sebastian Spaeth [Wed, 15 Jun 2011 12:25:33 +0000 (14:25 +0200)]
python: Remove Messages().__len__

Messages.__len__() exhausted the iterator and list() inherently calls
len(), so we could not invoke list(msgs) without getting errors. Fix
this by implementing __nonzero__ but removing __len__ on Messages.

Use Query.count_messages() or len(list(msgs)) if you need to know the

Signed-off-by: Sebastian Spaeth <>
10 years agotest: Fix from-guessing to actually span Received headers over multiple lines
Carl Worth [Sat, 11 Jun 2011 00:18:27 +0000 (17:18 -0700)]
test: Fix from-guessing to actually span Received headers over multiple lines

The intent was always to make these Received headers span multiple
lines. But the escapes were causing the shell to ignore the newlines,
so that the result instead was long Received headers on a single line

Fixing the intent here doesn't actually change the test-suite results
at all.

10 years agoFix appending of Received headers
Stewart Smith [Tue, 17 May 2011 02:10:32 +0000 (12:10 +1000)]
Fix appending of Received headers

We're not properly concatenating the Received headers if we parse them
while requesting a header that isn't Received.

this fixes notmuch-reply address detection in a bunch of situations.

10 years agotest: Extend from-guessing test with a test with multiple Received headers
Carl Worth [Fri, 10 Jun 2011 23:53:45 +0000 (16:53 -0700)]
test: Extend from-guessing test with a test with multiple Received headers

This is much more realistic, as most messages in the wild will have multiple
Received headers. Also, this demonstrates a current bug in the Received
header parsing, (multiple Received headers are not properly concatenated
depending on the order in which headers are parsed in a message).

10 years agotest: Add test that emacs detects and hides top-post quotes of original messages
Carl Worth [Fri, 10 Jun 2011 23:28:26 +0000 (16:28 -0700)]
test: Add test that emacs detects and hides top-post quotes of original messages

This tests the recently-added detection/hiding of top-posted quotations and
in the testing, it takes advantage of the less-recently-added
visible-buffer-string function for emitting only the visible text
from a buffer.

10 years agonotmuch.el: hide original message in top posted replies.
David Bremner [Wed, 24 Feb 2010 18:30:06 +0000 (14:30 -0400)]
notmuch.el: hide original message in top posted replies.

This code treats top posted copies essentially like signatures, except
that it doesn't sanity check their length, since neither do their

New user-visible variables:


Rebased-by: Carl Worth <>
10 years agoUse stock GMimeSession by default
Daniel Kahn Gillmor [Fri, 3 Jun 2011 23:57:46 +0000 (19:57 -0400)]
Use stock GMimeSession by default

Our use of GMimeSession was unneeded boilerplate, and we weren't doing
anything with it.  This simplifies and clarifies that assumption.

If we want to do anything fancier later, the examples in the gmime
source are a reasonable source to work from in defining a new
GMimeSession derivative.

Since GMimeSession is going away in GMime 2.6, though, i don't
recommend using it.

10 years agoshow: Avoid inadvertently closing stdout
Jameson Graef Rollins [Sat, 28 May 2011 21:52:00 +0000 (14:52 -0700)]
show: Avoid inadvertently closing stdout

GMime has a nasty habit of taking ownership by default of any FILE*
handed to it va g_mime_stream_file_new. Specifically it will close the
FILE* when the stream is destroyed---even though GMime didn't open the
file itself.

To avoid this bad behavior, we have to carefully set_owner(FALSE)
after calling g_mime_stream_file_new. In the format_part_content_text
function, since commit d92146d3a6809f8ad940302af49cd99a0820665e we've
been calling g_mime_stream_file_new unconditionally, but only calling
g_mime_stream_file_set_owner(FALSE) conditionally.

This led to the FILE* being closed early when notmuch show output was
redirected to a file.

Fixing this fixes the test-suite cases that broke with the previous
commit, (which added redirected "notmuch show" calls to the test suite
to expose this bug).

Edited-by: Carl Worth <> with a new commit message to
explain the bug and fix.

10 years agotest: modify multipart test to use test_expect_equal_file
Jameson Graef Rollins [Sat, 28 May 2011 21:16:30 +0000 (14:16 -0700)]
test: modify multipart test to use test_expect_equal_file

Again, this is a much cleaner and more thorough test, and in fact
exposes a bug in the format=text output, that will be fixed the next
commit.  Because of this, some of the multipart tests currently fail.

10 years agotest: update emacs test to use test_expect_equal_file
Jameson Graef Rollins [Sat, 28 May 2011 20:46:24 +0000 (13:46 -0700)]
test: update emacs test to use test_expect_equal_file

This is a much cleaner way to do the emacs tests, since we're actually
comparing output against existing files with expected output.  We also
won't miss any trailing newlines this way.

And speaking of which, one of the expected output files was actually
missing a trailing blank line that was actually in one of the original
messages, so this was fixed.

10 years agoMake `notmuch-show-clean-address' parsing-error-proof.
Dmitry Kurochkin [Thu, 12 May 2011 13:56:25 +0000 (17:56 +0400)]
Make `notmuch-show-clean-address' parsing-error-proof.

Mail-header-parse-address may fail for an invalid address.
Before the change, this would result in empty notmuch-show buffer
with an error message like: Scan error: "Unbalanced parentheses".
The patch wraps the function in condition-case and returns
unchanged address in case of error.

10 years agotest: add "notmuch-show for message with invalid From" test
Dmitry Kurochkin [Thu, 12 May 2011 13:56:26 +0000 (17:56 +0400)]
test: add "notmuch-show for message with invalid From" test

10 years agoemacs: Cleaner interface when prompting for sender address
Thomas Jost [Sat, 28 May 2011 21:51:56 +0000 (14:51 -0700)]
emacs: Cleaner interface when prompting for sender address

Most of the time, every entry in the list of identities has the same user name
part. It can then be filled in automatically, and the user can only be prompted
for the email address, which makes the interface much cleaner.

10 years agoemacs: Don't always prompt for the "From" address when replying
Thomas Jost [Sat, 28 May 2011 21:51:55 +0000 (14:51 -0700)]
emacs: Don't always prompt for the "From" address when replying

When replying, the From: address is already filled in by notmuch reply, so most
of the time there is no need to prompt the user for it.

10 years agoemacs: fix notmuch-show-part-button to not include newline
Jameson Graef Rollins [Sat, 28 May 2011 21:51:54 +0000 (14:51 -0700)]
emacs: fix notmuch-show-part-button to not include newline

This makes the button cleaner, so that it doesn't include the entire
rest of the line that the button is on.

10 years agoFix misspelling in search output sanitization test.
Austin Clements [Sat, 28 May 2011 21:51:53 +0000 (14:51 -0700)]
Fix misspelling in search output sanitization test.

A simple spelling fix in the text description.

Signed-off-by: Jameson Graef Rollins <>
10 years agoavoid segfault when calling sanitize_string() on NULL
Daniel Kahn Gillmor [Sat, 28 May 2011 21:51:52 +0000 (14:51 -0700)]
avoid segfault when calling sanitize_string() on NULL

Signed-off-by: Jameson Graef Rollins <>
10 years agolib/message-file: plug three memleaks.
Anton Khirnov [Sat, 28 May 2011 21:51:51 +0000 (14:51 -0700)]
lib/message-file: plug three memleaks.

Signed-off-by: Jameson Graef Rollins <>
10 years agoUse message-field-value instead of message-fetch-field in FCC header setup.
Dmitry Kurochkin [Sat, 28 May 2011 21:51:50 +0000 (14:51 -0700)]
Use message-field-value instead of message-fetch-field in FCC header setup.

For message-fetch-field the buffer is expected to be narrowed to
just the header of the message.  That is not the case when
notmuch-fcc-header-setup is run, hence a wrong header value may be
returned.  E.g. when forwarding an
email, (message-fetch-field "From") returns the From header value
of the forwarded email.

Message-field-value is the same as message-fetch-field, only
narrows the buffer to the headers first.

Signed-off-by: Jameson Graef Rollins <>
10 years agobindings/python: Bump bindings version to 0.6
Sebastian Spaeth [Thu, 2 Jun 2011 15:44:23 +0000 (17:44 +0200)]
bindings/python: Bump bindings version to 0.6

To match the upcoming release, and with the updated API to match the
current libnotmuch, bump the python version number (notmuch.__VERSION__)
to 0.6.

Signed-off-by: Sebastian Spaeth <>