Import notmuch_0.28.2.orig.tar.gz
authorDavid Bremner <bremner@debian.org>
Sun, 17 Feb 2019 11:30:33 +0000 (07:30 -0400)
committerDavid Bremner <bremner@debian.org>
Sun, 17 Feb 2019 11:30:33 +0000 (07:30 -0400)
[dgit import orig notmuch_0.28.2.orig.tar.gz]

772 files changed:
.dir-locals.el [new file with mode: 0644]
.gitignore [new file with mode: 0644]
.mailmap [new file with mode: 0644]
.travis.yml [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYING-GPL-3 [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile [new file with mode: 0644]
Makefile.global [new file with mode: 0644]
Makefile.local [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
README.rst [new file with mode: 0644]
bindings/Makefile [new file with mode: 0644]
bindings/Makefile.local [new file with mode: 0644]
bindings/python/.gitignore [new file with mode: 0644]
bindings/python/MANIFEST.in [new file with mode: 0644]
bindings/python/README [new file with mode: 0644]
bindings/python/docs/COPYING [new file with mode: 0644]
bindings/python/docs/Makefile [new file with mode: 0644]
bindings/python/docs/source/conf.py [new file with mode: 0644]
bindings/python/docs/source/database.rst [new file with mode: 0644]
bindings/python/docs/source/filesystem.rst [new file with mode: 0644]
bindings/python/docs/source/index.rst [new file with mode: 0644]
bindings/python/docs/source/message.rst [new file with mode: 0644]
bindings/python/docs/source/messages.rst [new file with mode: 0644]
bindings/python/docs/source/notes.rst [new file with mode: 0644]
bindings/python/docs/source/query.rst [new file with mode: 0644]
bindings/python/docs/source/quickstart.rst [new file with mode: 0644]
bindings/python/docs/source/status_and_errors.rst [new file with mode: 0644]
bindings/python/docs/source/tags.rst [new file with mode: 0644]
bindings/python/docs/source/thread.rst [new file with mode: 0644]
bindings/python/docs/source/threads.rst [new file with mode: 0644]
bindings/python/notmuch/__init__.py [new file with mode: 0644]
bindings/python/notmuch/compat.py [new file with mode: 0644]
bindings/python/notmuch/database.py [new file with mode: 0644]
bindings/python/notmuch/directory.py [new file with mode: 0644]
bindings/python/notmuch/errors.py [new file with mode: 0644]
bindings/python/notmuch/filenames.py [new file with mode: 0644]
bindings/python/notmuch/globals.py [new file with mode: 0644]
bindings/python/notmuch/message.py [new file with mode: 0644]
bindings/python/notmuch/messages.py [new file with mode: 0644]
bindings/python/notmuch/query.py [new file with mode: 0644]
bindings/python/notmuch/tag.py [new file with mode: 0644]
bindings/python/notmuch/thread.py [new file with mode: 0644]
bindings/python/notmuch/threads.py [new file with mode: 0644]
bindings/python/notmuch/version.py [new file with mode: 0644]
bindings/python/setup.py [new file with mode: 0644]
bindings/ruby/.gitignore [new file with mode: 0644]
bindings/ruby/README [new file with mode: 0644]
bindings/ruby/database.c [new file with mode: 0644]
bindings/ruby/defs.h [new file with mode: 0644]
bindings/ruby/directory.c [new file with mode: 0644]
bindings/ruby/extconf.rb [new file with mode: 0644]
bindings/ruby/filenames.c [new file with mode: 0644]
bindings/ruby/init.c [new file with mode: 0644]
bindings/ruby/message.c [new file with mode: 0644]
bindings/ruby/messages.c [new file with mode: 0644]
bindings/ruby/query.c [new file with mode: 0644]
bindings/ruby/rdoc.sh [new file with mode: 0755]
bindings/ruby/status.c [new file with mode: 0644]
bindings/ruby/tags.c [new file with mode: 0644]
bindings/ruby/thread.c [new file with mode: 0644]
bindings/ruby/threads.c [new file with mode: 0644]
command-line-arguments.c [new file with mode: 0644]
command-line-arguments.h [new file with mode: 0644]
compat/.gitignore [new file with mode: 0644]
compat/Makefile [new file with mode: 0644]
compat/Makefile.local [new file with mode: 0644]
compat/README [new file with mode: 0644]
compat/canonicalize_file_name.c [new file with mode: 0644]
compat/check_asctime.c [new file with mode: 0644]
compat/check_getpwuid.c [new file with mode: 0644]
compat/compat.h [new file with mode: 0644]
compat/function-attributes.h [new file with mode: 0644]
compat/gen_zlib_pc.c [new file with mode: 0644]
compat/getdelim.c [new file with mode: 0644]
compat/getline.c [new file with mode: 0644]
compat/have_canonicalize_file_name.c [new file with mode: 0644]
compat/have_d_type.c [new file with mode: 0644]
compat/have_getline.c [new file with mode: 0644]
compat/have_strcasestr.c [new file with mode: 0644]
compat/have_strsep.c [new file with mode: 0644]
compat/have_timegm.c [new file with mode: 0644]
compat/strcasestr.c [new file with mode: 0644]
compat/strsep.c [new file with mode: 0644]
compat/timegm.c [new file with mode: 0644]
completion/Makefile [new file with mode: 0644]
completion/Makefile.local [new file with mode: 0644]
completion/README [new file with mode: 0644]
completion/notmuch-completion.bash [new file with mode: 0644]
completion/zsh/_email-notmuch [new file with mode: 0644]
completion/zsh/_notmuch [new file with mode: 0644]
configure [new file with mode: 0755]
contrib/go/.gitignore [new file with mode: 0644]
contrib/go/LICENSE [new file with mode: 0644]
contrib/go/Makefile [new file with mode: 0644]
contrib/go/README [new file with mode: 0644]
contrib/go/src/notmuch-addrlookup/addrlookup.go [new file with mode: 0644]
contrib/go/src/notmuch/notmuch.go [new file with mode: 0644]
contrib/notmuch-mutt/.gitignore [new file with mode: 0644]
contrib/notmuch-mutt/Makefile [new file with mode: 0644]
contrib/notmuch-mutt/README [new file with mode: 0644]
contrib/notmuch-mutt/notmuch-mutt [new file with mode: 0755]
contrib/notmuch-mutt/notmuch-mutt.rc [new file with mode: 0644]
debian/.gitignore [new file with mode: 0644]
debian/NEWS [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/elpa-notmuch.elpa [new file with mode: 0644]
debian/elpa-test [new file with mode: 0644]
debian/gbp.conf [new file with mode: 0644]
debian/libnotmuch-dev.install [new file with mode: 0644]
debian/libnotmuch5.install [new file with mode: 0644]
debian/libnotmuch5.symbols [new file with mode: 0644]
debian/notmuch-emacs.README.Debian [new file with mode: 0644]
debian/notmuch-emacs.maintscript [new file with mode: 0644]
debian/notmuch-mutt.docs [new file with mode: 0644]
debian/notmuch-mutt.install [new file with mode: 0644]
debian/notmuch-mutt.manpages [new file with mode: 0644]
debian/notmuch-vim.README.Debian [new file with mode: 0644]
debian/notmuch-vim.dirs [new file with mode: 0644]
debian/notmuch-vim.docs [new file with mode: 0644]
debian/notmuch-vim.install [new file with mode: 0644]
debian/notmuch.dirs [new file with mode: 0644]
debian/notmuch.docs [new file with mode: 0644]
debian/notmuch.install [new file with mode: 0644]
debian/notmuch.maintscript [new file with mode: 0644]
debian/notmuch.manpages [new file with mode: 0644]
debian/python-notmuch.install [new file with mode: 0644]
debian/python3-notmuch.install [new file with mode: 0644]
debian/ruby-notmuch.install [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/source/format [new file with mode: 0644]
debian/source/options [new file with mode: 0644]
debugger.c [new file with mode: 0644]
devel/RELEASING [new file with mode: 0644]
devel/STYLE [new file with mode: 0644]
devel/TODO [new file with mode: 0644]
devel/check-out-of-tree-build.sh [new file with mode: 0755]
devel/emacs-keybindings.org [new file with mode: 0644]
devel/gen-testdb.sh [new file with mode: 0755]
devel/man-to-mdwn.pl [new file with mode: 0755]
devel/news2wiki.pl [new file with mode: 0755]
devel/nmbug/doc/.gitignore [new file with mode: 0644]
devel/nmbug/doc/Makefile [new file with mode: 0644]
devel/nmbug/doc/conf.py [new file with mode: 0644]
devel/nmbug/doc/index.rst [new file with mode: 0644]
devel/nmbug/doc/man1/notmuch-report.1.rst [new file with mode: 0644]
devel/nmbug/doc/man5/notmuch-report.json.5.rst [new file with mode: 0644]
devel/nmbug/nmbug [new file with mode: 0755]
devel/nmbug/notmuch-report [new file with mode: 0755]
devel/nmbug/notmuch-report.json [new file with mode: 0644]
devel/printmimestructure [new file with mode: 0755]
devel/release-checks.sh [new file with mode: 0755]
devel/schemata [new file with mode: 0644]
devel/try-emacs-mua [new file with mode: 0755]
devel/uncrustify.cfg [new file with mode: 0644]
doc/.gitignore [new file with mode: 0644]
doc/INSTALL [new file with mode: 0644]
doc/Makefile [new file with mode: 0644]
doc/Makefile.local [new file with mode: 0644]
doc/conf.py [new file with mode: 0644]
doc/doxygen.cfg [new file with mode: 0644]
doc/index.rst [new file with mode: 0644]
doc/man1/notmuch-address.rst [new file with mode: 0644]
doc/man1/notmuch-compact.rst [new file with mode: 0644]
doc/man1/notmuch-config.rst [new file with mode: 0644]
doc/man1/notmuch-count.rst [new file with mode: 0644]
doc/man1/notmuch-dump.rst [new file with mode: 0644]
doc/man1/notmuch-emacs-mua.rst [new file with mode: 0644]
doc/man1/notmuch-insert.rst [new file with mode: 0644]
doc/man1/notmuch-new.rst [new file with mode: 0644]
doc/man1/notmuch-reindex.rst [new file with mode: 0644]
doc/man1/notmuch-reply.rst [new file with mode: 0644]
doc/man1/notmuch-restore.rst [new file with mode: 0644]
doc/man1/notmuch-search.rst [new file with mode: 0644]
doc/man1/notmuch-show.rst [new file with mode: 0644]
doc/man1/notmuch-tag.rst [new file with mode: 0644]
doc/man1/notmuch.rst [new file with mode: 0644]
doc/man5/notmuch-hooks.rst [new file with mode: 0644]
doc/man7/notmuch-properties.rst [new file with mode: 0644]
doc/man7/notmuch-search-terms.rst [new file with mode: 0644]
doc/notmuch-emacs.rst [new file with mode: 0644]
emacs/.gitignore [new file with mode: 0644]
emacs/Makefile [new file with mode: 0644]
emacs/Makefile.local [new file with mode: 0644]
emacs/coolj.el [new file with mode: 0644]
emacs/make-deps.el [new file with mode: 0644]
emacs/notmuch-address.el [new file with mode: 0644]
emacs/notmuch-company.el [new file with mode: 0644]
emacs/notmuch-compat.el [new file with mode: 0644]
emacs/notmuch-crypto.el [new file with mode: 0644]
emacs/notmuch-draft.el [new file with mode: 0644]
emacs/notmuch-emacs-mua [new file with mode: 0755]
emacs/notmuch-emacs-mua.desktop [new file with mode: 0644]
emacs/notmuch-hello.el [new file with mode: 0644]
emacs/notmuch-jump.el [new file with mode: 0644]
emacs/notmuch-lib.el [new file with mode: 0644]
emacs/notmuch-logo.png [new file with mode: 0644]
emacs/notmuch-maildir-fcc.el [new file with mode: 0644]
emacs/notmuch-message.el [new file with mode: 0644]
emacs/notmuch-mua.el [new file with mode: 0644]
emacs/notmuch-parser.el [new file with mode: 0644]
emacs/notmuch-pkg.el.tmpl [new file with mode: 0644]
emacs/notmuch-print.el [new file with mode: 0644]
emacs/notmuch-query.el [new file with mode: 0644]
emacs/notmuch-show.el [new file with mode: 0644]
emacs/notmuch-tag.el [new file with mode: 0644]
emacs/notmuch-tree.el [new file with mode: 0644]
emacs/notmuch-version.el.tmpl [new file with mode: 0644]
emacs/notmuch-wash.el [new file with mode: 0644]
emacs/notmuch.el [new file with mode: 0644]
gmime-filter-reply.c [new file with mode: 0644]
gmime-filter-reply.h [new file with mode: 0644]
hooks.c [new file with mode: 0644]
lib/Makefile [new file with mode: 0644]
lib/Makefile.local [new file with mode: 0644]
lib/add-message.cc [new file with mode: 0644]
lib/built-with.c [new file with mode: 0644]
lib/config.cc [new file with mode: 0644]
lib/database-private.h [new file with mode: 0644]
lib/database.cc [new file with mode: 0644]
lib/directory.cc [new file with mode: 0644]
lib/filenames.c [new file with mode: 0644]
lib/index.cc [new file with mode: 0644]
lib/indexopts.c [new file with mode: 0644]
lib/message-file.c [new file with mode: 0644]
lib/message-id.c [new file with mode: 0644]
lib/message-private.h [new file with mode: 0644]
lib/message-property.cc [new file with mode: 0644]
lib/message.cc [new file with mode: 0644]
lib/messages.c [new file with mode: 0644]
lib/notmuch-private.h [new file with mode: 0644]
lib/notmuch.h [new file with mode: 0644]
lib/notmuch.sym [new file with mode: 0644]
lib/parse-time-vrp.cc [new file with mode: 0644]
lib/parse-time-vrp.h [new file with mode: 0644]
lib/query-fp.cc [new file with mode: 0644]
lib/query-fp.h [new file with mode: 0644]
lib/query.cc [new file with mode: 0644]
lib/regexp-fields.cc [new file with mode: 0644]
lib/regexp-fields.h [new file with mode: 0644]
lib/sha1.c [new file with mode: 0644]
lib/string-list.c [new file with mode: 0644]
lib/string-map.c [new file with mode: 0644]
lib/tags.c [new file with mode: 0644]
lib/thread-fp.cc [new file with mode: 0644]
lib/thread-fp.h [new file with mode: 0644]
lib/thread.cc [new file with mode: 0644]
mime-node.c [new file with mode: 0644]
notmuch-client.h [new file with mode: 0644]
notmuch-compact.c [new file with mode: 0644]
notmuch-config.c [new file with mode: 0644]
notmuch-count.c [new file with mode: 0644]
notmuch-dump.c [new file with mode: 0644]
notmuch-insert.c [new file with mode: 0644]
notmuch-new.c [new file with mode: 0644]
notmuch-reindex.c [new file with mode: 0644]
notmuch-reply.c [new file with mode: 0644]
notmuch-restore.c [new file with mode: 0644]
notmuch-search.c [new file with mode: 0644]
notmuch-setup.c [new file with mode: 0644]
notmuch-show.c [new file with mode: 0644]
notmuch-tag.c [new file with mode: 0644]
notmuch-time.c [new file with mode: 0644]
notmuch.c [new file with mode: 0644]
packaging/debian [new file with mode: 0644]
packaging/fedora/notmuch.spec [new file with mode: 0644]
parse-time-string/Makefile [new file with mode: 0644]
parse-time-string/Makefile.local [new file with mode: 0644]
parse-time-string/README [new file with mode: 0644]
parse-time-string/parse-time-string.c [new file with mode: 0644]
parse-time-string/parse-time-string.h [new file with mode: 0644]
performance-test/.gitignore [new file with mode: 0644]
performance-test/M00-new.sh [new file with mode: 0755]
performance-test/M01-dump-restore.sh [new file with mode: 0755]
performance-test/M02-show.sh [new file with mode: 0755]
performance-test/M03-search.sh [new file with mode: 0755]
performance-test/M04-reply.sh [new file with mode: 0755]
performance-test/M05-reindex.sh [new file with mode: 0755]
performance-test/M06-insert.sh [new file with mode: 0755]
performance-test/Makefile [new file with mode: 0644]
performance-test/Makefile.local [new file with mode: 0644]
performance-test/README [new file with mode: 0644]
performance-test/T00-new.sh [new file with mode: 0755]
performance-test/T01-dump-restore.sh [new file with mode: 0755]
performance-test/T02-tag.sh [new file with mode: 0755]
performance-test/T03-reindex.sh [new file with mode: 0755]
performance-test/T04-thread-subquery.sh [new file with mode: 0755]
performance-test/download/.gitignore [new file with mode: 0644]
performance-test/download/notmuch-email-corpus-0.3.tar.xz.asc [new file with mode: 0644]
performance-test/download/notmuch-email-corpus-0.4.tar.xz.asc [new file with mode: 0644]
performance-test/notmuch-memory-test [new file with mode: 0755]
performance-test/notmuch-time-test [new file with mode: 0755]
performance-test/perf-test-lib.sh [new file with mode: 0644]
performance-test/version.sh [new file with mode: 0644]
query-string.c [new file with mode: 0644]
sprinter-json.c [new file with mode: 0644]
sprinter-sexp.c [new file with mode: 0644]
sprinter-text.c [new file with mode: 0644]
sprinter.h [new file with mode: 0644]
status.c [new file with mode: 0644]
tag-util.c [new file with mode: 0644]
tag-util.h [new file with mode: 0644]
test/.gitignore [new file with mode: 0644]
test/Makefile [new file with mode: 0644]
test/Makefile.local [new file with mode: 0644]
test/README [new file with mode: 0644]
test/T000-basic.sh [new file with mode: 0755]
test/T010-help-test.sh [new file with mode: 0755]
test/T020-compact.sh [new file with mode: 0755]
test/T030-config.sh [new file with mode: 0755]
test/T040-setup.sh [new file with mode: 0755]
test/T050-new.sh [new file with mode: 0755]
test/T060-count.sh [new file with mode: 0755]
test/T070-insert.sh [new file with mode: 0755]
test/T080-search.sh [new file with mode: 0755]
test/T090-search-output.sh [new file with mode: 0755]
test/T095-address.sh [new file with mode: 0755]
test/T100-search-by-folder.sh [new file with mode: 0755]
test/T110-search-position-overlap-bug.sh [new file with mode: 0755]
test/T120-search-insufficient-from-quoting.sh [new file with mode: 0755]
test/T130-search-limiting.sh [new file with mode: 0755]
test/T140-excludes.sh [new file with mode: 0755]
test/T150-tagging.sh [new file with mode: 0755]
test/T160-json.sh [new file with mode: 0755]
test/T170-sexp.sh [new file with mode: 0755]
test/T180-text.sh [new file with mode: 0755]
test/T190-multipart.sh [new file with mode: 0755]
test/T200-thread-naming.sh [new file with mode: 0755]
test/T205-author-naming.sh [new file with mode: 0755]
test/T210-raw.sh [new file with mode: 0755]
test/T220-reply.sh [new file with mode: 0755]
test/T230-reply-to-sender.sh [new file with mode: 0755]
test/T240-dump-restore.sh [new file with mode: 0755]
test/T250-uuencode.sh [new file with mode: 0755]
test/T260-thread-order.sh [new file with mode: 0755]
test/T270-author-order.sh [new file with mode: 0755]
test/T280-from-guessing.sh [new file with mode: 0755]
test/T290-long-id.sh [new file with mode: 0755]
test/T300-encoding.sh [new file with mode: 0755]
test/T310-emacs.sh [new file with mode: 0755]
test/T320-emacs-large-search-buffer.sh [new file with mode: 0755]
test/T330-emacs-subject-to-filename.sh [new file with mode: 0755]
test/T340-maildir-sync.sh [new file with mode: 0755]
test/T350-crypto.sh [new file with mode: 0755]
test/T355-smime.sh [new file with mode: 0755]
test/T357-index-decryption.sh [new file with mode: 0755]
test/T360-symbol-hiding.sh [new file with mode: 0755]
test/T370-search-folder-coherence.sh [new file with mode: 0755]
test/T380-atomicity.sh [new file with mode: 0755]
test/T390-python.sh [new file with mode: 0755]
test/T395-ruby.sh [new file with mode: 0755]
test/T400-hooks.sh [new file with mode: 0755]
test/T410-argument-parsing.sh [new file with mode: 0755]
test/T420-emacs-test-functions.sh [new file with mode: 0755]
test/T430-emacs-address-cleaning.sh [new file with mode: 0755]
test/T440-emacs-hello.sh [new file with mode: 0755]
test/T450-emacs-show.sh [new file with mode: 0755]
test/T455-emacs-charsets.sh [new file with mode: 0755]
test/T460-emacs-tree.sh [new file with mode: 0755]
test/T470-missing-headers.sh [new file with mode: 0755]
test/T480-hex-escaping.sh [new file with mode: 0755]
test/T490-parse-time-string.sh [new file with mode: 0755]
test/T500-search-date.sh [new file with mode: 0755]
test/T510-thread-replies.sh [new file with mode: 0755]
test/T520-show.sh [new file with mode: 0755]
test/T530-upgrade.sh [new file with mode: 0755]
test/T550-db-features.sh [new file with mode: 0755]
test/T560-lib-error.sh [new file with mode: 0755]
test/T570-revision-tracking.sh [new file with mode: 0755]
test/T580-thread-search.sh [new file with mode: 0755]
test/T585-thread-subquery.sh [new file with mode: 0755]
test/T590-libconfig.sh [new file with mode: 0755]
test/T590-thread-breakage.sh [new file with mode: 0755]
test/T600-named-queries.sh [new file with mode: 0755]
test/T610-message-property.sh [new file with mode: 0755]
test/T620-lock.sh [new file with mode: 0755]
test/T630-emacs-draft.sh [new file with mode: 0755]
test/T640-database-modified.sh [new file with mode: 0755]
test/T650-regexp-query.sh [new file with mode: 0755]
test/T660-bad-date.sh [new file with mode: 0755]
test/T670-duplicate-mid.sh [new file with mode: 0755]
test/T680-html-indexing.sh [new file with mode: 0755]
test/T690-command-line-args.sh [new file with mode: 0755]
test/T700-reindex.sh [new file with mode: 0755]
test/T710-message-id.sh [new file with mode: 0755]
test/aggregate-results.sh [new file with mode: 0755]
test/arg-test.c [new file with mode: 0644]
test/atomicity.py [new file with mode: 0644]
test/corpora/README [new file with mode: 0644]
test/corpora/broken/broken-cc [new file with mode: 0644]
test/corpora/broken/loop/loop-12 [new file with mode: 0644]
test/corpora/broken/loop/loop-21 [new file with mode: 0644]
test/corpora/crypto/simple-encrypted [new file with mode: 0644]
test/corpora/default/01:2, [new file with mode: 0644]
test/corpora/default/02:2, [new file with mode: 0644]
test/corpora/default/bar/17:2, [new file with mode: 0644]
test/corpora/default/bar/18:2, [new file with mode: 0644]
test/corpora/default/bar/baz/05:2, [new file with mode: 0644]
test/corpora/default/bar/baz/23:2, [new file with mode: 0644]
test/corpora/default/bar/baz/24:2, [new file with mode: 0644]
test/corpora/default/bar/baz/cur/25:2, [new file with mode: 0644]
test/corpora/default/bar/baz/cur/26:2, [new file with mode: 0644]
test/corpora/default/bar/baz/new/27:2, [new file with mode: 0644]
test/corpora/default/bar/baz/new/28:2, [new file with mode: 0644]
test/corpora/default/bar/cur/19:2, [new file with mode: 0644]
test/corpora/default/bar/cur/20:2, [new file with mode: 0644]
test/corpora/default/bar/new/21:2, [new file with mode: 0644]
test/corpora/default/bar/new/22:2, [new file with mode: 0644]
test/corpora/default/cur/29:2, [new file with mode: 0644]
test/corpora/default/cur/30:2, [new file with mode: 0644]
test/corpora/default/cur/31:2, [new file with mode: 0644]
test/corpora/default/cur/32:2, [new file with mode: 0644]
test/corpora/default/cur/33:2, [new file with mode: 0644]
test/corpora/default/cur/34:2, [new file with mode: 0644]
test/corpora/default/cur/35:2, [new file with mode: 0644]
test/corpora/default/cur/36:2, [new file with mode: 0644]
test/corpora/default/cur/37:2, [new file with mode: 0644]
test/corpora/default/cur/38:2, [new file with mode: 0644]
test/corpora/default/cur/39:2, [new file with mode: 0644]
test/corpora/default/cur/40:2, [new file with mode: 0644]
test/corpora/default/cur/41:2, [new file with mode: 0644]
test/corpora/default/cur/42:2, [new file with mode: 0644]
test/corpora/default/cur/43:2, [new file with mode: 0644]
test/corpora/default/cur/44:2, [new file with mode: 0644]
test/corpora/default/cur/45:2, [new file with mode: 0644]
test/corpora/default/cur/46:2, [new file with mode: 0644]
test/corpora/default/cur/47:2, [new file with mode: 0644]
test/corpora/default/cur/48:2, [new file with mode: 0644]
test/corpora/default/cur/49:2, [new file with mode: 0644]
test/corpora/default/cur/50:2, [new file with mode: 0644]
test/corpora/default/cur/51:2, [new file with mode: 0644]
test/corpora/default/cur/52:2, [new file with mode: 0644]
test/corpora/default/cur/53:2, [new file with mode: 0644]
test/corpora/default/foo/06:2, [new file with mode: 0644]
test/corpora/default/foo/baz/11:2, [new file with mode: 0644]
test/corpora/default/foo/baz/12:2, [new file with mode: 0644]
test/corpora/default/foo/baz/cur/13:2, [new file with mode: 0644]
test/corpora/default/foo/baz/cur/14:2, [new file with mode: 0644]
test/corpora/default/foo/baz/new/15:2, [new file with mode: 0644]
test/corpora/default/foo/baz/new/16:2, [new file with mode: 0644]
test/corpora/default/foo/cur/07:2, [new file with mode: 0644]
test/corpora/default/foo/cur/08:2, [new file with mode: 0644]
test/corpora/default/foo/new/03:2, [new file with mode: 0644]
test/corpora/default/foo/new/09:2, [new file with mode: 0644]
test/corpora/default/foo/new/10:2, [new file with mode: 0644]
test/corpora/default/new/04:2, [new file with mode: 0644]
test/corpora/html/attribute-text [new file with mode: 0644]
test/corpora/html/embedded-image [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000260:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000261:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000265:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000323:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000324:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000325:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000539:2, [new file with mode: 0644]
test/corpora/lkml/cur/1354585346.000541:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001724:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001730:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001731:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001732:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001733:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001734:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001735:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001736:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001738:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001739:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001740:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001887:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001892:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.001970:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002189:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002193:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002194:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002195:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002196:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002197:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002201:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002228:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002878:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002912:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002915:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002917:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.002997:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003106:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003112:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003117:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003118:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003171:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003317:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003318:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.003486:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.004581:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298587.004582:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001724:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001730:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001731:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001732:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001733:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001734:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001735:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001736:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001738:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001739:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001740:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001887:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.001892:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002189:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002191:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002193:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002194:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002195:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002196:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002197:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002201:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002878:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002879:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002911:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002912:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002915:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002917:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002930:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.002997:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003106:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003117:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003118:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003171:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003317:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003318:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003486:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.003499:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.004581:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298770.004582:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.002830:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.002978:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.002992:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.002999:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.003976:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.004354:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.004363:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298775.004374:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002253:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002254:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002255:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002256:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002257:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002258:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002259:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002260:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002261:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002262:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002263:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002264:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002265:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002266:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002267:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002268:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002269:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002270:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002271:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002272:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002273:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002274:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002275:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002276:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002277:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002278:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002279:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002280:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002281:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002282:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002283:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002284:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002285:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002286:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002287:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002288:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002289:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002290:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002292:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002293:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002294:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002296:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002297:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002298:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002299:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002302:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002309:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002329:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002340:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002400:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002432:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002468:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002543:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002557:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002575:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002576:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002639:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002642:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002661:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002662:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002663:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002664:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002665:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002666:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002667:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002668:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002669:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002670:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002671:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002679:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002688:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.002699:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003013:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003145:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003148:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003216:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003231:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003278:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003295:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003316:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003334:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003340:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003448:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003459:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003462:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003468:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003471:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003472:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003478:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003497:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003501:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003503:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.003971:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.004059:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.004091:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298793.004190:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298795.000299:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298795.001362:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298795.002635:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298796.001941:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004526:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004551:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004613:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004614:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004615:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004617:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004618:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004619:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004636:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004638:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004639:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004640:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004642:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004653:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004665:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004680:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004688:2, [new file with mode: 0644]
test/corpora/lkml/cur/1382298805.004906:2, [new file with mode: 0644]
test/corpora/threading/ghost-root/1529425589.M615261P21663.len:2,S [new file with mode: 0644]
test/corpora/threading/ghost-root/1532672447.R3166642290392477575.len:2,S [new file with mode: 0644]
test/corpora/threading/ghost-root/1532672447.R6968667928580738175.len:2,S [new file with mode: 0644]
test/corpora/threading/ghost-root/child [new file with mode: 0644]
test/corpora/threading/ghost-root/fake-root [new file with mode: 0644]
test/corpora/threading/ghost-root/grand-child [new file with mode: 0644]
test/corpora/threading/ghost-root/grand-child2 [new file with mode: 0644]
test/corpora/threading/ghost-root/great-grand-child [new file with mode: 0644]
test/corpora/threading/ghost-root/real-root [new file with mode: 0644]
test/corpora/threading/parent-priority/cur/child [new file with mode: 0644]
test/corpora/threading/parent-priority/cur/grand-child [new file with mode: 0644]
test/corpora/threading/parent-priority/cur/root [new file with mode: 0644]
test/database-test.c [new file with mode: 0644]
test/database-test.h [new file with mode: 0644]
test/emacs-address-cleaning.el [new file with mode: 0644]
test/emacs-show.expected-output/notmuch-show-elide-non-matching-messages-off [new file with mode: 0644]
test/emacs-show.expected-output/notmuch-show-elide-non-matching-messages-on [new file with mode: 0644]
test/emacs-show.expected-output/notmuch-show-indent-thread-content-off [new file with mode: 0644]
test/emacs-show.expected-output/notmuch-show-process-crypto-mime-parts-off [new file with mode: 0644]
test/emacs-show.expected-output/notmuch-show-process-crypto-mime-parts-on [new file with mode: 0644]
test/emacs-tree.expected-output/notmuch-tree-show-window [new file with mode: 0644]
test/emacs-tree.expected-output/notmuch-tree-single-thread [new file with mode: 0644]
test/emacs-tree.expected-output/notmuch-tree-tag-inbox [new file with mode: 0644]
test/emacs-tree.expected-output/notmuch-tree-tag-inbox-tagged [new file with mode: 0644]
test/emacs-tree.expected-output/notmuch-tree-tag-inbox-thread-tagged [new file with mode: 0644]
test/emacs.expected-output/attachment [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-empty-custom-queries-section [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-empty-custom-tags-section [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-long-names [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-new-section [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-no-saved-searches [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-section-counts [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-section-hidden-tag [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-section-with-empty [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-view-inbox [new file with mode: 0644]
test/emacs.expected-output/notmuch-hello-with-empty [new file with mode: 0644]
test/emacs.expected-output/notmuch-search-tag-inbox [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-message-with-headers-hidden [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-message-with-headers-visible [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-maildir-storage [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-maildir-storage-with-fourfold-indentation [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-maildir-storage-without-indentation [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed [new file with mode: 0644]
test/emacs.expected-output/notmuch-show-thread-with-hidden-messages [new file with mode: 0644]
test/emacs.expected-output/raw-message-cf0c4d-52ad0a [new file with mode: 0644]
test/export-dirs.sh [new file with mode: 0644]
test/gen-threads.py [new file with mode: 0644]
test/ghost-report.cc [new file with mode: 0644]
test/gnupg-secret-key.NOTE [new file with mode: 0644]
test/gnupg-secret-key.asc [new file with mode: 0644]
test/hex-xcode.c [new file with mode: 0644]
test/make-db-version.cc [new file with mode: 0644]
test/message-id-parse.c [new file with mode: 0644]
test/notmuch-test [new file with mode: 0755]
test/notmuch-test.h [new file with mode: 0644]
test/parse-time.c [new file with mode: 0644]
test/random-corpus.c [new file with mode: 0644]
test/smime/README [new file with mode: 0644]
test/smime/key+cert.pem [new file with mode: 0644]
test/smime/test.crt [new file with mode: 0644]
test/smtp-dummy.c [new file with mode: 0644]
test/symbol-test.cc [new file with mode: 0644]
test/test-databases/.gitignore [new file with mode: 0644]
test/test-databases/Makefile [new file with mode: 0644]
test/test-databases/Makefile.local [new file with mode: 0644]
test/test-databases/database-v1.tar.xz.sha256 [new file with mode: 0644]
test/test-lib-FREEBSD.sh [new file with mode: 0644]
test/test-lib-common.sh [new file with mode: 0644]
test/test-lib.el [new file with mode: 0644]
test/test-lib.sh [new file with mode: 0644]
test/test-verbose [new file with mode: 0755]
test/test.expected-output/test-verbose-no [new file with mode: 0644]
test/test.expected-output/test-verbose-yes [new file with mode: 0644]
test/valgrind/suppressions [new file with mode: 0644]
test/valgrind/valgrind.sh [new file with mode: 0755]
util/Makefile [new file with mode: 0644]
util/Makefile.local [new file with mode: 0644]
util/crypto.c [new file with mode: 0644]
util/crypto.h [new file with mode: 0644]
util/error_util.c [new file with mode: 0644]
util/error_util.h [new file with mode: 0644]
util/gmime-extra.c [new file with mode: 0644]
util/gmime-extra.h [new file with mode: 0644]
util/hex-escape.c [new file with mode: 0644]
util/hex-escape.h [new file with mode: 0644]
util/string-util.c [new file with mode: 0644]
util/string-util.h [new file with mode: 0644]
util/talloc-extra.c [new file with mode: 0644]
util/talloc-extra.h [new file with mode: 0644]
util/util.c [new file with mode: 0644]
util/util.h [new file with mode: 0644]
util/xutil.c [new file with mode: 0644]
util/xutil.h [new file with mode: 0644]
util/zlib-extra.c [new file with mode: 0644]
util/zlib-extra.h [new file with mode: 0644]
version [new file with mode: 0644]
vim/Makefile [new file with mode: 0644]
vim/README [new file with mode: 0644]
vim/notmuch.txt [new file with mode: 0644]
vim/notmuch.vim [new file with mode: 0644]
vim/notmuch.yaml [new file with mode: 0644]
vim/syntax/notmuch-compose.vim [new file with mode: 0644]
vim/syntax/notmuch-folders.vim [new file with mode: 0644]
vim/syntax/notmuch-git-diff.vim [new file with mode: 0644]
vim/syntax/notmuch-search.vim [new file with mode: 0644]
vim/syntax/notmuch-show.vim [new file with mode: 0644]

diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644 (file)
index 0000000..fc75ae6
--- /dev/null
@@ -0,0 +1,25 @@
+;; emacs local configuration settings for notmuch source
+;; surmised by dkg on 2010-11-23 13:43:18-0500
+;; amended by amdragon on 2011-06-06
+
+((c-mode
+  (indent-tabs-mode . t)
+  (tab-width . 8)
+  (c-basic-offset . 4)
+  (c-file-style . "linux"))
+ (c++-mode
+  (indent-tabs-mode . t)
+  (tab-width . 8)
+  (c-basic-offset . 4)
+  (c-file-style . "linux"))
+ (emacs-lisp-mode
+  (indent-tabs-mode . t)
+  (tab-width . 8))
+ (shell-mode
+  (indent-tabs-mode . t)
+  (tab-width . 8)
+  (sh-basic-offset . 4)
+  (sh-indentation . 4))
+ (nil
+  (fill-column . 70))
+ )
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..e06101c
--- /dev/null
@@ -0,0 +1,17 @@
+/.first-build-message
+/Makefile.config
+/sh.config
+/version.stamp
+TAGS
+tags
+*cscope*
+/.deps
+/notmuch
+/notmuch-shared
+/lib/libnotmuch.so*
+/lib/libnotmuch*.dylib
+*.[ao]
+*~
+.*.swp
+/releases
+/.stamps
diff --git a/.mailmap b/.mailmap
new file mode 100644 (file)
index 0000000..935c6eb
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,8 @@
+Peter Feigl <craven@gmx.net>
+Nate <nstraz@redhat.com>
+Ali Polatel <alip@penguen.ev>
+Stefan <aeuii@posteo.de>
+Patrick Totzke <patricktotzke@googlemail.com>
+Patrick Totzke <patricktotzke@gmail.com>
+Patrick Totzke <p.totzke@ed.ac.uk>
+Mark Walters <markwalters1009@gmail.com>
diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..79802b7
--- /dev/null
@@ -0,0 +1,25 @@
+language: c
+
+dist: trusty
+sudo: false
+
+addons:
+  apt:
+    packages:
+    - dtach
+    - libxapian-dev
+    - libgmime-2.6-dev
+    - libtalloc-dev
+    - python3-sphinx
+    - gpgsm
+
+script:
+  - ./configure
+  - make download-test-databases
+  - make test
+
+notifications:
+  irc:
+    channels:
+      - "chat.freenode.net#notmuch"
+    on_success: change
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..5fe5006
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,30 @@
+Carl Worth <cworth@cworth.org> is the primary author of Notmuch.
+But there's really not much that he's done. There's been a lot of
+standing on shoulders here:
+
+William Morgan deserves credit for providing the primary inspiration
+for Notmuch with his program Sup (https://sup-heliotrope.github.io/).
+
+Some people have contributed code that has made it into Notmuch
+without their specific knowledge (but with their full permission
+thanks to the GNU General Public License). This includes:
+
+Brian Gladman (with Mikhail Gusarov <dottedmag@dottedmag.net>)
+       Implementation of SHA-1 (nice and small) (libsha1.c)
+
+Please see the various files in the Notmuch distribution for
+individual copyright statements.
+
+And of course, though their code isn't distributed here, Notmuch would
+be not much of anything without the contributors to Xapian, the search
+engine that does the really heavy lifting, as well as the various
+system libraries, compilers, and the kernel that make it all work
+(thanks GNU, thanks Linux). Thanks to everyone who has played a part!
+
+Here is an incomplete list of other people that have made
+contributions to Notmuch (whether by code, bug reporting/fixes,
+ideas, inspiration, testing or feedback):
+
+Martin Krafft
+Keith Packard
+Jamey Sharp
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..4e744d2
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,15 @@
+Notmuch is free software.
+
+You can redistribute it and/or modify it under the terms of the GNU
+General Public License as published by the Free Software Foundation,
+either version 3 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program, (in the COPYING-GPL-3 file in this
+directory). If not, see https://www.gnu.org/licenses/
diff --git a/COPYING-GPL-3 b/COPYING-GPL-3
new file mode 100644 (file)
index 0000000..4c49354
--- /dev/null
@@ -0,0 +1,676 @@
+
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                      TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+  
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<https://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..6e6f479
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,104 @@
+Build and install instructions for Notmuch.
+
+Compilation commands
+--------------------
+The process for compiling and installing Notmuch is the very standard
+sequence of:
+
+       ./configure
+       make
+       sudo make install
+
+In fact, if you don't plan to pass any arguments to the configure
+script, then you can skip that step and just start with "make", (which
+will call configure for you). See this command:
+
+       ./configure --help
+
+for detailed documentation of the things you can control at the
+configure stage.
+
+Dependencies
+------------
+Notmuch depends on four libraries: Xapian, GMime 2.6,
+Talloc, and zlib which are each described below:
+
+       Xapian
+       ------
+       Xapian is the search-engine library underlying Notmuch.
+
+       It provides all the real machinery of indexing and searching,
+       (including the very nice parsing of the query string).
+
+       Xapian is available from https://xapian.org
+
+       Note: Notmuch will work best with Xapian 1.0.18 (or later) or
+       Xapian 1.1.4 (or later). Previous versions of Xapian (whether
+       1.0 or 1.1) had a performance bug that made notmuch very slow
+       when modifying tags. This would cause distracting pauses when
+       reading mail while notmuch would wait for Xapian when removing
+       the "inbox" and "unread" tags from messages in a thread.
+
+       GMime
+       -----
+       GMime provides decoding of MIME email messages for Notmuch.
+
+       Without GMime, Notmuch would not be able to extract and index
+       the actual text from email message encoded as BASE64, etc.
+
+       GMime is available from https://github.com/jstedfast/gmime
+
+       Talloc
+       ------
+       Talloc is a memory-pool allocator used by Notmuch.
+
+       Talloc is an extremely lightweight and easy-to-use tool for
+       allocating memory in a hierarchical fashion and then freeing
+       it with a single call of the top-level handle. Using it has
+       made development of Notmuch much easier and much less prone to
+       memory leaks.
+
+       Talloc is available from https://talloc.samba.org/
+
+       zlib
+       ----
+
+       zlib is an extremely popular compression library. It is used
+       by Xapian, so if you installed that you will already have
+       zlib. You may need to install the zlib headers separately.
+
+       Notmuch needs the transparent write feature of zlib introduced
+       in version 1.2.5.2 (Dec. 2011).
+
+       zlib is available from https://zlib.net
+
+Building Documentation
+----------------------
+
+To build the documentation for notmuch you need at least version 1.0
+of sphinx (Jul. 2010).
+
+Sphinx is available from www.sphinx-doc.org.
+
+To install the documentation as "info" pages, you will need the
+additional tools makeinfo and install-info.
+
+Installing Dependencies from Packages
+-------------------------------------
+
+On a modern, package-based operating system you can install all of the
+dependencies with a single simple command line. For example:
+
+  For Debian and similar:
+
+        sudo apt-get install libxapian-dev libgmime-3.0-dev libtalloc-dev zlib1g-dev python3-sphinx texinfo install-info
+
+  For Fedora and similar:
+
+       sudo yum install xapian-core-devel gmime-devel libtalloc-devel zlib-devel python3-sphinx texinfo info
+
+On other systems, a similar command can be used, but the details of
+the package names may be different.
+
+       
+
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..d2010fe
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,71 @@
+# We want the all target to be the implicit target (if no target is
+# given explicitly on the command line) so mention it first.
+all:
+
+# Sub-directory Makefile.local fragments can append to these variables
+# to have directory-specific cflags as necessary.
+
+extra_cflags :=
+extra_cxxflags :=
+
+# Get settings from the output of configure by running it to generate
+# Makefile.config if it doesn't exist yet.
+
+# If Makefile.config doesn't exist, then srcdir won't be
+# set. Conditionally set it (assuming a plain srcdir build) so that
+# the rule to generate Makefile.config can actually work.
+srcdir ?= .
+
+include Makefile.config
+
+# We make all targets depend on the Makefiles themselves.
+global_deps = Makefile Makefile.config Makefile.local \
+       $(subdirs:%=%/Makefile) $(subdirs:%=%/Makefile.local)
+
+INCLUDE_MORE := yes
+ifneq ($(filter clean distclean dataclean, $(word 1, $(MAKECMDGOALS))),)
+CLEAN_GOAL := $(word 1, $(MAKECMDGOALS))
+
+# If there are more goals following CLEAN_GOAL, run $(MAKE)s in parts.
+ifneq ($(word 2, $(MAKECMDGOALS)),)
+INCLUDE_MORE := no
+FOLLOWING_GOALS := $(wordlist 2, 99, $(MAKECMDGOALS))
+
+.PHONY: $(FOLLOWING_GOALS) make_in_parts
+$(FOLLOWING_GOALS):
+       @true
+$(CLEAN_GOAL): make_in_parts
+make_in_parts:
+       $(MAKE) $(CLEAN_GOAL)
+       $(MAKE) $(FOLLOWING_GOALS) configure_options="$(configure_options)"
+endif
+
+else
+CLEAN_GOAL :=
+endif
+
+# Potentially speedup make clean, distclean and dataclean ; avoid
+# re-creating Makefile.config if it exists but configure is newer.
+ifneq ($(CLEAN_GOAL),)
+Makefile.config: | $(srcdir)/configure
+else
+Makefile.config: $(srcdir)/configure
+endif
+ifeq ($(configure_options),)
+       @echo ""
+       @echo "Note: Calling ./configure with no command-line arguments. This is often fine,"
+       @echo "      but if you want to specify any arguments (such as an alternate prefix"
+       @echo "      into which to install), call ./configure explicitly and then make again."
+       @echo "      See \"./configure --help\" for more details."
+       @echo ""
+endif
+       $(srcdir)/configure $(configure_options)
+
+ifeq ($(INCLUDE_MORE),yes)
+# runtime variable definitions available in all subdirs
+include $(srcdir)/Makefile.global
+# Finally, include all of the Makefile.local fragments where all the
+# real work is done.
+
+include $(subdirs:%=%/Makefile.local) Makefile.local
+endif
diff --git a/Makefile.global b/Makefile.global
new file mode 100644 (file)
index 0000000..cae4c7d
--- /dev/null
@@ -0,0 +1,65 @@
+# Here's the (hopefully simple) versioning scheme.
+#
+# Releases of notmuch have a two-digit version (0.1, 0.2, etc.). We
+# increment the second digit for each release and increment the first
+# digit when we reach particularly major milestones of usability.
+#
+# Between releases, (such as when compiling notmuch from the git
+# repository), we let git append identification of the actual commit.
+PACKAGE=notmuch
+
+IS_GIT:=$(if $(wildcard ${srcdir}/.git),yes,no)
+
+ifeq ($(IS_GIT),yes)
+DATE:=$(shell git --git-dir=${srcdir}/.git log --date=short -1 --pretty=format:%cd)
+else
+DATE:=$(shell date +%F)
+endif
+
+VERSION:=$(shell cat ${srcdir}/version)
+ELPA_VERSION:=$(subst ~,_,$(VERSION))
+ifeq ($(filter release release-message pre-release update-versions,$(MAKECMDGOALS)),)
+ifeq ($(IS_GIT),yes)
+VERSION:=$(shell git --git-dir=${srcdir}/.git describe --abbrev=7 --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
+# drop the ~g$sha1 part
+ELPA_VERSION:=$(word 1,$(subst ~, ,$(VERSION)))
+# convert git version to package.el friendly form
+ELPA_VERSION:=$(subst +,snapshot,$(ELPA_VERSION))
+
+# Write the file 'version.stamp' in case its contents differ from $(VERSION)
+FILE_VERSION:=$(shell test -f version.stamp && read vs < version.stamp || vs=; echo $$vs)
+ifneq ($(FILE_VERSION),$(VERSION))
+       $(shell echo "$(VERSION)" > version.stamp)
+endif
+endif
+endif
+
+UPSTREAM_TAG=$(subst ~,_,$(VERSION))
+DEB_TAG=debian/$(UPSTREAM_TAG)-1
+
+RELEASE_HOST=notmuchmail.org
+RELEASE_DIR=/srv/notmuchmail.org/www/releases
+RELEASE_URL=https://notmuchmail.org/releases
+TAR_FILE=$(PACKAGE)-$(VERSION).tar.gz
+ELPA_FILE:=$(PACKAGE)-emacs-$(ELPA_VERSION).tar
+DEB_TAR_FILE=$(PACKAGE)_$(VERSION).orig.tar.gz
+SHA256_FILE=$(TAR_FILE).sha256
+GPG_FILE=$(SHA256_FILE).asc
+
+PV_FILE=bindings/python/notmuch/version.py
+
+# Smash together user's values with our extra values
+STD_CFLAGS := -std=gnu99
+FINAL_CFLAGS = -DNOTMUCH_VERSION=$(VERSION) $(CPPFLAGS) $(STD_CFLAGS) $(CFLAGS) $(WARN_CFLAGS) $(extra_cflags) $(CONFIGURE_CFLAGS)
+FINAL_CXXFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(WARN_CXXFLAGS) $(extra_cflags) $(extra_cxxflags) $(CONFIGURE_CXXFLAGS)
+FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Lutil -lnotmuch_util -Llib -lnotmuch
+ifeq ($(LIBDIR_IN_LDCONFIG),0)
+FINAL_NOTMUCH_LDFLAGS += $(RPATH_LDFLAGS)
+endif
+FINAL_NOTMUCH_LDFLAGS += $(AS_NEEDED_LDFLAGS) $(GMIME_LDFLAGS) $(TALLOC_LDFLAGS) $(ZLIB_LDFLAGS)
+FINAL_NOTMUCH_LINKER = CC
+ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1)
+FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS)
+FINAL_NOTMUCH_LINKER = CXX
+endif
+FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
diff --git a/Makefile.local b/Makefile.local
new file mode 100644 (file)
index 0000000..82145e1
--- /dev/null
@@ -0,0 +1,309 @@
+# -*- makefile -*-
+
+.PHONY: all
+all: notmuch notmuch-shared build-man build-info ruby-bindings
+ifeq ($(MAKECMDGOALS),)
+ifeq ($(shell cat .first-build-message 2>/dev/null),)
+       @NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
+       @echo ""
+       @echo "Compilation of notmuch is now complete. You can install notmuch with:"
+       @echo ""
+       @echo " make install"
+       @echo ""
+       @echo "Note that depending on the prefix to which you are installing"
+       @echo "you may need root permission (such as \"sudo make install\")."
+       @echo "See \"./configure --help\" for help on setting an alternate prefix."
+       @echo Printed > .first-build-message
+endif
+endif
+
+# Depend (also) on the file 'version'. In case of ifeq ($(IS_GIT),yes)
+# this file may already have been updated.
+version.stamp: $(srcdir)/version
+       echo $(VERSION) > $@
+
+$(TAR_FILE):
+       if git tag -v $(UPSTREAM_TAG) >/dev/null 2>&1; then \
+           ref=$(UPSTREAM_TAG); \
+        else \
+           ref="HEAD" ; \
+          echo "Warning: No signed tag for $(VERSION)"; \
+       fi ; \
+       git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ $$ref > $(TAR_FILE).tmp
+       echo $(VERSION) > version.tmp
+       ct=`git --no-pager log -1 --pretty=format:%ct $$ref` ; \
+       tar --owner root --group root --append -f $(TAR_FILE).tmp \
+               --transform s_^_$(PACKAGE)-$(VERSION)/_  \
+               --transform 's_.tmp$$__' --mtime=@$$ct version.tmp
+       rm version.tmp
+       gzip -n < $(TAR_FILE).tmp > $(TAR_FILE)
+       @echo "Source is ready for release in $(TAR_FILE)"
+
+$(SHA256_FILE): $(TAR_FILE)
+       sha256sum $^ > $@
+
+$(GPG_FILE): $(SHA256_FILE)
+       gpg --armor --sign $^
+
+.PHONY: dist
+dist: $(TAR_FILE)
+
+.PHONY: update-versions
+
+update-versions:
+       sed -i -e "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" \
+           -e "s/^SOVERSION[[:blank:]]*=.*$$/SOVERSION = \'${LIBNOTMUCH_VERSION_MAJOR}\'/" \
+           ${PV_FILE}
+
+# We invoke make recursively only to force ordering of our phony
+# targets in the case of parallel invocation of make (-j).
+#
+# We carefully ensure that our VERSION variable is passed down to any
+# sub-ordinate make invocations (which won't otherwise know that they
+# are part of the release and need to take the version from the
+# version file).
+.PHONY: release
+release: verify-source-tree-and-version
+       $(MAKE) VERSION=$(VERSION) verify-newer
+       $(MAKE) VERSION=$(VERSION) clean
+       $(MAKE) VERSION=$(VERSION) test
+       git tag -s -m "$(PACKAGE) $(VERSION) release" $(UPSTREAM_TAG)
+       $(MAKE) VERSION=$(VERSION) $(GPG_FILE)
+       ln -sf $(TAR_FILE) $(DEB_TAR_FILE)
+       pristine-tar commit $(DEB_TAR_FILE) $(UPSTREAM_TAG)
+       git tag -s -m "$(PACKAGE) Debian $(VERSION)-1 upload (same as $(VERSION))" $(DEB_TAG)
+       mkdir -p releases
+       mv $(TAR_FILE) $(SHA256_FILE) $(GPG_FILE) releases
+       $(MAKE) VERSION=$(VERSION) release-message > $(PACKAGE)-$(VERSION).announce
+ifeq ($(REALLY_UPLOAD),yes)
+       git push origin $(VERSION) $(DEB_TAG) release pristine-tar
+       cd releases && scp $(TAR_FILE) $(SHA256_FILE) $(GPG_FILE) $(RELEASE_HOST):$(RELEASE_DIR)
+       ssh $(RELEASE_HOST) "rm -f $(RELEASE_DIR)/LATEST-$(PACKAGE)-* ; ln -s $(TAR_FILE) $(RELEASE_DIR)/LATEST-$(TAR_FILE)"
+endif
+       @echo "Please send a release announcement using $(PACKAGE)-$(VERSION).announce as a template."
+
+.PHONY: pre-release
+pre-release:
+       $(MAKE) VERSION=$(VERSION) clean
+       $(MAKE) VERSION=$(VERSION) test
+       git tag -s -m "$(PACKAGE) $(VERSION) release" $(UPSTREAM_TAG)
+       git tag -s -m "$(PACKAGE) Debian $(VERSION)-1 upload (same as $(VERSION))" $(DEB_TAG)
+       $(MAKE) VERSION=$(VERSION) $(TAR_FILE)
+       ln -sf $(TAR_FILE) $(DEB_TAR_FILE)
+       pristine-tar commit $(DEB_TAR_FILE) $(UPSTREAM_TAG)
+       mkdir -p releases
+       mv $(TAR_FILE) $(DEB_TAR_FILE) releases
+
+.PHONY: debian-snapshot
+debian-snapshot:
+       make VERSION=$(VERSION) clean
+       TMPFILE=$$(mktemp /tmp/notmuch.XXXXXX);         \
+         cp debian/changelog $${TMPFILE};              \
+         EDITOR=/bin/true dch -b -v $(VERSION)+1       \
+           -D UNRELEASED 'test build, not for upload'; \
+         echo '3.0 (native)' > debian/source/format;   \
+         debuild -us -uc;                              \
+         mv -f $${TMPFILE} debian/changelog;           \
+         echo '3.0 (quilt)' > debian/source/format
+
+.PHONY: release-message
+release-message:
+       @echo "To: notmuch@notmuchmail.org"
+       @echo "Subject: $(PACKAGE) release $(VERSION) now available"
+       @echo ""
+       @echo "Where to obtain notmuch $(VERSION)"
+       @echo "==========================="
+       @echo "  $(RELEASE_URL)/$(TAR_FILE)"
+       @echo ""
+       @echo "Which can be verified with:"
+       @echo ""
+       @echo "  $(RELEASE_URL)/$(SHA256_FILE)"
+       @echo -n "  "
+       @cat releases/$(SHA256_FILE)
+       @echo ""
+       @echo "  $(RELEASE_URL)/$(GPG_FILE)"
+       @echo "  (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)"
+       @echo ""
+       @echo "What's new in notmuch $(VERSION)"
+       @echo "========================="
+       @sed -ne '/^[Nn]otmuch $(VERSION)/{n;n;b NEWS}; d; :NEWS /^===/q; {p;n;b NEWS}' < NEWS | head -n -2
+       @echo ""
+       @echo "What is notmuch"
+       @echo "==============="
+       @echo "Notmuch is a system for indexing, searching, reading, and tagging"
+       @echo "large collections of email messages in maildir or mh format. It uses"
+       @echo "the Xapian library to provide fast, full-text search with a convenient"
+       @echo "search syntax."
+       @echo ""
+       @echo "For more about notmuch, see https://notmuchmail.org"
+
+# This is a chain of dependencies rather than a simple list simply to
+# avoid the messages getting interleaved in the case of a parallel
+# make invocation.
+.PHONY: verify-source-tree-and-version
+verify-source-tree-and-version: verify-no-dirty-code
+
+.PHONY: verify-no-dirty-code
+verify-no-dirty-code: release-checks
+ifeq ($(IS_GIT),yes)
+       @printf "Checking that source tree is clean..."
+ifneq ($(shell git --git-dir=${srcdir}/.git ls-files -m),)
+       @echo "No"
+       @echo "The following files have been modified since the most recent git commit:"
+       @echo ""
+       @git --git-dir=${srcdir}/.git ls-files -m
+       @echo ""
+       @echo "The release will be made from the committed state, but perhaps you meant"
+       @echo "to commit this code first? Please clean this up to make it more clear."
+       @false
+else
+       @echo "Good"
+endif
+endif
+
+.PHONY: release-checks
+release-checks:
+       devel/release-checks.sh
+
+.PHONY: verify-newer
+verify-newer:
+       @echo -n "Checking that no $(VERSION) release already exists..."
+       @wget -q --no-check-certificate -O /dev/null $(RELEASE_URL)/$(TAR_FILE) ; \
+       case $$? in \
+          8) echo "Good." ;; \
+          0) echo "Ouch."; \
+            echo "Found: $(RELEASE_URL)/$(TAR_FILE)"; \
+            echo "Refusing to replace an existing release."; \
+            echo "Don't forget to update \"version\" as described in RELEASING before release." ; \
+            false ;; \
+         *) echo "An unexpected error occurred"; \
+            false;; esac
+
+# The user has not set any verbosity, default to quiet mode and inform the
+# user how to enable verbose compiles.
+ifeq ($(V),)
+quiet_DOC := "Use \"$(MAKE) V=1\" to see the verbose compile lines.\n"
+quiet = @printf $(quiet_DOC)$(eval quiet_DOC:=)"$(1) $(or $(2),$@)\n"; $($(word 1, $(1)))
+endif
+# The user has explicitly enabled quiet compilation.
+ifeq ($(V),0)
+quiet = @printf "$(1) $(or $(2),$@)\n"; $($(word 1, $(1)))
+endif
+# Otherwise, print the full command line.
+quiet ?= $($(word 1, $(1)))
+
+%.o: %.cc $(global_deps)
+       @mkdir -p $(patsubst %/.,%,.deps/$(@D))
+       $(call quiet,CXX $(CPPFLAGS) $(CXXFLAGS)) -c $(FINAL_CXXFLAGS) $< -o $@ -MD -MP -MF .deps/$*.d
+
+%.o: %.c $(global_deps)
+       @mkdir -p $(patsubst %/.,%,.deps/$(@D))
+       $(call quiet,CC $(CPPFLAGS) $(CFLAGS)) -c $(FINAL_CFLAGS) $< -o $@ -MD -MP -MF .deps/$*.d
+
+CPPCHECK=cppcheck
+.stamps/cppcheck/%: %
+       @mkdir -p $(@D)
+       $(call quiet,CPPCHECK,$<) --template=gcc --error-exitcode=1 --quiet $<
+       @touch $@
+
+CLEAN := $(CLEAN) .stamps
+
+.PHONY : clean
+clean:
+       rm -rf $(CLEAN)
+
+.PHONY: distclean
+distclean: clean
+       rm -rf $(DISTCLEAN)
+
+.PHONY: dataclean
+dataclean: distclean
+       rm -rf $(DATACLEAN)
+
+notmuch_client_srcs =          \
+       $(notmuch_compat_srcs)  \
+       command-line-arguments.c\
+       debugger.c              \
+       status.c                \
+       gmime-filter-reply.c    \
+       hooks.c                 \
+       notmuch.c               \
+       notmuch-compact.c       \
+       notmuch-config.c        \
+       notmuch-count.c         \
+       notmuch-dump.c          \
+       notmuch-insert.c        \
+       notmuch-new.c           \
+       notmuch-reindex.c       \
+       notmuch-reply.c         \
+       notmuch-restore.c       \
+       notmuch-search.c        \
+       notmuch-setup.c         \
+       notmuch-show.c          \
+       notmuch-tag.c           \
+       notmuch-time.c          \
+       sprinter-json.c         \
+       sprinter-sexp.c         \
+       sprinter-text.c         \
+       query-string.c          \
+       mime-node.c             \
+       tag-util.c
+
+notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
+
+notmuch.o: version.stamp
+
+notmuch: $(notmuch_client_modules) lib/libnotmuch.a util/libnotmuch_util.a parse-time-string/libparse-time-string.a
+       $(call quiet,CXX $(CFLAGS)) $^ $(FINAL_LIBNOTMUCH_LDFLAGS) -o $@
+
+notmuch-shared: $(notmuch_client_modules) lib/$(LINKER_NAME)
+       $(call quiet,$(FINAL_NOTMUCH_LINKER) $(CFLAGS)) $(notmuch_client_modules) $(FINAL_NOTMUCH_LDFLAGS) -o $@
+
+.PHONY: install
+install: all install-man install-info
+       mkdir -p "$(DESTDIR)$(prefix)/bin/"
+       install notmuch-shared "$(DESTDIR)$(prefix)/bin/notmuch"
+ifeq ($(MAKECMDGOALS), install)
+       @echo ""
+       @echo "Notmuch is now installed to $(DESTDIR)$(prefix)"
+       @echo ""
+       @echo "New users should simply run \"notmuch\" to be guided"
+       @echo "through the process of configuring notmuch and creating"
+       @echo "a database of existing email messages. The \"notmuch\""
+       @echo "command will also offer some sample search commands."
+ifeq ($(WITH_EMACS), 1)
+       @echo ""
+       @echo "Beyond the command-line interface, notmuch also offers"
+       @echo "a full-featured interface for reading and writing mail"
+       @echo "within emacs. To use this, each user should add the"
+       @echo "following line to the ~/.emacs file:"
+       @echo ""
+       @echo " (require 'notmuch)"
+       @echo ""
+       @echo "And then run emacs as \"emacs -f notmuch\" or invoke"
+       @echo "the command \"M-x notmuch\" from within emacs."
+endif
+endif
+
+SRCS  := $(SRCS) $(notmuch_client_srcs)
+CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules)
+CLEAN := $(CLEAN) version.stamp notmuch-*.tar.gz.tmp
+CLEAN := $(CLEAN) .deps
+
+DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config sh.config
+
+CPPCHECK_STAMPS := $(SRCS:%=.stamps/cppcheck/%)
+.PHONY: cppcheck
+ifeq ($(HAVE_CPPCHECK),1)
+cppcheck: ${CPPCHECK_STAMPS}
+else
+cppcheck:
+       @echo "No cppcheck found during configure; skipping static checking"
+endif
+
+
+DEPS := $(SRCS:%.c=.deps/%.d)
+DEPS := $(DEPS:%.cc=.deps/%.d)
+-include $(DEPS)
+
+.SUFFIXES: # Delete the default suffixes. Old-Fashioned Suffix Rules not used.
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e469ba0
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,4183 @@
+Notmuch 0.28.2 (2019-02-17)
+===========================
+
+Emacs
+-----
+
+Invoke gpg with --batch and --no-tty.
+
+Python Bindings
+---------------
+
+Fix documentation build with Python 3.7. Note that Python >= 3.3 is
+now needed to build this documentation.
+
+Notmuch 0.28.1 (2019-02-01)
+===========================
+
+Build System
+------------
+
+`configure` no longer uses the special variable BASH, as this causes
+problems on systems where /bin/sh is bash.
+
+Notmuch 0.28 (2018-10-12)
+=========================
+
+General
+-------
+
+Improve threading
+
+  The threading algorithm has been updated to consider all references,
+  not just the heuristically chosen parent (e.g. when that parent is
+  not in the database). The heuristic for choosing a parent message
+  has also been updated to again consider the In-Reply-To header, if
+  it looks sensible. Re-indexing might be needed to take advantage of
+  the latter change.
+
+Handle mislabelled Windows-1252 parts
+
+  Messages that contain Windows-1252 are apparently frequently
+  mislabelled as ISO 8859-1. Use GMime functionality to apply the
+  correct encoding for such messages.
+
+Command Line Interface
+----------------------
+
+Support relative database paths
+
+  Database paths (i.e. parameters to `notmuch config set
+  database.path`) without a leading `/` are now interpreted relative
+  to $HOME of the invoking user.
+
+Emacs
+-----
+
+Improve stderr handling
+
+  Add a real sentinel process to clean up stderr buffer. This is
+  needed on e.g. macOS.
+
+Call `notmuch-mua-send-hook` hooks when sending a message
+
+  This hook was documented, but not functional for a very long time.
+
+Completion
+----------
+
+The zsh completion has been updated to cover most of the notmuch
+CLI. Internally it uses regexp searching, so needs at least Notmuch
+0.24.
+
+Build System
+------------
+
+The build system now installs notmuch-mutt and notmuch-emacs-mua with
+absolute shebangs, following the conventions of most Linux
+distributions.
+
+Test Suite
+----------
+
+Fix certain tests that were failing with GMime 2.6. Users are reminded
+that support for versions of GMime before 3.0.3 has been deprecated
+since Notmuch 0.25.
+
+Notmuch 0.27 (2018-06-13)
+=========================
+
+General
+-------
+
+Add support for thread:{} queries
+
+  Queries of the form `thread:{foo} and thread:{bar}` match threads
+  containing (possibly distinct) messages matching foo and bar. See
+  `notmuch-search-terms(7)` for details.
+
+Command Line Interface
+----------------------
+
+Add the --full-scan option to `notmuch new`
+
+  This option disables mtime based optimization of scanning for new mail.
+
+Add new --decrypt=stash option for `notmuch show`
+
+  This facilitates a workflow for encrypted messages where message
+  cleartext are indexed on first read, but the user's decryption key
+  does not have to be available during message receipt.
+
+Documentation
+-------------
+
+An initial manual for `notmuch-emacs` is now installed by default (in
+`info` format).
+
+Dependencies
+------------
+
+As of this release, support for versions of Xapian before 1.4.0 is
+deprecated, and may disappear in a future release of notmuch.
+
+Notmuch 0.26.2 (2018-04-28)
+===========================
+
+Library Changes
+---------------
+
+Work around Xapian bug with `get_mset(0,0, x)`
+
+  This causes aborts in `_notmuch_query_count_documents` on
+  e.g. Fedora 28.  The underlying bug is fixed in Xapian commit
+  f92e2a936c1592, and will be fixed in Xapian 1.4.6.
+
+Make thread indexing more robust against reference loops
+
+  Choose a thread root by date in case of reference loops. Fix a
+  related abort in `notmuch show`.
+
+Notmuch 0.26.1 (2018-04-02)
+===========================
+
+Library Changes
+---------------
+
+Bump the library minor version. This should have happened in 0.26, but
+better late than never.
+
+
+Notmuch 0.26 (2018-01-09)
+=========================
+
+Command Line Interface
+----------------------
+
+Support for re-indexing existing messages
+
+  There is a new subcommand, `notmuch reindex`, which re-indexes all
+  messages matching supplied search terms.  This permits users to
+  change the way specific messages are indexed.
+
+  Note that for messages with multiple variants in the message
+  archive, the recorded Subject: of may change upon reindexing,
+  depending on the order in which the variants are indexed.
+
+Improved error reporting in notmuch new
+
+  Give more details when reporting certain Xapian exceptions.
+
+Support maildir synced tags in `new.tags`
+
+  Tags `draft`, `flagged`, `passed`, and `replied` are now supported
+  in `new.tags`. The tag `unread` is still special in the presence of
+  maildir syncing, and will be added for files in `new/` regardless of
+  the setting of `new.tags`.
+
+Support /regex/ in new.ignore
+
+  Files and directories may be ignored based on regular expressions.
+
+Allow `notmuch insert --folder=""`
+
+  This inserts into the top level folder.
+
+Strip trailing '/' from folder path for notmuch insert
+
+  This prevents a potential problem with duplicated database records.
+
+New option --output=address for notmuch address
+
+Make `notmuch show` more robust against deleting duplicate files
+
+The option --decrypt now takes an explicit argument
+
+  The --decrypt option to `notmuch show` and `notmuch reply` now takes
+  an explicit argument.  If you were used to invoking `notmuch show
+  --decrypt`, you should switch to `notmuch show --decrypt=true`.
+
+Boolean and keyword arguments now take a `--no-` prefix
+
+Encrypted Mail
+--------------
+
+Indexing cleartext of encrypted e-mails
+
+  It's now possible to include the cleartext of encrypted e-mails in
+  the notmuch index.  This makes it possible to search your encrypted
+  e-mails with the same ease as searching cleartext.  This can be done
+  on a per-message basis by passing --decrypt=true to indexing
+  commands (new, insert, reindex), or by default by running "notmuch
+  config set index.decrypt true".
+
+  Encrypted messages whose cleartext is indexed will typically also
+  have their session keys stashed as properties associated with the
+  message.  Stashed session keys permit rapid rendering of long
+  encrypted threads, and disposal of expired encryption-capable keys.
+  If for some reason you want cleartext indexing without stashed
+  session keys, use --decrypt=nostash for your indexing commands (or
+  run "notmuch config set index.decrypt nostash"). See `index.decrypt`
+  in notmuch-config(1) for more details.
+
+  Note that stashed session keys permit reconstruction of the
+  cleartext of the encrypted message itself, and the contents of the
+  index are roughly equivalent to the cleartext as well.  DO NOT USE
+  this feature without considering the security of your index.
+
+Emacs
+-----
+
+Guard against concurrent searches in notmuch-tree
+
+Use make-process when available
+
+  This allows newer Emacs to separate stdout and stderr from the
+  notmuch command without using temporary files.
+
+Library Changes
+---------------
+
+Indexing files with duplicate message-id
+
+  Files with duplicate message-id's are now indexed, and searchable
+  via terms and phrases. There are known issues related to
+  presentation of results and regular-expression search, but in
+  principle no mail file should be completely unsearchable now.
+
+New functions to count files
+
+  Two new functions in the libnotmuch API:
+  `notmuch_message_count_files`, and `notmuch_thread_get_total_files`.
+
+New function to remove properties
+
+  A new function was added to the libnotmuch API to make it easier to
+  drop all properties with a common pattern:
+  `notmuch_message_remove_all_properties_with_prefix`
+
+Change of return value of `notmuch_thread_get_authors`
+
+  In certain corner cases, `notmuch_thread_get_authors` previously
+  returned NULL.  This has been replaced by an empty string, since the
+  possibility of NULL was not documented.
+
+Transition `notmuch_database_add_message` to `notmuch_database_index_file`
+
+  When indexing an e-mail message, the new
+  `notmuch_database_index_file` function is the preferred form, and
+  the old `notmuch_database_add_message` is deprecated.  The new form
+  allows passing a set of options to the indexing engine, which the
+  operator may decide to change from message to message.
+
+Test Suite
+----------
+
+Out-of-tree builds
+
+  The test suite now works properly with out-of-tree builds, i.e. with
+  separate source and build directories. The --root option to tests
+  has been dropped. The same can now be achieved more reliably using
+  out-of-tree builds.
+
+Python Bindings
+---------------
+
+Python bindings specific Debian packaging is removed
+
+  The bindings have been build by the top level Debian packaging for a
+  long time, and `bindings/python/debian` has bit-rotted.
+
+Open mail files in binary mode when using Python 3
+
+  This avoids certain encoding related crashes under Python 3.
+
+Add python bindings for `notmuch_database_{get,set}_config*`
+
+Optional `decrypt_policy` flag is available for notmuch.database().index_file()
+
+nmbug
+-----
+
+nmbug's internal version increases to 0.3 in this notmuch release.
+User-facing changes with this notmuch release:
+
+* Accept failures to unset `core.worktree` in `clone`, which allows
+  nmbug to be used with Git 2.11.0 and later.
+* Auto-checkout in `clone` if it wouldn't clobber existing content,
+  which makes the initial clone more convenient.
+* Only error for invalid diff lines in `tags/`, which allows for
+  `README`s and similar in nmbug repositories.
+
+Documentation
+-------------
+
+New man page: notmuch-properties(7)
+
+  This new page to the manual describes common conventions for how
+  properties are used by libnotmuch, the CLI, and associated programs.
+  External projects that use properties are encouraged to claim their
+  properties and conventions here to avoid collisions.
+
+Notmuch 0.25.3 (2017-12-08)
+===========================
+
+Emacs
+-----
+
+Extend mitigation (disabling handling x-display in text/enriched) for
+Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
+`advice-add`).
+
+Command Line Interface
+----------------------
+
+Correctly report userid validity. Fix test suite failure for GMime >=
+3.0.3. This change raises the minimum supported version of GMime 3.x
+to 3.0.3.
+
+Notmuch 0.25.2 (2017-11-05)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix segfault in notmuch-show crypto handling when compiled against
+GMime 2.6; this was a regression in 0.25.
+
+General
+-------
+
+Support for GMime before 3.0 is now deprecated, and will be removed in
+a future release.
+
+Notmuch 0.25.1 (2017-09-11)
+===========================
+
+Emacs
+-----
+
+Disable handling x-display in text/enriched messages. Mitigation for
+Emacs bug #28350.
+
+Notmuch 0.25 (2017-07-25)
+=========================
+
+General
+-------
+
+Add regexp searching for mid, paths, and tags.
+
+Skip HTML tags when indexing
+
+  In particular this avoids indexing large inline images.
+
+Command Line Interface
+----------------------
+
+Bash completion is now installed to /usr/share by default.
+
+Allow space as separator for keyword arguments.
+
+Emacs
+-----
+
+Support for stashing message timestamp in show and tree views
+
+  Invoking `notmuch-show-stash-date` with a prefix argument
+  stashes the unix timestamp of the current message instead of
+  the date string.
+
+Don't use 'function' as variable name, workaround emacs bug 26406.
+
+Library Changes
+---------------
+
+Add workaround for date parsing of bad input in older GMime
+
+  In certain circumstances, older GMime libraries could return
+  negative numbers when parsing syntactically invalid dates.
+
+Replace deprecated functions with status returning versions
+
+  API of notmuch_query_{search,count}_{messages,threads} has
+  changed.  notmuch_query_add_tag_exclude now returns a status
+  value.
+
+Add support for building against GMime 3.0.
+
+Rename libutil.a to libnotmuch_util.a.
+
+libnotmuch SONAME is incremented to libnotmuch.so.5.
+
+Notmuch 0.24.2 (2017-06-01)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix output from `notmuch dump --include=properties` to not include tags.
+
+Emacs
+-----
+
+Fix filename stashing in tree view.
+
+Notmuch 0.24.1 (2017-04-01)
+===========================
+
+General
+-------
+
+Fix regressions in non-regexp search for `from:` and `subject:`
+
+  The regexp search code in 0.24 introduced a regression in the
+  handling of empty queries and wildcards. These are both corrected in
+  this release.
+
+Command Line Interface
+----------------------
+
+Fix several memory leaks in `notmuch show`
+
+Update NEWS for 0.24 to mention schema changes
+
+Fix bug in dump header
+
+  The previous version of the dump header failed to mention the
+  inclusion of tags. This fix bumps the version number of the dump
+  format to 3. There are no other changes to the format.
+
+Library Changes
+---------------
+
+Fix a read-after-free in the library.
+
+Notmuch 0.24 (2017-03-12)
+=========================
+
+General
+-------
+
+Regular expression searches supported for `from:` and `subject:`
+
+  This requires recent Xapian (1.4+) See notmuch-search-terms(7) for
+  details.
+
+Command Line Interface
+----------------------
+
+Run external `notmuch-` prefixed commands as subcommands
+
+  You can now add your own `notmuch-` prefixed commands in PATH, and
+  have notmuch run them as if they were notmuch commands. See the
+  `notmuch(1)` man page for details
+
+New default output format to 3
+
+  See devel/schemata for details. Users of the structured output
+  format are reminded of the `--format-version` argument to `notmuch
+  show` and `notmuch search` which can prevent breakage when the
+  default format changes.
+
+Emacs
+-----
+
+Postpone and resume messages in `notmuch-message-mode` (composition)
+
+  Notmuch now has built in support for postponing, saving and resuming
+  messages. The default bindings are C-x C-s to save a draft, C-c C-p
+  to postpone a draft (save and exit compose buffer), and "e" in show
+  or tree view to resume.
+
+  Draft messages are tagged with `notmuch-draft-tags` (draft by
+  default) so you may wish to add that to the excluded tags list. When
+  saving a previously saved draft message the earlier draft gets
+  tagged deleted.
+
+  Note that attachments added before postponing will be included as
+  they were when you postponed in the final message.
+
+Address Completion
+
+  It is now possible to save the list of address completions for
+  notmuch's internal completion between runs of emacs. This makes the
+  first calls to address completion much better and faster. For
+  privacy reasons it is disabled by default, to enable set or
+  customize `notmuch-address-save-filename`.
+
+Tag jump menu
+
+  It is now possible to configure tagging shortcuts (with an interface
+  like notmuch jump). For example (by default) k u will remove the
+  unread tag, and k s will add a tag "spam" and remove the inbox
+  tag. Pressing k twice will do the reverse operation so, for example,
+  k k s removes the spam tag and adds the inbox tag. See the customize
+  variable `notmuch-tagging-keys` for more information.
+
+Refresh all buffers
+
+  It is now possible to refresh all notmuch buffers to reflect the
+  current state of the database with a single command, `M-=`.
+
+Stop display of `application/*` parts
+
+  By default gnus displays all `application/*` parts such as
+  application/zip in the message buffer. This has several undesirable
+  effects for notmuch (security, triggering errors etc). Notmuch now
+  overrides this and does not display them by default. If you have
+  customized `mm-inline-override-types` then we assume you know what
+  you want and do not interfere; if you do want to stop the display of
+  `application/*` add `application/*` to your customization. If you want
+  to allow `application/*` then set `mm-inline-override-types` to
+  "non/existent".
+
+Small change in the api for notmuch-search-tag
+
+  When `notmuch-search-tag` is called non-interactively and the region
+  is set, then it only tags the threads in the region. (Previously it
+  only tagged the current thread.)
+
+Bugfix for sending messages with very long headers
+
+  Previously emacs didn't fold very long headers when sending which
+  could cause the MTA to refuse to send the message. This makes sure
+  it does fold any long headers so the message is RFC compliant.
+
+`notmuch emacs-mua` command installed with the Emacs interface
+
+  We've carried a `notmuch-emacs-mua` script in the source tree for
+  quite some time. It can be used to launch the Notmuch Emacs
+  interface from the command line in many different ways. Starting
+  with this release, it will be installed with the Emacs
+  interface. With the new external subcommand support, the script
+  transparently becomes a new notmuch command. See the
+  `notmuch-emacs-mua(1)` man page for details.
+
+Notmuch Emacs desktop integration
+
+  The desktop integration file will now be installed with the Notmuch
+  Emacs interface, adding a Notmuch menu item and configuration to
+  allow the user to set up Notmuch Emacs as the `mailto:` URL handler.
+
+Library changes
+---------------
+
+`notmuch_query_count_messages` is now non-destructive
+
+  Internally the implementation of excludes has changed to make this
+  possible.
+
+Improved handling of DatabaseModifiedError
+
+  Previously uncaught exceptions reading message metadata are now
+  handled.
+
+Notmuch 0.23.7 (2017-02-28)
+===========================
+
+Test Suite
+----------
+
+Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
+
+  It turns out the hardcoded use of /run/user in gpg doesn't work out
+  that well in some environments. The more low tech fix is to move all
+  of $GNUPGHOME to somewhere where we can control the length of the
+  paths.
+
+Notmuch 0.23.6 (2017-02-27)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix read-after-free bug in `notmuch new`.
+
+Test Suite
+----------
+
+Use gpgconf --create-socketdir if available.
+
+  GnuPG has a facility to use sockets in /run or /var/run to avoid
+  problems with long socket paths, but this is not enabled by default
+  for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
+
+Notmuch 0.23.5 (2017-01-09)
+===========================
+
+Build system
+------------
+
+Fix quoting bug in configure. This had introduced a RUNPATH into the
+notmuch binary in cases where it was not not needed.
+
+Notmuch 0.23.4 (2016-12-24)
+===========================
+
+Command Line Interface
+----------------------
+
+Improve error handling in notmuch insert
+
+  Database lock errors no longer prevent message file delivery to the
+  filesystem.  Certain errors during `notmuch insert` most likely to
+  be temporary return EX_TEMPFAIL.
+
+Emacs
+-----
+
+Restore autoload cookie for notmuch-search.
+
+Notmuch 0.23.3 (2016-11-27)
+===========================
+
+Command Line Interface
+----------------------
+
+Treat disappearing files during notmuch new as non-fatal.
+
+Test Suite
+----------
+
+Fix incompatibility (related to signature size) with gnupg 2.1.16.
+
+Notmuch 0.23.2 (2016-11-20)
+===========================
+
+Emacs
+-----
+
+Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
+
+  notmuch-tree-mode and notmuch-message-mode buffers are now
+  considered interesting by `notmuch-interesting-buffer` and
+  `notmuch-cycle-notmuch-buffers`.
+
+Restore compatibility with Emacs 23.
+
+  Notmuch support for Emacs 23 is now deprecated.
+
+Notmuch 0.23.1 (2016-10-23)
+===========================
+
+General
+-------
+
+Require Xapian >= 1.2.6
+
+  The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
+
+Emacs
+-----
+
+Fix default colours for unread and flagged messages
+
+  In 0.23 the default colours for unread and flagged messages in
+  search view were accidentally swapped. This release returns them to
+  the original colours.
+
+  A related change in 0.23 broke the customize widget for
+  notmuch-search-line-faces. This is now fixed.
+
+Fix test failure with Emacs 25.1
+
+  A previously undiscovered jit-lock related bug was exposed by Emacs
+  25, causing a notmuch-show mode test to fail. This release fixes the
+  bug, and hence the test.
+
+Notmuch 0.23 (2016-10-03)
+=========================
+
+General (Xapian 1.4+)
+---------------------
+
+Compiling against Xapian 1.4 enables several new features.
+
+Support for single argument date: queries
+
+  `date:<expr>` is equivalent to `date:<expr>..<expr>`.
+
+Support for blocking opens
+
+  When opening a database notmuch by default will wait for another
+  process to release a write lock, rather than returning an error.
+
+Support for named queries
+
+  Named queries (also known as 'saved searches') can be defined with a
+  `query:name` format. The expansion of these queries is stored in the
+  database and they can be used from any notmuch client.
+
+Library
+-------
+
+Message property API
+
+  libnotmuch now supports the attachment of arbitrary key-value pairs
+  to messages. These can be used by various tools to manage their
+  private data without polluting the user tag space. They also support
+  iteration of values with the same key or same key prefix.
+
+Bug fix for `notmuch_directory_set_mtime`
+
+  Update cached mtime to match on-disk mtime.
+
+CLI
+---
+
+Support for compile time options
+
+  A group of `built_with` keys is now supported for notmuch
+  config. Initial keys in this group are `compact`, `field_processor`,
+  and `retry_lock`.
+
+Dump/Restore support for configuration information and properties
+
+  Any configuration information stored in the database (initially just
+  named queries) is dumped and restored. Similarly any properties
+  attached to messages are also dumped and restored. Any new
+  information in the dump format is prefixed by '#' to allow existing
+  scripts to ignore it.
+
+Emacs
+-----
+
+Make notmuch-message-mode use insert for fcc
+
+  Notmuch-message-mode now defaults to using notmuch insert for
+  fcc. The old file based fcc behaviour can be restored by setting the
+  defcustom `notmuch-maildir-use-notmuch-insert` to nil.
+
+  When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
+  of the mailstore (absolute paths are not permitted) followed by any
+  tag changes to be applied to the inserted message. The tag changes
+  are applied after the default tagging for new messages. For example
+  setting the header to "sentmail -inbox +sent" would insert the
+  message in the subdirectory sentmail of the mailstore, add the tag
+  "sent", and not add the (normally added) "inbox" tag.
+
+  Finally, if the insert fails (e.g. if the database is locked) the
+  user is presented with the option to retry, ignore, or edit the
+  header.
+
+Make internal address completion customizable
+
+  There is a new defcustom `notmuch-address-internal-completion` which
+  controls how the internal completion works: it allows the user to
+  choose whether to match on messages the user sent, or the user
+  received, and to filter the messages used for the match, for example
+  by date.
+
+Allow internal address completion on an individual basis
+
+  There is a new function `notmuch-address-toggle-internal-completion`
+  (by default it has no keybinding) which allows users who normally
+  use an external completion command to use the builtin internal
+  completion for the current buffer.
+
+  Alternatively, if the user has company-mode enabled, then the user
+  can use company mode commands such as `company-complete` to
+  activate the builtin completion for an individual completion.
+
+Resend messages
+
+  The function `notmuch-show-resend-message` (bound to `b` in show
+  and tree modes) will (attempt to) send current message to new
+  recipients. The headers of the message won't be altered (e.g. `To:`
+  may point to yourself). New `Resent-To:`, `Resent-From:` and so on
+  will be added instead.
+
+Face customization is easier
+
+  New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
+  `notmuch-tag-deleted`, `notmuch-tag-added`,
+  `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
+  now used by default. Customize `notmuch-faces` to modify them.
+
+Omit User-Agent header by default when sending mail
+
+Ruby Bindings
+-------------
+
+Add support for `notmuch_database_get_all_tags`
+
+Go Bindings
+-----------
+
+Go bindings moved to contrib
+
+Add support for `notmuch_threads_t` and `notmuch_thread_t`
+
+Fixed constant values so they are not all zero anymore
+
+  Previously, it was impossible to open writable database handles,
+  because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
+  both set to zero.
+  The same issue occurred with sort modes.
+
+Notmuch 0.22.2 (2016-09-08)
+===========================
+
+Test Suite
+----------
+
+Silence gdb more
+
+  Have gdb write to a log file instead of stdout, hiding some more
+  (harmless) stderr chatter which causes test failures.
+
+Hardcode fingerprint in PGP/MIME tests
+
+  Make the tests more robust against changing GnuPG output formats.
+
+Notmuch 0.22.1 (2016-07-19)
+===========================
+
+Library
+-------
+
+Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
+
+Document the (lack of) operations permitted on a closed database.
+
+Test Suite
+----------
+
+Fix race condition in dump / restore tests.
+
+Notmuch-Mutt
+------------
+
+Use `env` to locate perl.
+
+Emacs
+-----
+
+Tell `message-mode` mode that outgoing messages are mail
+
+  This makes message-mode configuration behave more predictably.
+
+Respect charset of MIME parts when reading them
+
+  Fix previous assumption that everyone uses UTF-8.
+
+Notmuch 0.22 (2016-04-26)
+=========================
+
+General
+-------
+
+Xapian 1.3 support
+
+  Notmuch should now build (and the test suite should pass) on recent
+  releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
+
+Limited support for S/MIME messages
+
+  Signature verification is supported, but not decryption. S/MIME
+  signature creation and S/MIME encryption are supported via built-in
+  support in Emacs. S/MIME support is not extensively tested at this
+  time.
+
+Bug Fixes
+
+   Fix for threading bug involving deleting and re-adding
+   messages. Fix for case-sensitive content disposition headers. Fix
+   handling of 1 character directory names at top level.
+
+Command Line Interface
+----------------------
+
+`notmuch show` now supports verifying S/MIME signatures
+
+  This support relies on an appropriately configured `gpgsm`.
+
+Build System
+------------
+
+Drop dependency on "pkg-config emacs".
+
+Emacs Interface
+---------------
+
+Notmuch replies now include all parts shown in the show view
+
+  There are two main user visible changes. The first is that rfc822
+  parts are now included in replies.
+
+  The second change is that part headers are now included in the reply
+  buffer to provide visible separation of the parts. The choice of
+  which part headers to show is customizable via the variable
+  `notmuch-mua-reply-insert-header-p-function`.
+
+Filtering or Limiting messages is now bound to `l` in the search view
+
+  This binding now matches the analogous binding in show view.
+
+`F` forwards all open messages in a thread
+
+  When viewing a thread of messages, the new binding `F` can be used
+  to generate a new outgoing message which forwards all of the open
+  messages in the thread. This is analogous to the `f` binding, which
+  forwards only the current message.
+
+Preferred content type can be determined from the message content
+
+  More flexibility in choosing which sub-part of a
+  multipart/alternative part is initially shown is available by
+  setting `notmuch-multipart/alternative-discouraged` to a function
+  that returns a list of discouraged types. The function so specified
+  is passed the message as an argument and can examine the message
+  content to determine which content types should be discouraged. This
+  is in addition to the current capabilities (i.e. setting
+  `notmuch-multipart/alternative-discouraged` to a list of discouraged
+  types).
+
+When viewing a thread ("show" mode), queries that match no messages no
+longer generate empty buffers
+
+  Should an attempt be made to view the thread corresponding to a
+  query that matches no messages, a warning message is now displayed
+  and the terminal bell rung rather than displaying an empty buffer
+  (or, in some cases, displaying an empty buffer and throwing an
+  error). This also affects re-display of the current thread.
+
+Handle S/MIME signatures in emacs
+
+  The emacs interface is now capable making and verifying S/MIME
+  signatures.
+
+`notmuch-message-address-insinuate` is now a no-op
+
+  This reduces the amount of interference with non-notmuch uses of
+  message-mode.
+
+Address completion improvements
+
+  An external script is no longer needed for address completion; if
+  you previously configured one, customize the variable
+  `notmuch-address-command` to try the internal completion. If
+  `company-mode` is available, notmuch uses it by default for
+  interactive address completion.
+
+Test and experiment with the emacs MUA available in source tree
+
+  `./devel/try-emacs-mua` runs emacs and fills the window with
+  information how to try the MUA safely. Emacs is configured to use
+  the notmuch (lisp) files located in `./emacs` directory.
+
+Documentation
+-------------
+
+New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
+describe `notmuch-report` and its JSON configuration file.  You can
+build these files by running `make` in the `devel/nmbug/doc`
+directory.
+
+notmuch-report
+--------------
+
+Renamed from `nmbug-status`.  This script generates reports based on
+notmuch queries, and doesn't really have anything to do with nmbug,
+except for sharing the `NMBGIT` environment variable.  The new name
+focuses on the script's action, instead of its historical association
+with the nmbug workflow.  This should make it more discoverable for
+users looking for generic notmuch reporting tools.
+
+The default configuration file name (extracted from the `config`
+branch of `NBMGIT` has changed from `status-config.json` to
+`notmuch-report.json` so it is more obviously associated with the
+report-generating script.  The configuration file also has a new
+`meta.message-url` setting, which is documented in
+`notmuch-report.json(5)`.
+
+`notmuch-report` now wraps query phrases in parentheses when and-ing
+them together, to avoid confusion about clause grouping.
+
+Notmuch 0.21 (2015-10-29)
+=========================
+
+General
+-------
+
+Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
+supported.
+
+Database revision tracking: `lastmod:` queries
+
+  Each message now has a metadata revision number that increases with
+  every tagging operation. See the discussion of `lastmod:` in
+  `notmuch-search-terms(7)` for more information.
+
+Date queries now support `date:<expr>..!` shorthand for
+`date:<expr>..<expr>`
+
+  You can use, for example, `date:yesterday..!` to match from the
+  beginning of yesterday to the end of yesterday. For further details,
+  please refer to the `notmuch-search-terms` manual page.
+
+Notmuch database upgrade to support `lastmod:` queries
+
+  The above mentioned `lastmod:` prefix. This will be done
+  automatically, without prompting on the next time `notmuch new` is
+  run after the upgrade. The upgrade is not reversible, and the
+  upgraded database will not be readable by older versions of
+  Notmuch. As a safeguard, a database dump will be created in the
+  `.notmuch` directory before upgrading.
+
+Build System
+------------
+
+The ruby bindings are now built as part of the main notmuch build
+process. This can be disabled with the `--without-ruby` option to
+configure.
+
+Building the documentation can be disabled with the `--without-docs`
+option to configure.
+
+Skipped individual tests are no longer considered as failures.
+
+Command Line Interface
+----------------------
+
+Database revision tracking
+
+  Two new options were added to support revision tracking. A global
+  option "--uuid" (`notmuch(1)`) was added for to detect counter
+  rollover and reinitialization, and `notmuch-count(1)` gained a
+  `--lastmod` option to query database revision tracking data.
+
+The `notmuch address` command supports new deduplication schemes
+
+  `notmuch address` has gained a new `--deduplicate` option to specify
+  how the results should be deduplicated, if at all. The alternatives
+  are `no` (do not deduplicate, useful for processing the results with
+  external tools), `mailbox` (deduplicate based on the full, case
+  sensitive name and email address), and `address` (deduplicate based
+  on the case insensitive address part). See the `notmuch-address`
+  manual page for further information.
+
+Emacs Interface
+---------------
+
+`notmuch-emacs-version` is used in `User-Agent` header
+
+  The value of recently introduced variable `notmuch-emacs-version` is
+  now used as a part of `User-Agent` header when sending emails.
+
+Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
+
+  With existing variable `notmuch-emacs-version` the accompanied
+  function which retrieves the version of `notmuch-command` is
+  better named as `notmuch-cli-version`.
+
+Query input now supports completion for "is:<tag>"
+
+New message composition mode: `notmuch-compose-mode`
+
+  This is mainly to fix fcc handling, but may be useful for user
+  customization as well.
+
+Allow filtering of search results in `notmuch-show`
+
+Add function to rerun current tree-view search in search mode
+
+Bug fix for replying to encrypted messages in `notmuch-tree` mode
+
+Allow saved searched to specify tree view rather than search view
+
+  Applies to saved searches run from `notmuch-hello`, or by a keyboard
+  shortcut (`notmuch-jump`).  Can be set in the customize interface, or
+  by adding :search-type tree to the appropriate saved search plist in
+  `notmuch-saved-searches`.
+
+Increase maximum size of rendered text parts
+
+  The variable `notmuch-show-max-text-part-size` controls the maximum
+  size (in bytes) which is automatically rendered. This may make
+  rendering large threads slower. To get the previous behaviour set
+  this variable to 10000.
+
+Library
+-------
+
+The use of absolute paths is now enforced when calling
+`notmuch_database_{open, create}`
+
+New function `notmuch_directory_delete` to delete directory documents
+
+  Previously there was no way to delete directory documents from the
+  database, leading to confusing results when the "ghost" directory
+  document of a renamed or deleted filesystem directory was
+  encountered every time the parent directory was being scanned by
+  `notmuch new`. The mtime of the old directory document was also used
+  if a directory by the same name was added again in the filesystem,
+  potentially bypassing the scan for the directory. The issues are
+  fixed by providing a library call to delete directory documents, and
+  deleting the old documents in `notmuch new` on filesystem directory
+  removal or rename.
+
+Database revision tracking
+
+  Revision tracking is supported via a new prefix "lastmod:" in the
+  query parser and the new function
+  `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
+
+New status code returning API for n_query_count_{messages,threads}
+
+Deprecated functions
+
+  `notmuch_query_search_threads`, `notmuch_query_search_messages`,
+  `notmuch_query_count_messages`, and `notmuch_query_count_threads`
+  are all deprecated as of this release.  Clients are encouraged to
+  transition to the `_st` variants supporting better error reporting.
+
+nmbug-status
+------------
+
+`nmbug-status` now supports specifying the sort order for each view.
+
+Notmuch 0.20.2 (2015-06-27)
+===========================
+
+Emacs Interface
+---------------
+
+Bug fix for marking messages read in `notmuch-tree` mode.
+
+Notmuch 0.20.1 (2015-06-01)
+===========================
+
+Test Suite
+----------
+
+Work around apparent gdb bug on arm64.
+
+Notmuch 0.20 (2015-05-31)
+=========================
+
+Command-Line Interface
+----------------------
+
+There is a new `mimetype:` search prefix
+
+  The new `mimetype:` search prefix allows searching for the
+  content-type of attachments, which is now indexed. See the
+  `notmuch-search-terms` manual page for details.
+
+Path to gpg is now configurable
+
+  On systems with multiple versions of gpg, you can tell
+  notmuch which one to use by setting `crypto.gpg_path`
+
+Emacs
+-----
+
+Avoid rendering large text attachments.
+
+Improved rendering of CID references in HTML.
+
+Vim
+---
+
+Vim client now respects excluded tags.
+
+Notmuch-Mutt
+------------
+
+Support messages without Message-IDs.
+
+Library
+-------
+
+Undeprecate single message mboxes
+
+  It seems more trouble to remove this feature than expected, so
+  `notmuch new` will no longer nag about mboxes with a single message.
+
+New error logging facility
+
+  Clients should call `notmuch_database_status_string` to retrieve
+  output formerly printed to stderr.
+
+Several bug fixes related to stale iterators
+
+New status code returning API for n_query_search_{messages,thread}
+
+Fix for library `install_name` on Mac OS X
+
+Fix for rounding of seconds
+
+Documentation
+-------------
+
+Sphinx is now mandatory to build docs
+
+  Support for using rst2man in place of sphinx to build the
+  documentation has been removed.
+
+Improved notmuch-search-terms.7
+
+  The man page `notmuch-search-terms(7)` has been extended, merging
+  some material from the relicensed wiki.
+
+Contrib
+-------
+
+`notmuch-deliver` is removed. As far as we know, all functionality
+previously provided by `notmuch-deliver` should now be provided by
+`notmuch insert`, provided by the main notmuch binary.
+
+nmbug-status
+------------
+
+`nmbug-status` now only matches local branches when reading
+`status-config.json` from the `config` branch of the `NMBGIT`
+repository.  To help new users running `nmbug-status`, `nmbug clone`
+now creates a local `config` branch tracking `origin/config`.  Folks
+who use `nmbug-status` with an in-Git config (i.e. you don't use the
+`--config` option) who already have `NMBGIT` set up are encouraged to
+run:
+
+    git checkout config origin/config
+
+in their `NMBGIT` repository (usually `~/.nmbug`).
+
+Notmuch 0.19 (2014-11-14)
+=========================
+
+Overview
+--------
+
+This release improves the reliability of `notmuch dump` and the error
+handling for `notmuch insert`. The new `notmuch address` command is
+intended to make searching for email addresses more convenient. At the
+library level the revised handling of missing messages fixes at least
+one bug in threading. The release also includes several interface
+improvements to the emacs interface, most notably the ability to bind
+keyboard shortcuts to saved searches.
+
+Command-Line Interface
+----------------------
+
+Stopped `notmuch dump` failing if someone writes to the database
+
+  The dump command now takes the write lock when running. This
+  prevents other processes from writing to the database during the
+  dump which would cause the dump to fail. Note, if another notmuch
+  process already has the write lock the dump will not start, so
+  script callers should still check the return value.
+
+`notmuch insert` requires successful message indexing for success status
+
+  Previously the `notmuch insert` subcommand indicated success even if
+  the message indexing failed, as long as the message was delivered to
+  file system. This could have lead to delivered messages missing
+  tags, etc. `notmuch insert` is now more strict, also requiring
+  successful indexing for success status. Use the new `--keep` option
+  to revert to the old behaviour (keeping the delivered message file
+  and returning success even if indexing fails).
+
+`notmuch insert` has gained support for `post-insert` hook
+
+  The new `post-insert` hook is run after message delivery, similar to
+  `post-new`. There's also a new option `notmuch insert --no-hooks` to
+  skip the hook. See the notmuch-hooks(1) man page for details.
+
+`notmuch deliver` is deprecated
+
+  With this release we believe that `notmuch insert` has reached
+  parity with `notmuch deliver`. We recommend that all users of
+  `notmuch deliver` switch to `notmuch insert` as the former is
+  currently unmaintained.
+
+`notmuch search` now supports `--duplicate=N` option with `--output=messages`
+
+  Complementing the `notmuch search --duplicate=N --output=files`
+  options, the new `--duplicate=N --output=messages` combination
+  limits output of message IDs to messages matching search terms that
+  have at least `N` files associated with them.
+
+Added `notmuch address` subcommand
+
+  This new subcommand searches for messages matching the given search
+  terms, and prints the addresses from them. Duplicate addresses are
+  filtered out. The `--output` option controls which of the following
+  information is printed: sender addresses, recipient addresses and
+  count of duplicate addresses.
+
+Emacs Interface
+---------------
+
+Use the `j` key to access saved searches from anywhere in notmuch
+
+  `j` is now globally bound to `notmuch-jump`, which provides fast,
+  interactive keyboard shortcuts to saved searches.  For example,
+  with the default saved searches `j i` from anywhere in notmuch will
+  bring up the inbox.
+
+Improved handling of the unread tag
+
+  Notmuch now marks an open message read (i.e., removes the unread
+  tag) if point enters the message at any time in a show buffer
+  regardless of how point got there (mouse click, cursor command, page
+  up/down, notmuch commands such as n,N etc). This fixes various
+  anomalies or bugs in the previous handling. Additionally it is
+  possible to customize the mark read handling by setting
+  `notmuch-show-mark-read-function` to a custom function.
+
+Expanded default saved search settings
+
+  The default saved searches now include several more common searches,
+  as well as shortcut keys for `notmuch-jump`.
+
+Improved `q` binding in notmuch buffers
+
+  `q` will now bury rather than kill a notmuch search, show or tree
+  buffer if there are multiple windows showing the buffer. If only a
+  single window is showing the buffer, it is killed.
+
+`notmuch-show-stash-mlarchive-link-alist` now supports functions
+
+  Some list archives may use a more complicated scheme for referring
+  to messages than just concatenated URL and message ID. For example,
+  patchwork requires a query to translate message ID to a patchwork
+  patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
+  functions to better cover such cases. See the help documentation for
+  the variable for details.
+
+Library changes
+---------------
+
+Introduced database version 3 with support for "database features."
+
+  Features are independent aspects of the database schema.
+  Representing these independently of the database version number will
+  let us evolve the database format faster and more incrementally,
+  while maintaining better forwards and backwards compatibility.
+
+Library users are no longer required to call `notmuch_database_upgrade`
+
+  Previously, library users were required to call
+  `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
+  before using a writable database.  Even the CLI didn't get this
+  right, and it is no longer required.  Now, individual APIs may
+  return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
+  too out of date for that API.
+
+Library users can now abort an atomic section by closing the database
+
+  Previously there was no supported way to abort an atomic section.
+  Callers can now simply close the database, and any outstanding
+  atomic section will be aborted.
+
+Add return status to `notmuch_database_close` and
+`notmuch_database_destroy`
+
+Bug fixes and performance improvements for thread linking
+
+  The database now represents missing-but-referenced messages ("ghost
+  messages") similarly to how it represents regular messages.  This
+  enables an improved thread linking algorithm that performs better
+  and fixes a bug that sometimes prevented notmuch from linking
+  messages into the same thread.
+
+nmbug
+-----
+
+The Perl script has been translated to Python; you'll need Python 2.7
+or anything from the 3.x line.  Most of the user-facing interface is
+the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
+commands have slightly different interfaces: `archive`, `commit`,
+`fetch`, `log`, `pull`, `push`, and `status`.  For details on the
+new interface for a given command, run `nmbug COMMAND --help`.
+
+nmbug-status
+------------
+
+`nmbug-status` can now optionally load header and footer templates
+from the config file.  Use something like:
+
+    {
+      "meta": {
+        "header": "<!DOCTYPE html>\n<html lang="en">\n...",
+        "footer": "</body></html>",
+         ...
+      },
+      ...
+    }
+
+Python Bindings
+---------------
+
+Add support for `notmuch_query_add_tag_exclude`
+
+Build System
+------------
+
+The notmuch binaries and libraries are now build with debugging symbols
+by default.  Users concerned with disk space should change the
+defaults when configuring or use the strip(1) command.
+
+Notmuch 0.18.2 (2014-10-25)
+===========================
+
+Test Suite
+----------
+
+Translate T380-atomicity to use gdb/python
+
+  The new version is compatible with gdb 7.8
+
+Emacs 24.4 related bug fixes
+
+  The Messages buffer became read-only, and the generated mime
+  structure for signatures changed slightly.
+
+Simplify T360-symbol-hiding
+
+   Replace the use of `objdump` on the object files with `nm` on the
+   resulting lib.
+
+Notmuch 0.18.1 (2014-06-25)
+===========================
+
+This is a bug fix and portability release.
+
+Build System
+------------
+
+Add a workaround for systems without zlib.pc
+
+Make emacs install robust against the non-existence of emacs
+
+Put notmuch lib directory first in RPATH
+
+Fix handling of `html_static_path` in sphinx
+
+  Both the python bindings and the main docs had spurious settings of
+  this variable.
+
+Test Suite
+----------
+
+Use --quick when starting emacs
+
+  This avoids a hang in the T160-json tests.
+
+Allow pending break points in atomicity script
+
+  This allows the atomicity tests to run on several more architectures/OSes.
+
+Command-Line Interface
+----------------------
+
+To improve portability use fsync instead of fdatasync in
+`notmuch-dump`. There should be no functional difference.
+
+Library changes
+---------------
+
+Resurrect support for single-message mbox files
+
+  The removal introduced a bug with previously indexed single-message
+  mboxes.  This support remains deprecated.
+
+Fix for phrase indexing
+
+  There were several bugs where words intermingled from different
+  headers and MIME parts could match a single phrase query.  This fix
+  will affect only newly indexed messages.
+
+Emacs Interface
+---------------
+
+Make sure tagging on an empty query is harmless
+
+  Previously tagging an empty query could lead to tags being
+  unintentionally removed.
+
+Notmuch 0.18 (2014-05-06)
+=========================
+
+Overview
+--------
+
+This new release includes some enhancements to searching for messages
+by filesystem location (`folder:` and `path:` prefixes under *General*
+below).  Saved searches in *Emacs* have also been enhanced to allow
+distinct search orders for each one.  Another enhancement to the
+*Emacs* interface is that replies to encrypted messages are now
+encrypted, reducing the risk of unintentional information disclosure.
+The default dump output format has changed to the more robust
+`batch-tag` format. The previously deprecated parsing of single
+message mboxes has been removed. For detailed release notes, see
+below.
+
+General
+-------
+
+The `folder:` search prefix now requires an exact match
+
+  The `folder:` prefix has been changed to search for email messages
+  by the exact, case sensitive maildir or MH folder name. Wildcard
+  matching (`folder:foo*`) is no longer supported. The new behaviour
+  allows for more accurate mail folder based searches, makes it
+  possible to search for messages in the top-level folder, and should
+  lead to less surprising results than the old behaviour. Users are
+  advised to see the `notmuch-search-terms` manual page for details,
+  and review how the change affects their existing `folder:` searches.
+
+There is a new `path:` search prefix
+
+  The new `path:` search prefix complements the `folder:` prefix. The
+  `path:` prefix searches for email messages that are in particular
+  directories within the mail store, optionally recursively using a
+  special syntax. See the `notmuch-search-terms` manual page for
+  details.
+
+Notmuch database upgrade due to `folder:` and `path:` changes
+
+  The above mentioned changes to the `folder:` prefix and the addition
+  of `path:` prefix require a Notmuch database upgrade. This will be
+  done automatically, without prompting on the next time `notmuch new`
+  is run after the upgrade. The upgrade is not reversible, and the
+  upgraded database will not be readable by older versions of
+  Notmuch. As a safeguard, a database dump will be created in the
+  `.notmuch` directory before upgrading.
+
+Library changes
+---------------
+
+Notmuch database upgrade
+
+  The libnotmuch consumers are reminded to handle database upgrades
+  properly, either by relying on running `notmuch new`, or checking
+  `notmuch_database_needs_upgrade()` and calling
+  `notmuch_database_upgrade()` as necessary. This has always been the
+  case, but in practise there have been no database upgrades in any
+  released version of Notmuch before now.
+
+Support for indexing mbox files has been dropped
+
+  There has never been proper support for mbox files containing
+  multiple messages, and the support for single-message mbox files has
+  been deprecated since Notmuch 0.15. The support has now been
+  dropped, and all mbox files will be rejected during indexing.
+
+Message header parsing changes
+
+  Notmuch previously had an internal parser for message headers. The
+  parser has now been dropped in favour of letting GMime parse both
+  the headers and the message MIME structure at the same pass. This is
+  mostly an internal change, but the GMime parser is stricter in its
+  interpretation of the headers. This may result in messages with
+  slightly malformed message headers being now rejected.
+
+Command-Line Interface
+----------------------
+
+`notmuch dump` now defaults to `batch-tag` format
+
+  The old format is still available with `--format=sup`.
+
+`notmuch new` has a --quiet option
+
+  This option suppresses the progress and summary reports.
+
+`notmuch insert` respects maildir.synchronize_flags config option
+
+  Do not synchronize tags to maildir flags in `notmuch insert` if the
+  user does not want it.
+
+The commands set consistent exit status codes on failures
+
+  The cli commands now consistently set exit status of 1 on failures,
+  except where explicitly otherwise noted. The notable exceptions are
+  the status codes for format version mismatches for commands that
+  support formatted output.
+
+Bug fix for checking configured new.tags for invalid tags
+
+  `notmuch new` and `notmuch insert` now check the user configured
+  new.tags for invalid tags, and refuse to apply them, similar to
+  `notmuch tag`. Invalid tags are currently the empty string and tags
+  starting with `-`.
+
+Emacs Interface
+---------------
+
+Init file
+
+  If the file pointed by new variable `notmuch-init-file` (typically
+  `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
+  `notmuch.el`. Users can put their personal notmuch emacs lisp based
+  configuration/customization items there instead of filling
+  `~/.emacs` with these.
+
+Changed format for saved searches
+
+  The format for `notmuch-saved-searches` has changed, but old style
+  saved searches are still supported. The new style means that a saved
+  search can store the desired sort order for the search, and it can
+  store a separate query to use for generating the count notmuch
+  shows.
+
+  The variable is fully customizable and any configuration done
+  through customize should *just work*, with the additional options
+  mentioned above. For manual customization see the documentation for
+  `notmuch-saved-searches`.
+
+  IMPORTANT: a new style notmuch-saved-searches variable will break
+  previous versions of notmuch-emacs (even search will not work); to
+  fix remove the customization for notmuch-saved-searches.
+
+  If you have a custom saved search sort function (not unsorted or
+  alphabetical) then the sort function will need to be
+  modified. Replacing (car saved-search) by (notmuch-saved-search-get
+  saved-search :name) and (cdr saved-search) by
+  (notmuch-saved-search-get saved-search :query) should be sufficient.
+
+The keys of `notmuch-tag-formats` are now regexps
+
+  Previously, the keys were literal strings.  Customized settings of
+  `notmuch-tag-formats` will continue to work as before unless tags
+  contain regexp special characters like `.` or `*`.
+
+Changed tags are now shown in the buffer
+
+  Previously tag changes made in a buffer were shown immediately. In
+  some cases (particularly automatic tag changes like marking read)
+  this made it hard to see what had happened (e.g., whether the
+  message had been unread).
+
+  The changes are now shown explicitly in the buffer: by default
+  deleted tags are displayed with red strike-through and added tags
+  are displayed underlined in green (inverse video is used for deleted
+  tags if the terminal does not support strike-through).
+
+  The variables `notmuch-tag-deleted-formats` and
+  `notmuch-tag-added-formats`, which have the same syntax as
+  `notmuch-tag-formats`, allow this to be customized.
+
+  Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
+  `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
+  behavior of hiding deleted tags and showing added tags identically
+  to tags already present.
+
+Version variable
+
+  The new, build-time generated variable `notmuch-emacs-version` is used
+  to distinguish between notmuch cli and notmuch emacs versions.
+  The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
+  window) prints both notmuch cli and notmuch emacs versions in case
+  these differ from each other.
+  This is especially useful when using notmuch remotely.
+
+Ido-completing-read initialization in Emacs 23
+
+  `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
+  it is initialized. Defadvice-based *Ido* initialization is defined
+  for these Emacs versions.
+
+Bug fix for saved searches with newlines in them
+
+  Split lines confuse `notmuch count --batch`, so we remove embedded
+  newlines before calling notmuch count.
+
+Bug fixes for sender identities
+
+  Previously, Emacs would rewrite some sender identities in unexpected
+  and undesirable ways.  Now it will use identities exactly as
+  configured in `notmuch-identities`.
+
+Replies to encrypted messages will be encrypted by default
+
+  In the interest of maintaining confidentiality of communications,
+  the Notmuch Emacs interface now automatically adds the mml tag to
+  encrypt replies to encrypted messages. This should make it less
+  likely to accidentally reply to encrypted messages in plain text.
+
+Reply pushes mark before signature
+
+  We push mark and set point on reply so that the user can easily cut
+  the quoted text. The mark is now pushed before the signature, if
+  any, instead of end of buffer so the signature is preserved.
+
+Message piping uses the originating buffer's working directory
+
+  `notmuch-show-pipe-message` now uses the originating buffer's
+  current default directory instead of that of the `*notmuch-pipe*`
+  buffer's.
+
+nmbug
+-----
+
+nmbug adds a `clone` command for setting up the initial repository and
+uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
+
+  The `@{upstream}` change reduces ambiguity when fetching multiple
+  branches, but requires existing users update their `NMBGIT`
+  repository (usually `~/.nmbug`) to distinguish between local and
+  remote-tracking branches.  The easiest way to do this is:
+
+  1. If you have any purely local commits (i.e. they aren't in the
+     nmbug repository on nmbug.tethera.net), push them to a remote
+     repository.  We'll restore them from the backup in step 4.
+  2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
+  3. Use the new `clone` command to create a fresh clone:
+
+        nmbug clone https://nmbug.notmuchmail.org/git/nmbug-tags.git
+
+  4. If you had local commits in step 1, add a remote for that
+     repository and fetch them into the new repository.
+
+Notmuch 0.17 (2013-12-30)
+=========================
+
+Incompatible change in SHA1 computation
+---------------------------------------
+
+Previously on big endian architectures like sparc and powerpc the
+computation of SHA1 hashes was incorrect. This meant that messages
+with overlong or missing message-ids were given different computed
+message-ids than on more common little endian architectures like i386
+and amd64.  If you use notmuch on a big endian architecture, you are
+strongly advised to make a backup of your tags using `notmuch dump`
+before this upgrade. You can locate the affected files using something
+like:
+
+    notmuch dump | \
+      awk '/^notmuch-sha1-[0-9a-f]{40} / \
+        {system("notmuch search --exclude=false --output=files id:" $1)}'
+
+Command-Line Interface
+----------------------
+
+New options to better support handling duplicate messages
+
+  If more than one message file is associated with a message-id,
+  `notmuch search --output=files` will print all of them. A new
+  `--duplicate=N` option can be used to specify which duplicate to
+  print for each message.
+
+  `notmuch count` now supports `--output=files` option to output the
+  number of files associated with matching messages. This may be
+  bigger than the number of matching messages due to duplicates
+  (i.e. multiple files having the same message-id).
+
+Improved `notmuch new` performance for unchanged folders
+
+  `notmuch new` now skips over unchanged folders more efficiently,
+  which can substantially improve the performance of checking for new
+  mail in some situations (like NFS-mounted Maildirs).
+
+`notmuch reply --format=text` RFC 2047-encodes headers
+
+  Previously, this used a mix of standard MIME encoding for the reply
+  body and UTF-8 for the headers.  Now, the text format reply template
+  RFC 2047-encodes the headers, making the output a valid RFC 2822
+  message.  The JSON/sexp format is unchanged.
+
+`notmuch compact` command
+
+  The new `compact` command exposes Xapian's compaction
+  functionality through a more convenient interface than
+  `xapian-compact`. `notmuch compact` will compact the database to a
+  temporary location, optionally backup the original database, and
+  move the compacted database into place.
+
+Emacs Interface
+---------------
+
+`notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
+
+  `notmuch-tree` is a threaded message view for the emacs
+  interface. Each message is one line in the results and the thread
+  structure is shown using UTF-8 box drawing characters (similar to
+  Mutt's threaded view). It comes between search and show in terms of
+  amount of output and can be useful for viewing both single threads
+  and multiple threads.
+
+  Using `notmuch-tree`
+
+  The main key entries to notmuch tree are
+
+  'z' enter a query to view using notmuch tree (works in hello,
+      search, show and tree mode itself)
+
+  'Z' view the current query in tree notmuch tree (works from search
+      and show)
+
+  Once in tree mode, keybindings are mostly in line with the rest of
+  notmuch and are all viewable with '?' as usual.
+
+  Customising `notmuch-tree`
+
+  `notmuch-tree` has several customisation variables. The most
+  significant is the first notmuch-tree-show-out which determines the
+  behaviour when selecting a message (with RET) in tree view. By
+  default tree view uses a split window showing the single message in
+  the bottom pane. However, if this option is set then it views the
+  whole thread in the complete window jumping to the selected message
+  in the thread. In either case command-prefix selects the other option.
+
+Tagging threads in search is now race-free
+
+  Previously, adding or removing a tag from a thread in a search
+  buffer would affect messages that had arrived after the search was
+  performed, resulting in, for example, archiving messages that were
+  never seen.  Tagging now affects only the messages that were in the
+  thread when the search was performed.
+
+`notmuch-hello` refreshes when switching to the buffer
+
+  The hello buffer now refreshes whenever you switch to the buffer,
+  regardless of how you get there.  You can disable automatic
+  refreshing by customizing `notmuch-hello-auto-refresh`.
+
+Specific mini-buffer prompts for tagging operations
+
+  When entering tags to add or remove, the mini-buffer prompt now
+  indicates what operation will be performed (e.g., "Tag thread", "Tag
+  message", etc).
+
+Built-in help improvements
+
+  Documentation for many commands has been improved, as displayed by
+  `notmuch-help` (usually bound to "?").  The bindings listed by
+  `notmuch-help` also now include descriptions of prefixed commands.
+
+Quote replies as they are displayed in show view
+
+  We now render the parts for reply quoting the same way they are
+  rendered for show. At this time, the notable change is that replies
+  to text/calendar are now pretty instead of raw vcalendar.
+
+Fixed inconsistent use of configured search order
+
+  All ways of interactively invoking search now honor the value of
+  `notmuch-search-oldest-first`.
+
+Common keymap for notmuch-wide bindings
+
+  Several key bindings have been moved from mode-specific keymaps to
+  the single `notmuch-common-keymap`, which is inherited by each
+  notmuch mode.  If you've customized your key bindings, you may want
+  to move some of them to the common keymap.
+
+The `notmuch-tag` function now requires a list of tag changes
+
+  For users who have scripted the Emacs interface: the `notmuch-tag`
+  API has changed.  Previously, it accepted either a list of tag
+  changes or a space-separated string of tag changes.  The latter is
+  no longer supported and the function now returns nothing.
+
+Fixed `notmuch-reply` putting reply in primary selection
+
+  On emacs 24 notmuch-reply used to put the cited text into the
+  primary selection (which could lead to inadvertently pasting this
+  cited text elsewhere). Now the primary-selection is not changed.
+
+Fixed `notmuch-show` invisible part handling
+
+  In some obscure cases part buttons and invisibility had strange
+  interactions: in particular, the default action for some parts gave
+  the wrong action. This has been fixed.
+
+Fixed `notmuch-show` attachment viewers and stderr
+
+  In emacs 24.3+ viewing an attachment could cause spurious text to
+  appear in the show buffer (any stderr or stdout the viewer
+  produced). By default this output is now discarded. For debugging,
+  setting `notmuch-show-attachment-debug` causes notmuch to keep the
+  viewer's stderr and stdout in a separate buffer.
+
+Fixed `notmuch-mua-reply` point placement when signature involved
+
+  By restricting cursor movement to body section for cursor placement
+  after signature is inserted, the cursor cannot "leak" to header
+  section anymore. Now inserted citation content will definitely go to
+  the body part of the message.
+
+Vim Interface
+-------------
+
+  It is now possible to compose new messages in the Vim interface, as
+  opposed reply to existing messages.  There is also support for
+  going straight to a search (bypassing the folders view).
+
+Notmuch 0.16 (2013-08-03)
+=========================
+
+Command-Line Interface
+----------------------
+
+Support for delivering messages to Maildir
+
+  There is a new command `insert` that adds a message to a Maildir
+  folder and notmuch index.
+
+`notmuch count --batch` option
+
+  `notmuch count` now supports batch operations similar to `notmuch
+  tag`. This is mostly an optimization for remote notmuch usage.
+
+`notmuch tag` option to remove all tags from matching messages
+
+  `notmuch tag --remove-all` option has been added to remove all tags
+  from matching messages. This can be combined with adding new tags,
+  resulting in setting (rather than modifying) the tags of the
+  messages.
+
+Decrypting commands explicitly expect a gpg-agent
+
+  Decryption in `notmuch show` and `notmuch reply` has only ever
+  worked with a functioning gpg-agent. This is now made explicit in
+  code and documentation. The functional change is that it's now
+  possible to have gpg-agent running, but gpg "use-agent"
+  configuration option disabled, not forcing the user to use the agent
+  everywhere.
+
+Configuration file saves follow symbolic links
+
+  The notmuch commands that save the configuration file now follow
+  symbolic links instead of overwrite them.
+
+Top level option to specify configuration file
+
+  It's now possible to specify the configuration file to use on the
+  command line using the `notmuch --config=FILE` option.
+
+Bash command-line completion
+
+  The notmuch command-line completion support for the bash shell has
+  been rewritten. Supported completions include all the notmuch
+  commands, command-line arguments, values for keyword arguments,
+  search prefixes (such as "subject:" or "from:") in all commands that
+  use search terms, tags after + and - in `notmuch tag`, tags after
+  "tag:" prefix, user's email addresses after "from:" and "to:"
+  prefixes, and config options (and some config option values) in
+  `notmuch config`. The new completion support depends on the
+  bash-completion package.
+
+Deprecated commands "part" and "search-tags" are removed.
+
+Emacs Interface
+---------------
+
+New keymap to view/save parts; removed s/v/o/| part button bindings
+
+  The commands to view, save, and open MIME parts are now prefixed
+  with "." (". s" to save, ". v" to view, etc) and can be invoked with
+  point anywhere in a part, unlike the old commands, which were
+  restricted to part buttons.  The old "s"/"v"/"o"/"|" commands on
+  part buttons have been removed since they clashed with other
+  bindings (notably "s" for search!) and could not be invoked when
+  there was no part button.  The new, prefixed bindings appear in
+  show's help, so you no longer have to memorize them.
+
+Default part save directory is now `mm-default-directory`
+
+  Previously, notmuch offered to save parts and attachments to a mix
+  of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
+  This has been standardized on `mm-default-directory`.
+
+Key bindings for next/previous thread
+
+  Show view has new key bindings M-n and M-p to move to the next and
+  previous thread in the search results.
+
+Better handling of errors in search buffers
+
+  Instead of interleaving errors in search result buffers, search mode
+  now reports errors in the minibuffer.
+
+Faster search and show
+
+  Communication between Emacs and the notmuch CLI is now more
+  efficient because it uses the CLI's S-expression support.  As a
+  result, search mode should now fill search buffers faster and
+  threads should show faster.
+
+No Emacs 22 support
+
+  The Emacs 22 support added late 2010 was sufficient only for a short
+  period of time. After being incomplete for roughly 2 years the code
+  in question was now removed from this release.
+
+Vim Front-End
+-------------
+
+The vim based front-end has been replaced with a new one that uses the Ruby
+bindings. The old font-end is available in the contrib subfolder.
+
+Python Bindings
+---------------
+
+Fix loading of libnotmuch shared library on OS X (Darwin) systems.
+
+Notmuch 0.15.2 (2013-02-17)
+===========================
+
+Build fixes
+-----------
+
+Update dependencies to avoid problems when building in parallel.
+
+Internal test framework changes
+-------------------------------
+
+Adjust Emacs test watchdog mechanism to cope with `process-attributes`
+being unimplemented.
+
+Notmuch 0.15.1 (2013-01-24)
+===========================
+
+Internal test framework changes
+-------------------------------
+
+Set a default value for TERM when running tests. This fixes certain
+build failures in non-interactive environments.
+
+Notmuch 0.15 (2013-01-18)
+=========================
+
+General
+-------
+
+Date range search support
+
+  The `date:` prefix can now be used in queries to restrict the results
+  to only messages within a particular time range (based on the Date:
+  header) with a range syntax of `date:<since>..<until>`. Notmuch
+  supports a wide variety of expressions in `<since>` and
+  `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
+  for details.
+
+Empty tag names and tags beginning with "-" are deprecated
+
+  Such tags have been a frequent source of confusion and cause
+  (sometimes unresolvable) conflicts with other syntax.  notmuch tag
+  no longer allows such tags to be added to messages.  Removing such
+  tags continues to be supported to allow cleanup of existing tags,
+  but may be removed in a future release.
+
+Command-Line Interface
+----------------------
+
+`notmuch new` no longer chokes on mboxes
+
+  `notmuch new` now rejects mbox files containing more than one
+  message, rather than treating the file as one giant message.
+
+Support for single message mboxes is deprecated
+
+  For historical reasons, `notmuch new` will index mbox files
+  containing a single message; however, this behavior is now
+  officially deprecated.
+
+Fixed `notmuch new` to skip ignored broken symlinks
+
+  `notmuch new` now correctly skips symlinks if they are in the
+  ignored files list.  Previously, it would abort when encountering
+  broken symlink, even if it was ignored.
+
+New dump/restore format and tagging interface
+
+  There is a new `batch-tag` format for dump and restore that is more
+  robust, particularly with respect to tags and message-ids containing
+  whitespace.
+
+  `notmuch tag` now supports the ability to read tag operations and
+  queries from an input stream, in a format compatible with the new
+  dump/restore format.
+
+Bcc and Reply-To headers are now available in notmuch show json output
+
+  The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
+  For example notmuch Emacs client can now have these headers visible
+  when the headers are added to the `notmuch-message-headers` variable.
+
+CLI callers can now request a specific output format version
+
+  `notmuch` subcommands that support structured output now support a
+  `--format-version` argument for requesting a specific version of the
+  structured output, enabling better compatibility and error handling.
+
+`notmuch search` has gained a null character separated text output format
+
+  The new --format=text0 output format for `notmuch search` prints
+  output separated by null characters rather than newline
+  characters. This is similar to the find(1) -print0 option, and works
+  together with the xargs(1) -0 option.
+
+Emacs Interface
+---------------
+
+Removal of the deprecated `notmuch-folders` variable
+
+  `notmuch-folders` has been deprecated since the introduction of saved
+  searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
+  has now been removed. Any remaining users should migrate to
+  `notmuch-saved-searches`.
+
+Visibility of MIME parts can be toggled
+
+  Each part of a multi-part MIME email can now be shown or hidden
+  using the button at the top of each part (by pressing RET on it or
+  by clicking).  For emails with multiple alternative formats (e.g.,
+  plain text and HTML), only the preferred format is shown initially,
+  but other formats can be shown using their part buttons.  To control
+  the behavior of this, see
+  `notmuch-multipart/alternative-discouraged` and
+  `notmuch-show-all-multipart/alternative-parts`.
+
+  Note notmuch-show-print-message (bound to '#' by default) will print
+  all parts of multipart/alternative message regardless of whether
+  they are currently hidden or shown in the buffer.
+
+Emacs now buttonizes mid: links
+
+  mid: links are a standardized way to link to messages by message ID
+  (see RFC 2392).  Emacs now hyperlinks mid: links to the appropriate
+  notmuch search.
+
+Handle errors from bodypart insertions
+
+  If displaying the text of a message in show mode causes an error (in
+  the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
+  off thread display at the offending message.  The error is now
+  simply displayed in place of the message.
+
+Emacs now detects version mismatches with the notmuch CLI
+
+  Emacs now detects and reports when the Emacs interface version and
+  the notmuch CLI version are incompatible.
+
+Improved text/calendar content handling
+
+  Carriage returns in embedded text/calendar content caused insertion
+  of the calendar content fail. Now CRs are removed before calling icalendar
+  to extract icalendar data. In case icalendar extraction fails an error
+  is thrown for the bodypart insertion function to deal with.
+
+Disabled coding conversions when reading in `with-current-notmuch-show-message`
+
+  Depending on the user's locale, saving attachments containing 8-bit
+  data may have performed an unintentional encoding conversion,
+  corrupting the saved attachment.  This has been fixed by making
+  `with-current-notmuch-show-message` disable coding conversion.
+
+Fixed errors with HTML email containing images in Emacs 24
+
+  Emacs 24 ships with a new HTML renderer that produces better output,
+  but is slightly buggy.  We work around a bug that caused it to fail
+  for HTML email containing images.
+
+Fixed handling of tags with unusual characters in them
+
+  Emacs now handles tags containing spaces, quotes, and parenthesis.
+
+Fixed buttonization of id: links without quote characters
+
+  Emacs now correctly buttonizes id: links where the message ID is not
+  quoted.
+
+`notmuch-hello` refresh point placement improvements
+
+  Refreshing the `notmuch-hello` buffer does a better job of keeping
+  the point where it was.
+
+Automatic tag changes are now unified and customizable
+
+  All the automatic tag changes that the Emacs interface makes when
+  reading, archiving, or replying to messages, can now be
+  customized. Any number of tag additions and removals is supported
+  through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
+  `notmuch-message-replied-tags` customization variables.
+
+Support for stashing the thread id in show view
+
+  Invoking `notmuch-show-stash-message-id` with a prefix argument
+  stashes the (local and database specific) thread id of the current
+  thread instead of the message id.
+
+New add-on tool: notmuch-pick
+-----------------------------
+
+The new contrib/ tool `notmuch-pick` is an experimental threaded message
+view for the emacs interface. Each message is one line in the results
+and the thread structure is shown using UTF-8 box drawing characters
+(similar to Mutt's threaded view). It comes between search and show in
+terms of amount of output and can be useful for viewing both single
+threads and multiple threads. See the notmuch-pick README file for
+further details and installation.
+
+Portability
+-----------
+
+notmuch now builds on OpenBSD.
+
+Internal test framework changes
+-------------------------------
+
+The emacsclient binary is now user-configurable
+
+  The test framework now accepts `TEST_EMACSCLIENT` in addition to
+  `TEST_EMACS` for configuring the emacsclient to use.  This is
+  necessary to avoid using an old emacsclient with a new emacs, which
+  can result in buggy behavior.
+
+Notmuch 0.14 (2012-08-20)
+=========================
+
+General bug fixes
+-----------------
+
+Maildir tag synchronization
+
+  Maildir flag-to-tag synchronization now applies only to messages in
+  maildir-like directory structures.  Previously, it applied to any
+  message that had a maildir "info" part, which meant it could
+  incorrectly synchronize tags for non-maildir messages, while at the
+  same time failing to synchronize tags for newly received maildir
+  messages (typically causing new messages to not receive the "unread"
+  tag).
+
+Command-Line Interface
+----------------------
+
+  The deprecated positional output file argument to `notmuch dump` has
+  been replaced with an `--output` option. The input file positional
+  argument to `notmuch restore` has been replaced with an `--input`
+  option for consistency with dump.  These changes simplify the syntax
+  of dump/restore options and make them more consistent with other
+  notmuch commands.
+
+Emacs Interface
+---------------
+
+Search results now get re-colored when tags are updated
+
+The formatting of tags in search results can now be customized
+
+  Previously, attempting to change the format of tags in
+  `notmuch-search-result-format` would usually break tagging from
+  search-mode.  We no longer make assumptions about the format.
+
+Experimental support for multi-line search result formats
+
+  It is now possible to embed newlines in
+  `notmuch-search-result-format` to make individual search results
+  span multiple lines.
+
+Next/previous in search and show now move by boundaries
+
+  All "next" and "previous" commands in the search and show modes now
+  move to the next/previous result or message boundary.  This doesn't
+  change the behavior of "next", but "previous" commands will first
+  move to the beginning of the current result or message if point is
+  inside the result or message.
+
+Search now uses the JSON format internally
+
+  This should address problems with unusual characters in authors and
+  subject lines that could confuse the old text-based search parser.
+
+The date shown in search results is no longer padded before applying
+user-specified formatting
+
+  Previously, the date in the search results was padded to fixed width
+  before being formatted with `notmuch-search-result-format`.  It is
+  no longer padded.  The default format has been updated, but if
+  you've customized this variable, you may have to change your date
+  format from `"%s "` to `"%12s "`.
+
+The thread-id for the `target-thread` argument for `notmuch-search` should
+now be supplied without the "thread:" prefix.
+
+Notmuch 0.13.2 (2012-06-02)
+===========================
+
+Bug-fix release
+---------------
+
+Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
+compilation error for this contrib package.
+
+Notmuch 0.13.1 (2012-05-29)
+===========================
+
+Bug-fix release
+---------------
+
+Fix inserting of UTF-8 characters from *text/plain* parts in reply
+
+  While notmuch gained ability to insert content from other than *text/plain*
+  parts of email whenever *text/plain* parts are not available (notably
+  HTML-only emails), replying to mails that do have *text/plain* the
+  non-ASCII characters were incorrectly decoded. This is now fixed.
+
+`notmuch_database_get_directory` and
+`notmuch_database_find_message_by_filename` now work on read-only
+databases
+
+  Previously, these functions attempted to create directory documents
+  that didn't exist and would return an error or abort when given a
+  read-only database.  Now they no longer create directory documents
+  and simply return a `NULL` object if the directory does not exist,
+  as documented.
+
+Fix compilation of ruby bindings
+
+  Revert to dynamic linking, since the statically linked bindings did
+  not work well.
+
+Notmuch 0.13 (2012-05-15)
+=========================
+
+Command-Line Interface
+----------------------
+
+JSON reply format
+
+  `notmuch reply` can now produce JSON output that contains the headers
+  for a reply message and full information about the original message
+  begin replied to. This allows MUAs to create replies intelligently.
+  For example, an MUA that can parse HTML might quote HTML parts.
+
+  Calling notmuch reply with `--format=json` imposes the restriction that
+  only a single message is returned by the search, as replying to
+  multiple messages does not have a well-defined behavior. The default
+  retains its current behavior for multiple message replies.
+
+Tag exclusion
+
+  Tags can be automatically excluded from search results by adding them
+  to the new `search.exclude_tags` option in the Notmuch config file.
+
+  This behaviour can be overridden by explicitly including an excluded
+  tag in your query, for example:
+
+        notmuch search $your_query and tag:$excluded_tag
+
+  Existing users will probably want to run `notmuch setup` again to add
+  the new well-commented [search] section to the configuration file.
+
+  For new configurations, accepting the default setting will cause the
+  tags "deleted" and "spam" to be excluded, equivalent to running:
+
+        notmuch config set search.exclude_tags deleted spam
+
+Raw show format changes
+
+  The output of show `--format=raw` has changed for multipart and
+  message parts.  Previously, the output was a mash of somewhat-parsed
+  headers and transfer-decoded bodies.  Now, such parts are reproduced
+  faithfully from the original source.  Message parts (which includes
+  part 0) output the full message, including the message headers (but
+  not the transfer headers).  Multipart parts output the part as
+  encoded in the original message, including the part's headers.  Leaf
+  parts, as before, output the part's transfer-decoded body.
+
+Listing configuration items
+
+  The new `config list` command prints out all configuration items and
+  their values.
+
+Emacs Interface
+---------------
+
+Changes to tagging interface
+
+  The user-facing tagging functions in the Emacs interface have been
+  normalized across all notmuch modes.  The tagging functions are now
+  notmuch-search-tag in search-mode, and notmuch-show-tag in
+  show-mode.  They accept a string representing a single tag change,
+  or a list of tag changes.  See 'M-x describe-function notmuch-tag'
+  for more information.
+
+  NOTE: This breaks compatibility with old tagging functions, so user
+  may need to update in custom configurations.
+
+Reply improvement using the JSON format
+
+  Emacs now uses the JSON reply format to create replies. It obeys
+  the customization variables message-citation-line-format and
+  message-citation-line-function when creating the first line of the
+  reply body, and it will quote HTML parts if no text/plain parts are
+  available.
+
+New add-on tool: notmuch-mutt
+-----------------------------
+
+The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
+the Mutt mail user agent. Using it, Mutt users can perform mail
+search, thread reconstruction, and mail tagging/untagging without
+leaving Mutt.  notmuch-mutt, formerly distributed under the name
+`mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
+contrib/ from now on.
+
+Library changes
+---------------
+
+The API changes detailed below break binary and source compatibility,
+so libnotmuch has been bumped to version 3.0.0.
+
+The function `notmuch_database_close` has been split into
+`notmuch_database_close` and `notmuch_database_destroy`
+
+  This makes it possible for long running programs to close the xapian
+  database and thus release the lock associated with it without
+  destroying the data structures obtained from it.
+
+`notmuch_database_open`, `notmuch_database_create`, and
+`notmuch_database_get_directory` now return errors
+
+  The type signatures of these functions have changed so that the
+  functions now return a `notmuch_status_t` and take an out-argument for
+  returning the new database object or directory object.
+
+Go bindings changes
+-------------------
+
+Go 1 compatibility
+
+  The go bindings and the `notmuch-addrlookup` utility are now
+  compatible with go 1.
+
+Notmuch 0.12 (2012-03-20)
+=========================
+
+Command-Line Interface
+----------------------
+
+Reply to sender
+
+  `notmuch reply` has gained the ability to create a reply template
+  for replying just to the sender of the message, in addition to reply
+  to all. The feature is available through the new command line option
+  `--reply-to=(all|sender)`.
+
+Mail store folder/file ignore
+
+  A new configuration option, `new.ignore`, lets users specify a
+  ;-separated list of file and directory names that will not be
+  searched for messages by `notmuch new`.
+
+  NOTE: *Every* file/directory that goes by one of those names will
+  be ignored, independent of its depth/location in the mail store.
+
+Unified help and manual pages
+
+  The notmuch help command now runs man for the appropriate page.  If
+  you install notmuch somewhere "unusual", you may need to update
+  MANPATH.
+
+Manual page for notmuch configuration options
+
+  The notmuch CLI configuration file options are now documented in the
+  notmuch-config(1) manual page in addition to the configuration file
+  itself.
+
+Emacs Interface
+---------------
+
+Reply to sender
+
+  The Emacs interface has, with the new CLI support, gained the
+  ability to reply to sender in addition to reply to all. In both show
+  and search modes, 'r' has been bound to reply to sender, replacing
+  reply to all, which now has key binding 'R'.
+
+More flexible and consistent tagging operations
+
+  All tagging operations ('+', '-', '*') now accept multiple tags with
+  '+' or '-' prefix, like '*' operation in notmuch-search view before.
+
+  '*' operation (`notmuch-show-tag-all`) is now available in
+  notmuch-show view.
+
+  `notmuch-show-{add,remove}-tag` functions no longer accept tag
+  argument, `notmuch-show-tag-message` should be used instead.  Custom
+  bindings using these functions should be updated, e.g.:
+
+        (notmuch-show-remove-tag "unread")
+
+  should be changed to:
+
+        (notmuch-show-tag-message "-unread")
+
+Refreshing the show view ('=' by default) no longer opens or closes messages
+
+  To get the old behavior of putting messages back in their initial
+  opened/closed state, use a prefix argument, e.g., 'C-u ='.
+
+Attachment buttons can be used to view or save attachments.
+
+  When the cursor is on an attachment button the key 's' can be used
+  to save the attachment, the key 'v' to view the attachment in the
+  default mailcap application, and the key 'o' prompts the user for an
+  application to use to open the attachment. By default Enter or mouse
+  button 1 saves the attachment but this is customisable (option
+  Notmuch Show Part Button Default Action).
+
+New functions
+
+  `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
+  optionally visiting a URI to the current message at one of a number
+  of Mailing List Archives.
+
+Fix MML tag quoting in replies
+
+  The MML tag quoting fix of 0.11.1 unintentionally quoted tags
+  inserted in `message-setup-hook`. Quoting is now limited to the
+  cited message.
+
+Show view archiving key binding changes
+
+  The show view archiving key bindings 'a' and 'x' now remove the
+  "inbox" tag from the current message only (instead of thread), and
+  move to the next message. At the last message, 'a' proceeds to the
+  next thread in search results, and 'x' returns to search
+  results. The thread archiving functions are now available in 'A' and
+  'X'.
+
+Support text/calendar MIME type
+
+  The text/calendar MIME type is now supported in addition to
+  text/x-vcalendar.
+
+Generate inline patch fake attachment file names from message subject
+
+  Use the message subject to generate file names for the inline patch
+  fake attachments. The names are now similar to the ones generated by
+  'git format-patch' instead of just "inline patch". See "Notmuch Show
+  Insert Text/Plain Hook" in the notmuch customize interface.
+
+Enable `notmuch-search-line-faces` by default
+
+  Make the `notmuch-search-line-faces` functionality more discoverable
+  for new users by showing "unread" messages bold and "flagged"
+  messages blue by default in the search view.
+
+Printing Support
+
+  notmuch-show mode now has simple printing support, bound to '#' by
+  default. You can customize the variable notmuch-print-mechanism.
+
+Library changes
+---------------
+
+New functions
+
+  `notmuch_query_add_tag_exclude` supports the new tag exclusion
+  feature.
+
+Python bindings changes
+-----------------------
+
+Python 3.2 compatibility
+
+  The python bindings are now compatible with both python 2.5+ and 3.2.
+
+Added missing unicode conversions
+
+  Python strings have to be encoded to and decoded from utf-8 when
+  calling libnotmuch functions. Porting the bindings to python 3.2
+  revealed a few function calls that were missing these conversions.
+
+Build fixes
+-----------
+
+Compatibility with GMime 2.6
+
+  It is now possible to build notmuch against both GMime 2.4 and 2.6.
+  However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
+  report signatures where the signer key is unavailable (GNOME bug
+  668085).  For compatibility with GMime 2.4's tolerance of "From "
+  headers we require GMime 2.6 >= 2.6.7.
+
+Notmuch 0.11.1 (2012-02-03)
+===========================
+
+Bug-fix release
+---------------
+
+Fix error handling in python bindings
+
+  The python bindings in 0.11 failed to detect NULL pointers being
+  returned from libnotmuch functions and thus failed to raise
+  exceptions to indicate the error condition. Any subsequent calls
+  into libnotmuch caused segmentation faults.
+
+Quote MML tags in replies
+
+  MML tags are text codes that Emacs uses to indicate attachments
+  (among other things) in messages being composed.  The Emacs
+  interface did not quote MML tags in the quoted text of a reply.
+  User could be tricked into replying to a maliciously formatted
+  message and not editing out the MML tags from the quoted text.  This
+  could lead to files from the user's machine being attached to the
+  outgoing message.  The Emacs interface now quotes these tags in
+  reply text, so that they do not effect outgoing messages.
+
+Notmuch 0.11 (2012-01-13)
+=========================
+
+Command-Line Interface
+----------------------
+
+Hooks
+
+  Hooks have been introduced to notmuch. Hooks are scripts that notmuch
+  invokes before and after certain actions. Initially, `notmuch new`
+  supports `pre-new` and `post-new` hooks that are run before and after
+  importing new messages into the database.
+
+`notmuch reply --decrypt bugfix`
+
+  The `notmuch reply` command with `--decrypt` argument had a rarely
+  occurring bug that caused an encrypted message not to be decrypted
+  sometimes. This is now fixed.
+
+Performance
+-----------
+
+Automatic tag query optimization
+
+  `notmuch tag` now automatically optimizes the user's query to
+  exclude messages whose tags won't change.  In the past, we've
+  suggested that people do this by hand; this is no longer necessary.
+
+Don't sort messages when creating a dump file
+
+  This speeds up tag dumps considerably, without any loss of
+  information. To replicate the old behavior of sorted output (for
+  example to compare two dump files), one can use e.g. `sort(1)`.
+
+Memory Management
+-----------------
+
+Reduction of memory leaks
+
+  Two memory leaks when searching and showing messages were identified
+  and fixed in this release.
+
+Emacs Interface
+---------------
+
+Bug fixes
+
+  notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
+  a bug that caused it to always jump to the next message, even if it
+  should have scrolled down to show more of the current message instead.
+  This is now fixed.
+
+Support `notmuch new` as a notmuch-poll-script
+
+  It's now possible to use `notmuch new` as a notmuch-poll-script
+  directly. This is also the new default. This allows taking better
+  advantage of the `notmuch new` hooks from emacs without intermediate
+  scripts.
+
+Improvements in saved search management
+
+  New saved searches are now appended to the list of saved searches,
+  not inserted in front. It's also possible to define a sort function
+  for displaying saved searches; alphabetical sort is provided.
+
+Hooks for notmuch-hello
+
+  Two new hooks have been added: "notmuch-hello-mode-hook" (called after
+  entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
+  after updating a notmuch-hello buffer).
+
+New face for crypto parts headers
+
+  Crypto parts used to be displayed with a hardcoded color. A new face
+  has been introduced to fix this: notmuch-crypto-part-header. It
+  defaults to the same value as before, but can be customized to match
+  other color themes.
+
+Use space as default thousands separator
+
+  Large numbers in notmuch-hello are now displayed using a space as
+  thousands separator (e.g. "123 456" instead of "123,456"). This can be
+  changed by customizing "notmuch-hello-thousands-separator".
+
+Call notmuch-show instead of notmuch-search when clicking on
+buttonized id: links
+
+New function notmuch-show-advance
+
+  This new function advances through just the current thread, and is
+  less invasive than notmuch-show-advance-and-archive.  It can easily
+  be bound to SPC with:
+
+        (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
+
+Various performance improvements
+
+New add-on tool
+---------------
+
+The tool `contrib/notmuch-deliver` helps with initial delivery and
+tagging of mail (replacing running `notmuch new`).
+
+
+Notmuch 0.10.2 (2011-12-04)
+===========================
+
+Bug-fix release
+---------------
+
+Fix crash in python bindings
+
+  The python bindings did not call `g_type_init`, which caused crashes
+  for some, but not all users.
+
+Notmuch 0.10.1 (2011-11-25)
+===========================
+
+Bug-fix release
+---------------
+
+Fix `--help` argument
+
+  Argument processing changes in 0.10 introduced a bug where
+  `notmuch --help` crashed while `notmuch help` worked fine.
+  This is fixed in 0.10.1.
+
+Notmuch 0.10 (2011-11-23)
+=========================
+
+New build and testing features
+------------------------------
+
+Emacs tests are now done in `dtach`. This means that dtach is now
+needed to run the notmuch test suite, at least until the checking for
+prerequisites is improved.
+
+Full test coverage of the stashing feature in Emacs.
+
+New command-line features
+-------------------------
+
+Add `notmuch restore --accumulate` option
+
+  The `--accumulate` switch causes the union of the existing and new tags to
+  be applied, instead of replacing each message's tags as they are read in
+  from the dump file.
+
+Add search terms to `notmuch dump`
+
+  The dump command now takes an optional search term much like notmuch
+  search/show/tag. The output file argument of dump is deprecated in
+  favour of using stdout.
+
+Add `notmuch search` `--offset` and `--limit` options
+
+  The search command now takes options `--offset=[-]N` and `--limit=N` to
+  limit the number of results shown.
+
+Add `notmuch count --output` option
+
+  The count command is now capable of counting threads in addition to
+  messages. This is selected using the new `--output=(threads|messages)`
+  option.
+
+New emacs UI features
+---------------------
+
+Add tab-completion for `notmuch-search` and `notmuch-search-filter`
+
+  These functions now support completion tags for query parts
+  starting with "tag:".
+
+Turn "id:MSG-ID" links into buttons associated with notmuch searches
+
+  Text of the form "id:MSG-ID" in mails is now a clickable button that
+  opens a notmuch search for the given message id.
+
+Add keybinding ('c I') for stashing Message-ID's without an id: prefix
+
+  Reduces manual labor when stashing them for use outside notmuch.
+
+Do not query on `notmuch-search` exit
+
+  It is harmless to kill the external notmuch process, so the user
+  is no longer interrogated when they interrupt a search.
+
+Performance
+-----------
+
+Emacs now constructs large search buffers more efficiently
+
+Search avoids opening and parsing message files
+
+  We now store more information in the database so search no longer
+  has to open every message file to get basic headers.  This can
+  improve search speed by as much as 10X, but taking advantage of this
+  requires a database rebuild:
+
+        notmuch dump > notmuch.dump
+        # Backup, then remove notmuch database ($MAIL/.notmuch)
+        notmuch new
+        notmuch restore notmuch.dump
+
+New collection of add-on tools
+------------------------------
+
+The source directory "contrib" contains tools built on notmuch.  These
+tools are not part of notmuch, and you should check their individual
+licenses.  Feel free to report problems with them to the notmuch
+mailing list.
+
+nmbug - share tags with a given prefix
+
+  nmbug helps maintain a git repo containing all tags with a given
+  prefix (by default "notmuch::"). Tags can be shared by committing
+  them to git in one location and restoring in another.
+
+Notmuch 0.9 (2011-10-01)
+========================
+
+New, general features
+---------------------
+
+Correct handling of interruptions during `notmuch new`
+
+  `notmuch new` now operates as a series of small, self-consistent
+  transactions, so it can correctly resume after an interruption or
+  crash.  Previously, interruption could lose existing tags, fail to
+  detect messages on resume, or leave the database in a state
+  temporarily or permanently inconsistent with the mail store.
+
+Library changes
+---------------
+
+New functions
+
+  `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
+  allow multiple database operations to be performed atomically.
+
+  `notmuch_database_find_message_by_filename` does exactly what it says.
+
+API changes
+
+  `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
+  a status indicator and uses an output parameter for the
+  message. This change required changing the SONAME of libnotmuch to
+  libnotmuch.so.2
+
+Python bindings changes
+-----------------------
+
+  - Re-encode python unicode objects to utf-8 before passing back to
+    libnotmuch.
+  - Support `Database().begin_atomic()/end_atomic()`
+  - Support `Database().find_message_by_filename()`
+    NB! This needs a db opened in READ-WRITE mode currently, or it will crash
+    the python process. The is a limitation (=bug) of the underlying libnotmuch.
+  - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
+  - Update for `n_d_find_message*` API changes (see above).
+
+Ruby bindings changes
+---------------------
+
+  - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
+  - Add new exception `Notmuch::UnbalancedAtomicError.`
+  - Rename destroy to destroy! according to Ruby naming conventions.
+  - Update for `n_d_find_message*` API changes (see above).
+
+Emacs improvements
+------------------
+
+  * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
+    signing key.
+  * Add `notmuch-show-refresh-view` function (and corresponding binding)
+    to refresh the view of a notmuch-show buffer.
+
+Reply formatting cleanup
+------------------------
+
+  `notmuch reply` no longer includes notification that non-leafnode
+  MIME parts are being suppressed.
+
+Notmuch 0.8 (2011-09-10)
+========================
+
+Improved handling of message/rfc822 parts
+
+  Both in the CLI and the emacs interface.  Output of rfc822 parts now
+  includes the primary headers, as well as the body and all subparts.
+  Output of the completely raw rfc822-formatted message, including all
+  headers, is unfortunately not yet supported (but hopefully will be
+  soon).
+
+Improved Build system portability
+
+  Certain parts of the shell script generating notmuch.sym were
+  specific to the GNU versions of sed and nm. The new version should
+  be more portable to e.g. OpenBSD.
+
+Documentation update for Ruby bindings
+
+  Added documentation, typo fixes, and improved support for rdoc.
+
+Unicode, iterator, PEP8 changes for python bindings
+
+  - PEP8 (code formatting) changes for python files.
+  - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
+  - Decode headers as UTF8, encode (unicode) database paths as UTF8.
+
+Notmuch 0.7 (2011-08-01)
+========================
+
+Vim interface improvements
+--------------------------
+
+Jason Woofenden provided a number of bug fixes for the Vim interface
+
+  * fix citation/signature fold lengths
+  * fix cig/cit parsing within multipart/*
+  * fix on-screen instructions for show-signature
+  * fix from list reformatting in search view
+  * fix space key: now archives (did opposite)
+
+Uwe Kleine-König contributed
+
+  * use full path for sendmail/doc fix
+  * fix compose temp file name
+
+Python Bindings changes
+-----------------------
+
+Sebastian Spaeth contributed two changes related to unicode and UTF8:
+
+  * message tags are now explicitly unicode
+  * query string is encoded as a UTF8 byte string
+
+Build-System improvements
+-------------------------
+
+Generate notmuch.sym after the relevant object files
+
+  This fixes a bug in parallel building. Thanks to Thomas Jost for the
+  patch.
+
+Notmuch 0.6.1 (2011-07-17)
+==========================
+
+Bug-fix release
+---------------
+
+Re-export Xapian exception typeinfo symbols
+
+  It turned out our aggressive symbol hiding caused problems for
+  people running gcc 4.4.5.
+
+Notmuch 0.6 (2011-07-01)
+=======================
+
+New, general features
+---------------------
+
+Folder-based searching
+
+  Notmuch queries can now include a search term to match the
+  directories in which mail files are stored (within the mail
+  storage). The syntax is as follows:
+
+        folder:<path>
+
+  For example, one might use things such as:
+
+        folder:spam
+        folder:2011-*
+        folder:work/todo
+
+  to match any path containing a directory "spam", "work/todo", or
+  containing a directory starting with "2011-", respectively.
+
+  This feature is particularly useful for users of delivery-agent
+  software (such as procmail or maildrop) that is filtering mail and
+  delivering it to particular folders, or users of systems such as
+  Gmail that use filesystem directories to indicate message tags.
+
+  NOTE: Only messages that are newly indexed with this version of
+  notmuch will be searchable with folder: terms. In order to enable
+  this feature for all mail, the entire notmuch index will need to be
+  rebuilt as follows:
+
+        notmuch dump > notmuch.dump
+        # Backup, then remove notmuch database ($MAIL/.notmuch)
+        notmuch new
+        notmuch restore notmuch.dump
+
+Support for PGP/MIME
+
+  Both the command-line interface and the emacs-interface have new
+  support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
+  and Jameson Graef Rollins for making this happen.
+
+New, automatic tags: "signed" and "encrypted"
+
+  These tags will automatically be applied to messages containing
+  multipart/signed and multipart/encrypted parts.
+
+  NOTE: Only messages that are newly indexed with this version of
+  notmuch will receive these tags.
+
+New command-line features
+-------------------------
+
+Add new "notmuch show --verify" option for signature verification
+
+  This option instruct notmuch to verify the signature of
+  PGP/MIME-signed parts.
+
+Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
+
+  This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
+  Note that this feature currently requires gpg-agent and a passphrase entry
+  tool (e.g. pinentry-gtk or pinentry-curses).
+
+Proper nesting of multipart parts in "notmuch show" output
+
+  MIME parts are now display with proper nesting to reflect original
+  MIME hierarchy of a message. This allows clients to correctly
+  analyze the MIME structure, (such as, for example, determining to
+  which parts a signature part applies).
+
+Add new "notmuch show --part" option
+
+  This is a replacement for the older "notmuch part" command, (which
+  is now deprecated—it should still work as always, but is no longer
+  documented). Putting part output under "notmuch show" allows for all
+  of the "notmuch show" options to be applied when extracting a single
+  part, (such as --format=json for extracting a message part with JSON
+  formatting).
+
+Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
+
+  The "notmuch search-tags" sub-command has been redundant since the
+  addition of the --output=tags option to "notmuch search". We now
+  make that more clear by deprecating "notmuch search-tags", (dropping
+  it from the documentation). We do continue to support the old syntax
+  by translating it internally to the new call.
+
+Performance improvements
+------------------------
+
+Faster searches (by doing fewer searches to construct threads)
+
+  Whenever a user asks for search results as threads, notmuch first
+  performs a search for messages matching the query, then performs
+  additional searches to find other messages in the resulting threads.
+
+  Removing inefficiencies and redundancies in these secondary searches
+  results in a measured speedups of 1.5x for a typical search.
+
+Faster searches (by doing fewer passes to gather message data)
+
+  Optimizing Xapian data access patterns (using a single pass to get
+  all message-document data rather than a pass for each data type)
+  results in a measured speedup of 1.7x for a typical search.
+
+  The benefits of this optimization combine with the preceding
+  optimization. With both in place, Austin Clements measured a speedup
+  of 2.5x for a search of all messages in his inbox (was 4.5s, now
+  1.8s). Thanks, Austin!
+
+Faster initial indexing
+
+  More efficient indexing of new messages results in a measured
+  speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
+  rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
+
+Make "notmuch new" faster for unchanged directories
+
+  Optimizing to not do any further examinations of sub-directories
+  when the filesystem indicates that a directory is unchanged from the
+  last "notmuch new" results in measured speedups of 8.5 for the "No
+  new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
+
+New emacs-interface features
+----------------------------
+
+Support for PGP/MIME (GnuPG)
+
+  Automatically indicate validity of signatures for multipart/signed
+  messages.  Automatically display decrypted content for
+  multipart/encrypted messages.  See the emacs variable
+  notmuch-crypto-process-mime for more information. Note that this
+  needs gpg-agent and a pinentry tool just as the command-line tools.
+  Also note there is no support SMIME yet.
+
+Output of pipe command is now displayed if pipe command fails
+
+  This is extremely useful in the common use case of piping a patch to
+  "git am". If git fails to cleanly merge the patch the error messages
+  from the failed merge are now clearly displayed to the user, (where
+  previously they were silently hidden from the user).
+
+User-selectable From address
+
+  A user can choose which configured email addresses should be used as
+  the From address whenever composing a new message. To do so, simply
+  press C-u before the command which will open a new message. Emacs
+  will prompt for the from address to use.
+
+  The user can customize the "Notmuch Identities" setting in the
+  notmuch customize group in order to use addresses other than those in
+  the notmuch configuration file if desired.
+
+  The user can also choose to always be prompted for the from address
+  when composing a new message (without having to use C-u) by setting
+  the "Notmuch Always Prompt For Sender" option in the notmuch
+  customize group.
+
+Hiding of repeated subjects in collapsed thread view
+
+  In notmuch-show mode, if a collapsed message has the same subject as
+  its parent, the subject is not shown.
+
+Automatic detection and hiding of original message in top-posted message
+
+  When a message contains a line looking something like:
+
+        ----- Original Message -----
+
+  emacs hides this and all subsequent lines as an "original message",
+  (allowing the user to click or press enter on the "original message"
+  button to display it again). This makes the handling of top-posted
+  citations work much like conventional citations.
+
+New hooks for running code when tags are modified
+
+  Some users want to perform additional actions whenever a particular
+  tag is added/removed from a message. This could be used to, for
+  example, interface with some external spam-recognition training
+  tool. To facilitate this, two new hooks are added which can be
+  modified in the following settings of the notmuch customize group:
+
+        Notmuch Before Tag Hook
+        Notmuch After Tag Hook
+
+New optional support for hiding some multipart/alternative parts
+
+  Many emails are sent with redundant content within a
+  multipart/alternative group (such as a text/plain part as well as a
+  text/html part). Users can configure the setting:
+
+        Notmuch Show All Multipart/Alternative Parts
+
+  to "off" in the notmuch customize group to have the interface
+  automatically hide some part alternatives (such as text/html
+  parts). This new part hiding is not configured by default yet
+  because there's not yet a simple way to re-display such a hidden
+  part if it is not actually redundant with a displayed part.
+
+Better rendering of text/x-vcalendar parts
+
+  These parts are now displayed in a format suitable for use with the
+  emacs diary.
+
+Avoid getting confused by Subject and Author fields with newline characters
+
+  Replacing all characters with ASCII code less than 32 with a question mark.
+
+Cleaner display of From line in email messages
+
+  Remove double quotes, and drop "name" if it's actually just a repeat of
+  the email address.
+
+Vim interface improvements
+--------------------------
+
+Felipe Contreras provided a number of updates for the vim interface:
+
+  * Using sendmail directly rather than mailx,
+  * Implementing archive in show view
+  * Add support to mark as read in show and search views
+  * Add delete commands
+  * Various cleanups.
+
+Bindings improvements
+---------------------
+
+Ruby bindings are now much more complete
+
+  Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
+  `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
+
+Python bindings have been updated and extended
+
+  (docs online at https://notmuch.readthedocs.io/)
+
+  New bindings:
+
+  - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
+    `Message().maildir_flags_to_tags()`, `list(Threads())` and
+    `list(Messages)` works now
+  - `Message().__cmp__()` and `__hash__()`
+
+  These allow, for example:
+
+        if msg1 == msg2: ...
+
+  As well as set arithmetic on `Messages()`:
+
+        s1, s2 = set(msgs1), set(msgs2)
+        s1.union(s2)
+        s2 -= s1
+
+  Removed:
+
+  - `len(Messages())` as it exhausted the iterator
+
+  Use `len(list(Messages()))` or `Query.count_messages()`
+  to get the length.
+
+Added initial Go bindings in bindings/go
+
+New build-system features
+-------------------------
+
+Added support for building in a directory other than the source directory
+
+  This can be used with the widely-supported idiom of simply running
+  the configure script from some other directory:
+
+        mkdir build
+        cd build
+        ../configure
+        make
+
+Fix to save configure options for future, implicit runs of configure
+
+  When a user updates the source (such as with "git pull") calling
+  "make" may cause an automatic re-run of the configure script. When
+  this happens, the configure script will automatically be called with
+  the same options the user originally passed in the most-recent
+  manual invocation of configure.
+
+New test-suite feature
+----------------------
+
+Binary for bash for running test suite now located via PATH
+
+  The notmuch test suite requires a fairly recent version of bash (>=
+  bash 4). As some systems supply an older version of bash at
+  /bin/bash, the test suite is now updated to search $PATH to locate
+  the bash binary. This allows users of systems with old /bin/bash to
+  simply install bash >= 4 somewhere on $PATH before /bin and then use
+  the test suite.
+
+Support for testing output with a trailing newline
+
+  Previously, some tests would fail to notice a difference in the
+  presence/absence of a trailing newline in a program output, (which
+  has led to bugs in the past). Now, carefully-written tests (using
+  `test_expect_equal_file` rather than `test_expect_equal`) will detect
+  any change in the presence/absence of a trailing newline. Many tests
+  are updated to take advantage of this.
+
+Avoiding accessing user's $HOME while running test suite
+
+  The test suite now carefully creates its own HOME directory. This
+  allows the test suite to be run with no existing HOME directory, (as
+  some build systems apparently do), and avoids test-suite differences
+  due to configuration files in the users HOME directory.
+
+
+General bug fixes
+-----------------
+
+Output *all* files for "notmuch search --output=files"
+
+  For the cases where multiple files have the same Message ID,
+  previous versions of notmuch would output only one such file. This
+  command is now fixed to correctly output all files.
+
+Fixed spurious search results from "overlapped" indexing of addresses
+
+  This fixed a bug where a search for:
+
+        to:user@elsewhere.com
+
+  would incorrectly match a message sent:
+
+        To: user@example,com, someone@elsewhere.com
+
+Fix --output=json when search has no results
+
+  A bug present since notmuch 0.4 had caused searches with no results
+  to produce an invalid json object. This is now fixed to cleanly
+  return a valid json object representing an empty array "[]" as
+  expected.
+
+Fix the automatic detection of the From address for "notmuch reply"
+from the Received headers in some cases
+
+Fix core dump on DragonFlyBSD due to -1 return value from
+`sysconf(_SC_GETPW_R_SIZE_MAX)`
+
+Cleaned up several memory leaks
+
+Eliminated a few, rare segmentation faults and a double-free
+
+Fix libnotmuch library to only export notmuch API functions
+
+  Previous release of the notmuch library also exported some Xapian
+  C++ exception type symbols. These were never part of the library
+  interface and were never intended to be exported.
+
+Emacs-interface bug fixes
+-------------------------
+
+Display any unexpected output or errors from "notmuch search" invocations
+
+  Previously any misformatted output or trailing error messages were
+  silently ignored. This output is now clearly displayed. This fix was
+  very helpful in identifying and fixing the bug described below.
+
+Fix bug where some threads would be missing from large search results
+
+  When a search returned a "large" number of results, the emacs
+  interface was incorrectly dropping one thread every time the output
+  of the "notmuch search" process spanned the emacs read-buffer. This
+  is now fixed.
+
+Avoid re-compression of .gz files (and similar) when saving attachment
+
+  Emacs was being too clever for its own good and trying to
+  re-compress pre-compressed .gz files when saving such attachments
+  (potentially corrupting the attachment). The emacs interface is
+  fixed to avoid this bug.
+
+Fix hiding of a message when a previously-hidden citation is visible
+
+  Previously the citation would remain visible in this case. This is
+  fixed so that hiding a message hides all parts.
+
+Notmuch 0.5 (2010-11-11)
+========================
+
+New, general features
+---------------------
+
+Maildir-flag synchronization
+
+  Notmuch now knows how to synchronize flags in maildir filenames with
+  tags in the notmuch database. The following flag/tag mappings are
+  supported:
+
+        Flag <-> Tag
+        ----     -----
+        'D'      draft
+        'F'      flagged
+        'P'      passed
+        'R'      replied
+        'S'      unread (added when 'S' flag is not present)
+
+  The synchronization occurs in both directions, (for example, adding
+  the 'S' flag to a file will cause the "unread" tag to be added, and
+  adding the "replied" tag to a message will cause the file to be
+  renamed with an 'R' flag).
+
+  This synchronization is enabled by default for users of the
+  command-line interface, (though only files in directories named
+  "cur" or "new" will be renamed). It can be disabled by setting the
+  new `maildir.synchronize_flags` option in the configuration file. For
+  example:
+
+        notmuch config set maildir.synchronize_flags false
+
+  Users upgrading may also want to run "notmuch setup" once (just
+  accept the existing configuration) to get a new, nicely-commented
+  [maildir] section added to the configuration file.
+
+  For users of the notmuch library, the new synchronization
+  functionality is available with the following two new functions:
+
+        notmuch_message_maildir_flags_to_tags
+        notmuch_message_tags_to_maildir_flags
+
+  It is anticipated that future improvements to this support will
+  allow for safe synchronization of the 'T' flag with the "deleted"
+  tag, as well as support for custom flag/tag mappings.
+
+New library features
+--------------------
+
+Support for querying multiple filenames for a single message
+
+  It is common for the mailstore to contain multiple files with the
+  same message ID. Previously, notmuch would always hide these
+  duplicate files, (returning a single, arbitrary filename with
+  `notmuch_message_get_filename`).
+
+  With this release, library users can access all filenames for a
+  message with the new function:
+
+        notmuch_message_get_filenames
+
+  Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
+  and `notmuch_filenames_move_to_next` it is now possible to iterate
+  over all available filenames for a given message.
+
+New command-line features
+-------------------------
+
+New "notmuch show --format=raw" for getting at original email contents
+
+  This new feature allows for a fully-functional email client to be
+  built on top of the notmuch command-line without needing any direct
+  access to the mail store itself.
+
+  For example, it's now possible to run "emacs -f notmuch" on a local
+  machine with only ssh access to the mail store/notmuch database. To
+  do this, simply set the notmuch-command variable in emacs to the
+  name of a script containing:
+
+        ssh user@host notmuch "$@"
+
+  If the ssh client has enabled connection sharing (ControlMaster
+  option in OpenSSH), the emacs interface can be quite responsive this
+  way.
+
+General bug fixes
+-----------------
+
+Fix "notmuch search" to print nothing when nothing matches
+
+  The 0.4 release had a bug in which:
+
+        notmuch search <expression-with-no-matches>
+
+  would produce a single blank line of output, (where previous
+  versions would produce no output. This fix also causes a change in
+  the --format=json output, (which would previously produce "[]" and
+  now produces nothing).
+
+Emacs interface improvements
+----------------------------
+
+Fix to allow pipe ('|') command to work when using notmuch over ssh
+
+Fix count of lines in hidden signatures
+
+Omit repeated subject lines in (collapsed) thread display
+
+Display current thread subject in a header line
+
+Provide a "c i" binding to copy a thread ID from the search view
+
+Allow for notmuch-fcc-dirs to have a value of nil
+
+  Also, the more complex form of notmuch-fcc-dirs now has a slightly
+  different format. It no longer has a special first-element, fallback
+  string. Instead it's now a list of cons cells where the car of each
+  cell is a regular expression to be matched against the sender
+  address, and the cdr is the name of a folder to use for an FCC. So
+  the old fallback behavior can be achieved by including a final cell
+  of (".*" . "default-fcc-folder").
+
+Vim interface improvements
+--------------------------
+
+Felipe Contreras provided a number of updates for the vim interface
+
+  These include optimizations, support for newer versions of vim, fixed
+  support for sending mail on modern systems, new commands, and
+  various cleanups.
+
+New bindings
+------------
+
+Added initial ruby bindings in bindings/ruby
+
+Notmuch 0.4 (2010-11-01)
+========================
+
+New command-line features
+-------------------------
+
+`notmuch search --output=(summary|threads|messages|tags|files)`
+
+  This new option allows for particular items to be returned from
+  notmuch searches. The "summary" option is the default and behaves
+  just as "notmuch search" has historically behaved.
+
+  The new option values allow for thread IDs, message IDs, lists of
+  tags, and lists of filenames to be returned from searches. It is
+  expected that this new option will be very useful in shell
+  scripts. For example:
+
+        for file in $(notmuch search --output=files <search-terms>); do
+                <operations-on> "$file"
+        done
+
+`notmuch show --format=mbox <search-specification>`
+
+  This new option allows for the messages matching a search
+  specification to be presented as an mbox. Specifically the "mboxrd"
+  format is used which allows for reversible quoting of lines
+  beginning with "From ". A reader should remove a single '>' from the
+  beginning of all lines beginning with one or more '>' characters
+  followed by the 5 characters "From ".
+
+`notmuch config [get|set] <section>.<item> [value ...]`
+
+  The new top-level "config" command allows for any value in the
+  notmuch configuration file to be queried or set to a new value. Both
+  single-valued and multi-valued items are supported, as our any
+  custom items stored in the configuration file.
+
+Avoid setting Bcc header in "notmuch reply"
+
+  We decided that this was a bit heavy-handed as the actual mail
+  user-agent should be responsible for setting any Bcc option. Also,
+  see below for the notmuch/emacs user-agent now setting an Fcc by
+  default rather than Bcc.
+
+New library features
+--------------------
+
+Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
+
+  These are simply functions for querying properties of a
+  `notmuch_query_t` object.
+
+New emacs features
+------------------
+
+Enable Fcc of all sent messages by default (to "sent" directory)
+
+  All messages sent from the emacs interface will now be saved to the
+  notmuch mail store where they will be incorporated to the database
+  by the next "notmuch new". By default, messages are saved to the
+  "sent" directory at the top-level of the mail store. This directory
+  can be customized by means of the "Notmuch Fcc Dirs" option in the
+  notmuch customize interface.
+
+Ability to all open messages in a thread to a pipe
+
+  Historically, the '|' keybinding allows for piping a single message
+  to an external command. Now, by prefixing this key with a prefix
+  argument, (for example, by pressing "Control-U |"), all open
+  messages in the current thread will be sent to the external command.
+
+Optional support for detecting inline patches
+
+  This hook is disabled by default but can be enabled with a checkbox
+  under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
+  interface. It allows for inline patches to be detected and treated
+  as if they were attachments, (with context-sensitive highlighting).
+
+Automatically tag messages as "replied" when sending a reply
+
+  Messages replied to within the emacs interface will now be tagged as
+  "replied". This feature can easily be customized to add or remove
+  other tags as well. For example, a user might use a tag of
+  "needs-reply" and can configure this feature to automatically remove
+  that tag when replying. See "Notmuch Message Mark Replied" in the
+  notmuch customize interface.
+
+Allow search-result color specifications to overlay each other
+
+  For example, one tag can specify the background color of matching
+  lines, while another can specify the foreground. With this change,
+  both settings will now be visible simultaneously, (which was not the
+  case in previous releases). See "Notmuch Search Line Faces" in the
+  notmuch customize interface.
+
+Make hidden author names still available for incremental search
+
+  When there is insufficient space to display all authors of a thread
+  in search results, the names of hidden authors are now still made
+  available to emacs' incremental search commands. As the user
+  searches, matching lines will temporarily expand to show the hidden
+  names.
+
+New binding of Control-TAB (works like TAB in reverse)
+
+  Many notmuch nodes already use TAB to navigate forward through
+  various items allowing actions, (message headers, email attachments,
+  etc.). The new Control-TAB binding operates similarly but in the
+  opposite direction.
+
+New build-system features
+-------------------------
+
+Various portability fixes have been applied
+
+  These include fixes for build failures on at least Solaris, FreeBSD,
+  and Fedora systems. We're hopeful that the notmuch code base is now
+  more portable than ever before.
+
+Arrange for libnotmuch to be found automatically after make install
+
+  The notmuch build system is now careful to help the user avoid
+  errors of the form "libnotmuch.so could not be found" immediately
+  after installing. This support takes two forms:
+
+  1. If the library is installed to a system directory,
+     (configured in /etc/ld.so.conf), then "make install" will
+     automatically run ldconfig.
+
+  2. If the library is installed to a non-system directory, the
+     build system adds a `DR_RUNPATH` entry to the final binary
+     pointing to the directory to which the library is installed.
+
+  When this support works, the user should be able to run notmuch
+  immediately after "make install", without any errors trying to find
+  the notmuch library, and without having to manually set environment
+  variables such as `LD_LIBRARY_PATH`.
+
+Check compiler/linker options before using them
+
+  The configure script now carefully checks that any desired
+  compilation options, (whether for enabling compiler warnings, or for
+  embedding rpath, etc.), are supported. Only supported options are
+  used in the resulting Makefile.
+
+New test-suite features
+-----------------------
+
+New modularization of test suite
+
+  Thanks to a gracious relicensing of the test-suite infrastructure
+  from the git project, notmuch now has a modular test suite. This
+  provides the ability to run individual sections of the test suite
+  rather than the whole things. It also provides better summary of
+  test results, with support for tests that are expected to fail
+  (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
+  it easy to run the test suite within valgrind (pass --valgrind to
+  notmuch-test or to any sub-script) which has been very useful.
+
+New testing of emacs interface
+
+  The test suite has been augmented to allow automated testing of the
+  emacs interfaces. So far, this includes basic searches, display of
+  threads, and tag manipulation. This also includes a test that a new
+  message can successfully be sent out through a (dummy) SMTP server
+  and that said message is successfully integrated into the notmuch
+  database via the FCC setting.
+
+General bug fixes
+-----------------
+
+Fix potential corruption of database when "notmuch new" is interrupted
+
+  Previously, an interruption of "notmuch new" would (rarely) result
+  in a corrupt database. The corruption would manifest itself by a
+  persistent error of the form:
+
+        document ID of 1234 has no thread ID
+
+  The message-adding code has been carefully audited and reworked to
+  avoid this sort of corruption regardless of when it is interrupted.
+
+Fix failure with extremely long message ID headers
+
+  Previously, a message with an extremely long message ID, (say, more
+  than 300 characters), would fail to be added to notmuch, (triggering
+  Xapian exceptions). This has now been fixed.
+
+Fix for messages with "charset=unknown-8bit"
+
+  Previously, messages with this charset would cause notmuch to emit a
+  GMime warning, (which would then trip up emacs or other interfaces
+  parsing the notmuch results).
+
+Fix `notmuch_query_search_threads` function to return NULL on any exception
+
+Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
+fails
+
+  Previously, this command could confusingly report a Xapian
+  exception, yet still return an error code of 0. It now correctly
+  returns a failing error code of 1 in this case.
+
+Emacs bug fixes
+---------------
+
+Fix to handle a message with a subject containing, for example "[1234]"
+
+  Previously, a message subject containing a sequence of digits within
+  square brackets would cause the emacs interface to mis-parse the
+  output of "notmuch search". This would result in the message being
+  mis-displayed and prevent the user from manipulating the message in
+  the emacs interface.
+
+Fix to correctly handle message IDs containing ".."
+
+  The emacs interface now properly quotes message IDs to avoid a
+  Xapian bug in which the ".." within a message ID would be
+  misinterpreted as a numeric range specification.
+
+Python-binding fixes
+--------------------
+
+The python bindings for notmuch have been updated to work with python3.
+
+Debian-specific fixes
+---------------------
+
+Fix emacs initialization so "M-x notmuch" works for users by default
+
+  Now, a new Debian user can immediately run "emacs -f notmuch" after
+  "apt-get install notmuch". Previously, the user would have had to
+  edit the ~/.emacs file to add "(require 'notmuch)" before this would
+  work.
+
+Notmuch 0.3.1 (2010-04-27)
+==========================
+
+General bug fixes
+-----------------
+
+Fix an infinite loop in "notmuch reply"
+
+  This bug could be triggered by replying to a message where the
+  user's primary email address did not appear in the To: header and
+  the user had not configured any secondary email addresses. The bug
+  was a simple re-use of the same iterator variable in nested loops.
+
+Fix a potential SEGV in "notmuch search"
+
+  This bug could be triggered by an author name ending in a ','.
+  Admittedly - that's almost certainly a spam email, but we never
+  want notmuch to crash.
+
+Emacs bug fixes
+---------------
+
+Fix calculations for line wrapping in the primary "notmuch" view
+
+Fix Fcc support to prompt to create a directory if the specified Fcc
+directory does not exist
+
+Build fix
+---------
+
+Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
+
+  Without this, the C++ sources could not find strcasestr and the
+  final linking of notmuch would fail.
+
+Notmuch 0.3 (2010-04-27)
+========================
+
+New command-line features
+-------------------------
+
+User-configurable tags for new messages
+
+  A new "new.tags" option is available in the configuration file to
+  determine which tags are applied to new messages. Run "notmuch
+  setup" to generate new documentation within ~/.notmuch-config on how
+  to specify this value.
+
+Threads search results named based on subjects that match search
+
+  This means that when new mails arrived to a thread you've previously
+  read, and the new mails have a new subject, you will see that
+  subject in the search results rather than the old subject.
+
+Faster operation of "notmuch tag" (avoid unneeded sorting)
+
+  Since the user just wants to tag all matching messages, we can make
+  things perform a bit faster by avoiding the sort.
+
+Even Better guessing of From: header for "notmuch reply"
+
+  Notmuch now looks at a number of headers when trying to figure out
+  the best From: header to use in a reply. This is helpful if you have
+  several configured email addresses, and you also subscribe to various
+  mailing lists with different addresses, (so that mails you are
+  replying to won't always include your subscribed address in the To:
+  header).
+
+Indication of author names that match a search
+
+  When notmuch displays threads as the result of a search, it now
+  lists the authors that match the search before listing the other
+  authors in the thread. It inserts a pipe '|' symbol between the last
+  matching and first non-matching author. This is especially useful in
+  a search that includes tag:unread. Now the authors of the unread
+  messages in the thread are listed first.
+
+New: Python bindings
+--------------------
+
+Sebastian Spaeth has contributed his python bindings for the notmuch
+library to the central repository. These bindings were previously
+known as "cnotmuch" within python but have now been renamed to be
+accessible with a simple, and more official-looking "import notmuch".
+
+The bindings have already proven very useful as people proficient in
+python have been able to easily develop programs to do notmuch-based
+searches for email-address completion, maildir-flag synchronization,
+and other tasks.
+
+These bindings are available within the bindings/python directory, but
+are not yet integrated into the top-level Makefiles, nor the top-level
+package-building scripts. Improvements are welcome.
+
+Emacs interface improvements
+----------------------------
+
+An entirely new initial view for notmuch, (friendly yet powerful)
+
+  Some of us call the new view "notmuch hello" but you can get at it
+  by simply calling "emacs -f notmuch". The new view provides a search
+  bar where new searches can be performed. It also displays a list of
+  recent searches, along with a button to save any of these, giving it
+  a new name as a "saved search". Many people find these "saved
+  searches" one of the most convenient ways of organizing their mail,
+  (providing all of the features of "folders" in other mail clients,
+  but without any of the disadvantages).
+
+  Finally, this view can also optionally display all of the tags that
+  exist in the database, along with a count for each tag, and a custom
+  search of messages with that tag that's simply a click (or keypress)
+  away.
+
+  NOTE: For users that liked the original mode of "emacs -f notmuch"
+  immediately displaying a particular search result, we recommend
+  instead running something like:
+
+        emacs --eval '(notmuch search "tag:inbox" t)'
+
+  The "t" means to sort the messages in an "oldest first" order,
+  (as notmuch would do previously by default). You can also
+  leave that off to have your search results in "newest first"
+  order.
+
+Full-featured "customize" support for configuring notmuch
+
+  Notmuch now plugs in well to the emacs "customize" mode to make it
+  much simpler to find things about the notmuch interface that can be
+  tweaked by the user.
+
+  You can get to this mode by starting at the main "Customize" menu in
+  emacs, then browsing through "Applications", "Mail", and
+  "Notmuch". Or you can go straight to "M-x customize-group"
+  "notmuch".
+
+  Once you're at the customize screen, you'll see a list of documented
+  options that can be manipulated along with checkboxes, drop-down
+  selectors, and text-entry boxes for configuring the various
+  settings.
+
+Support for doing tab-completion of email addresses
+
+  This support currently relies on an external program,
+  (notmuch-addresses), that is not yet shipped with notmuch
+  itself. But multiple, suitable implementations of this program have
+  already been written that generate address completions by doing
+  notmuch searches of your email collection. For example, providing
+  first those addresses that you have composed messages to in the
+  past, etc.
+
+  One such program (implemented in python with the python bindings to
+  notmuch) is available via:
+
+        git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
+
+  Install that program as notmuch-addresses on your PATH, and then
+  hitting TAB on a partial email address or name within the To: or Cc:
+  line of an email message will provide matching completions.
+
+Support for file-based (Fcc) delivery of sent messages to mail store
+
+  This isn't yet enabled by default. To enable this, one will have to
+  set the "Notmuch Fcc Dirs" setting within the notmuch customize
+  screen, (see its documentation there for details). We anticipate
+  making this automatic in a future release.
+
+New 'G' key binding to trigger mail refresh (G == "Get new mail")
+
+  The 'G' key works wherever '=' works. Before refreshing the screen
+  it calls an external program that can be used to poll email servers,
+  run notmuch new and set up specific tags for the new emails. The
+  script to be called should be configured with the "Notmuch Poll
+  Script" setting in the customize interface. This script will
+  typically invoke "notmuch new" and then perhaps several "notmuch
+  tag" commands.
+
+Implement emacs message display with the JSON output from notmuch
+
+  This is much more robust than the previous implementation, (where
+  some HTML mails and mail quoting the notmuch code with the delimiter
+  characters in it would cause the parser to fall over).
+
+Better handling of HTML messages and MIME attachments (inline images!)
+
+  Allow for any MIME parts that emacs can display to be displayed
+  inline. This includes inline viewing of image attachments, (provided
+  the window is large enough to fit the image at its natural size).
+
+  Much more robust handling of HTML messages. Currently both text/plain
+  and text/html alternates will be rendered next to each other. In a
+  future release, users will be able to decide to see only one or the
+  other representation.
+
+  Each attachment now has its own button so that attachments can be
+  saved individually (the 'w' key is still available to save all
+  attachments).
+
+Customizable support for tidying of text/plain message content
+
+  Many new functions are available for tidying up message
+  content. These include options such as wrapping long lines,
+  compressing duplicate blank lines, etc.
+
+  Most of these are disabled by default, but can easily be enabled by
+  clicking the available check boxes under the "Notmuch Show Insert
+  Text/Plain Hook" within the notmuch customize screen.
+
+New support for searchable citations (even when hidden)
+
+  When portions of overly-long citations are hidden, the contents of
+  these citations will still be available for emacs' standard
+  "incremental search" functions. When the search matches any portion
+  of a hidden citation, the citation will become visible temporarily
+  to display the search result.
+
+More flexible handling of header visibility
+
+  As an answer to complaints from many users, the To, Cc, and Date
+  headers of messages are no longer hidden by default. For those users
+  that liked that these were hidden, a new "Notmuch Messages Headers
+  Visible" option in the customize interface can be set to nil. The
+  visibility of headers can still be toggled on a per-message basis
+  with the 'h' keybinding.
+
+  For users that don't want to see some subset of those headers, the
+  new "Notmuch Message Headers" variable can be customized to list
+  only those headers that should be present in the display of a message.
+
+The Return key now toggles message visibility anywhere
+
+  Previously this worked only on the first summary-line of a message.
+
+Customizable formatting of search results
+
+  The user can easily customize the order, width, and formatting of
+  the various fields in a "notmuch search" buffer. See the "Notmuch
+  Search Result Format" section of the customize interface.
+
+Generate nicer names for search buffers when using a saved search
+
+Add a notmuch User-Agent header when sending mail from notmuch/emacs
+
+New keybinding (M-Ret) to open all collapsed messages in a thread
+
+New library feature
+-------------------
+
+Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
+
+  This can be somewhat faster when sorting simply isn't desired. For
+  example when collecting a set of messages that will all be
+  manipulated identically, (adding a tag, removing a tag, deleting the
+  messages), then there's no advantage to sorting the messages by
+  date.
+
+Build fixes
+-----------
+
+Fix to compile against GMime 2.6
+
+  Previously notmuch insisted on being able to find GMime 2.4, (even
+  though GMime 2.6 would have worked all along).
+
+Fix configure script to accept (and ignore) various standard options
+
+  For example, those that the Gentoo build scripts expect configure to
+  accept are now all accepted.
+
+Test suite
+----------
+
+A large number of new tests for the many new features
+
+Better display of output from failed tests
+
+  Now shows failures with diff rather than forcing the user to gaze at
+  complete actual and expected output looking for deviation.
+
+Notmuch 0.2 (2010-04-16)
+========================
+
+This is the second release of the notmuch mail system, with actual
+detailed release notes this time!
+
+This release consists of a number of minor new features that make
+notmuch more pleasant to use, and a few fairly major bug fixes.
+
+We didn't quite hit our release target of "about a week" from the 0.1
+release, (0.2 is happening 11 days after 0.1), but we hope to do
+better for next week. Look forward to some major features coming to
+notmuch in subsequent releases.
+
+-Carl
+
+General features
+----------------
+
+Better guessing of From: header
+
+  Notmuch now tries harder to guess which configured address should be
+  used as the From: line in a "notmuch reply". It will examine the
+  Received: headers if it fails to find any configured address in To:
+  or Cc:. This allows it to often choose the correct address even when
+  replying to a message sent to a mailing list, and not directly to a
+  configured address.
+
+Make "notmuch count" with no arguments count all messages
+
+  Previously, it was hard to construct a search term that was
+  guaranteed to match all messages.
+
+Provide a new special-case search term of "*" to match all messages
+
+  This can be used in any command accepting a search term, such as
+  "notmuch search '*'". Note that you'll want to take care that the
+  shell doesn't expand * against the current files. And note that the
+  support for "*" is a special case. It's only meaningful as a single
+  search term and loses its special meaning when combined with any
+  other search terms.
+
+Automatically detect thread connections even when a parent message is
+missing
+
+  Previously, if two or more message were received with a common
+  parent, but that parent was not received, then these messages would
+  not be recognized as belonging to the same thread. This is now fixed
+  so that such messages are properly connected in a thread.
+
+General bug fixes
+-----------------
+
+Fix potential data loss in "notmuch new" with SIGINT
+
+  One code path in "notmuch new" was not properly handling
+  SIGINT. Previously, this could lead to messages being removed from
+  the database (and their tags being lost) if the user pressed
+  Control-C while "notmuch new" was working.
+
+Fix segfault when a message includes a MIME part that is empty
+
+Fix handling of non-ASCII characters with --format=json
+
+  Previously, characters outside the range of 7-bit ASCII were
+  silently dropped from the JSON output. This led to corrupted display
+  of utf-8 content in the upcoming notmuch web-based frontends.
+
+Fix headers to be properly decoded in "notmuch reply"
+
+  Previously, the user might see:
+
+        Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
+
+  rather than:
+
+        Subject: Re: Rozlučka
+
+  The former text is properly encoded to be RFC-compliant SMTP, will
+  be sent correctly, and will be properly decoded by the
+  recipient. But the user trying to edit the reply would likely be
+  unable to read or edit that field in its encoded form.
+
+Emacs client features
+---------------------
+
+Show the last few lines of citations as well as the first few lines
+
+  It's often the case that the last sentence of a citation is what is
+  being replied to directly, so the last few lines are often much more
+  important. The number of lines shown at the beginning and end of any
+  citation can be configured, (notmuch-show-citation-lines-prefix and
+  notmuch-show-citation-lines-suffix).
+
+The '+' and '-' commands in the search view can now add and remove
+tags by region
+
+  Selective bulk tagging is now possible by selecting a region of
+  threads and then using either the '+' or '-' keybindings. Bulk
+  tagging is still available for all threads matching the current
+  search with the '*' binding.
+
+More meaningful buffer names for thread-view buffers
+
+  Notmuch now uses the Subject of the thread as the buffer
+  name. Previously it was using the thread ID, which is a meaningless
+  number to the user.
+
+Provide for customized colors of threads in search view based on tags
+
+  See the documentation of notmuch-search-line-faces, (or us "M-x
+  customize" and browse to the "notmuch" group within "Applications"
+  and "Mail"), for details on how to configure this colorization.
+
+Build-system features
+---------------------
+
+Add support to properly build libnotmuch on Darwin systems (OS X)
+
+Add support to configure for many standard options
+
+  We include actual support for:
+
+        --includedir --mandir --sysconfdir
+
+  And accept and silently ignore several more:
+
+        --build --infodir --libexecdir --localstatedir
+        --disable-maintainer-mode --disable-dependency-tracking
+
+Install emacs client in "make install" rather than requiring a
+separate "make install-emacs"
+
+Automatically compute versions numbers between releases
+
+  This support uses the git-describe notation, so a version such as
+  0.1-144-g43cbbfc indicates a version that is 144 commits since the
+  0.1 release and is available as git commit "43cbbfc".
+
+Add a new "make test" target to run the test suite and actually
+verify its results
+
+Notmuch 0.1 (2010-04-05)
+========================
+
+This is the first release of the notmuch mail system.
+
+It includes the libnotmuch library, the notmuch command-line
+interface, and an emacs-based interface to notmuch.
+
+Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
+1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
+a performance bug that made notmuch very slow when modifying
+tags. This would cause distracting pauses when reading mail while
+notmuch would wait for Xapian when removing the "inbox" and "unread"
+tags from messages in a thread.
+
+
+<!--
+ Local variables:
+ mode: text
+ tab-width: 8
+ indent-tabs-mode: nil
+ End:
+ vi: sw=8 ts=8 et
+-->
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..0aa9a08
--- /dev/null
+++ b/README
@@ -0,0 +1,77 @@
+Notmuch - thread-based email index, search and tagging.
+
+Notmuch is a system for indexing, searching, reading, and tagging
+large collections of email messages in maildir or mh format. It uses
+the Xapian library to provide fast, full-text search with a convenient
+search syntax.
+
+Notmuch is free software, released under the GNU General Public
+License version 3 (or later).
+
+Building notmuch
+----------------
+See the INSTALL file for notes on compiling and installing notmuch.
+
+Running notmuch
+---------------
+After installing notmuch, start by running "notmuch setup" which will
+interactively prompt for configuration information such as your name,
+email address, and the directory which contains your mail archive to
+be indexed. You can change any answers later by running "notmuch
+setup" again or by editing the .notmuch-config file in your home
+directory.
+
+With notmuch configured you should next run "notmuch new" which will
+index all of your existing mail. This can take a long time, (several
+hours) if you have a lot of email, (hundreds of thousands of
+files). When new mail is delivered to your mail archive in the future,
+you will want to run "notmuch new" again. These runs will be much
+faster as they will only index new messages.
+
+Finally, you can prove to yourself that things are working by running
+some command-line searches such as "notmuch search
+from:someone@example.com" or "notmuch search subject:topic". See
+"notmuch help search-terms" for more details on the available search
+syntax.
+
+The command-line search output is not expected to be particularly
+friendly for day-to-day usage. Instead, it is expected that you will
+use an email interface that builds on the notmuch command-line tool or
+the libnotmuch library.
+
+Notmuch installs a full-featured email interface for use within
+emacs. To use this, first add the following line to your .emacs file:
+
+       (autoload 'notmuch "notmuch" "Notmuch mail" t)
+
+Then, either run "emacs -f notmuch" or execute the command "M-x
+notmuch" from within a running emacs.
+
+If you're interested in a non-emacs-based interface to notmuch, then
+please join the notmuch community. Various other interfaces are
+already in progress, (an interface within vim, a curses interface,
+graphical interfaces based on evolution, and various web-based
+interfaces). The authors of these interfaces would love further
+testing or contribution. See contact information below.
+
+Contacting users and developers
+-------------------------------
+The website for Notmuch is:
+
+       https://notmuchmail.org
+
+The mailing list address for the notmuch community is:
+
+       notmuch@notmuchmail.org
+
+We welcome any sort of questions, comments, kudos, or code there.
+
+Subscription is not required, (but if you do subscribe you'll avoid
+any delay due to moderation). See the website for subscription
+information.
+
+There is also an IRC channel dedicated to talk about using and
+developing notmuch:
+
+       IRC server:     irc.freenode.net
+       Channel:        #notmuch
diff --git a/README.rst b/README.rst
new file mode 100644 (file)
index 0000000..7ff3198
--- /dev/null
@@ -0,0 +1,11 @@
+If you're reading this on https://github.com/notmuch/notmuch, this is a
+read-only mirror of the notmuch project.
+
+For more information about the project, see https://notmuchmail.org.
+
+Please don't send us pull requests on github. If you have a feature
+branch that you want us to look at, use ``git send-email`` to send it
+to notmuch@notmuchmail.org.
+
+For more information about contributing to the project, see
+https://notmuchmail.org/contributing/.
diff --git a/bindings/Makefile b/bindings/Makefile
new file mode 100644 (file)
index 0000000..de492a7
--- /dev/null
@@ -0,0 +1,7 @@
+# See Makefile.local for the list of files to be compiled in this
+# directory.
+all:
+       $(MAKE) -C .. all
+
+.DEFAULT:
+       $(MAKE) -C .. $@
diff --git a/bindings/Makefile.local b/bindings/Makefile.local
new file mode 100644 (file)
index 0000000..18f9583
--- /dev/null
@@ -0,0 +1,22 @@
+# -*- makefile -*-
+
+dir := bindings
+
+# force the shared library to be built
+ruby-bindings: lib/$(LINKER_NAME)
+ifeq ($(HAVE_RUBY_DEV),1)
+       cd $(dir)/ruby && \
+               EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \
+               LIBNOTMUCH="../../lib/$(LINKER_NAME)" \
+               NOTMUCH_SRCDIR='$(NOTMUCH_SRCDIR)' \
+               $(RUBY) extconf.rb --vendor
+       $(MAKE) -C $(dir)/ruby
+endif
+
+CLEAN += $(patsubst %,$(dir)/ruby/%, \
+       .RUBYARCHDIR.time \
+       Makefile database.o directory.o filenames.o\
+       init.o message.o messages.o mkmf.log notmuch.so query.o \
+       status.o tags.o thread.o threads.o)
+
+CLEAN += bindings/ruby/.vendorarchdir.time
diff --git a/bindings/python/.gitignore b/bindings/python/.gitignore
new file mode 100644 (file)
index 0000000..601acdd
--- /dev/null
@@ -0,0 +1,4 @@
+*.py[co]
+/docs/build
+/docs/html
+/build/
diff --git a/bindings/python/MANIFEST.in b/bindings/python/MANIFEST.in
new file mode 100644 (file)
index 0000000..c83be4b
--- /dev/null
@@ -0,0 +1,2 @@
+include notmuch
+#recursive-include docs/html *
\ No newline at end of file
diff --git a/bindings/python/README b/bindings/python/README
new file mode 100644 (file)
index 0000000..5bf076d
--- /dev/null
@@ -0,0 +1,17 @@
+notmuch -- The python interface to notmuch
+==========================================
+
+This module makes the functionality of the notmuch library
+(`https://notmuchmail.org`_) available to python. Successful import of
+this module depends on a libnotmuch.so|dll being available on the
+user's system.
+
+If you have downloaded the full source tarball, you can create the
+documentation with sphinx installed, go to the docs directory and
+"make html". A static version of the documentation is available at:
+
+  https://notmuch.readthedocs.io/projects/notmuch-python/
+
+To build the python bindings, do
+
+  python setup.py install --prefix=path/to/your/preferred/location
diff --git a/bindings/python/docs/COPYING b/bindings/python/docs/COPYING
new file mode 100644 (file)
index 0000000..e600086
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+