23 months agoindex: explicitly follow GObject conventions
Daniel Kahn Gillmor [Sun, 7 Oct 2018 01:37:57 +0000 (21:37 -0400)]
index: explicitly follow GObject conventions

Use explicit labels for GTypeInfo member initializers, rather than
relying on comments and ordering.  This is both easier to read, and
harder to screw up.  This also makes it clear that we're mis-casting
GObject class initializers for gcc.

Without this patch, g++ 8.2.0-7 produces this warning:

CXX  -g -O2 lib/index.o
lib/ In function ‘GMimeFilter* notmuch_filter_discard_non_term_new(GMimeContentType*)’:
lib/ warning: cast between incompatible function types from ‘void (*)(NotmuchFilterDiscardNonTermClass*)’ {aka ‘void (*)(_NotmuchFilterDiscardNonTermClass*)’} to ‘GClassInitFunc’ {aka ‘void (*)(void*, void*)’} [-Wcast-function-type]
      (GClassInitFunc) notmuch_filter_discard_non_term_class_init,

The definition of GClassInitFunc in
/usr/include/glib-2.0/gobject/gtype.h suggests that this function will
always be called with the class_data member of the GTypeInfo.  We set
that value to NULL in both GObject definitions in notmuch. So we mark
it as explicitly unused.

There is no functional change here, just code cleanup.

23 months agoMerge tag 'debian/0.28-2'
David Bremner [Sat, 13 Oct 2018 00:01:06 +0000 (21:01 -0300)]
Merge tag 'debian/0.28-2'

notmuch release 0.28-2 for unstable (sid) [dgit]
[dgit distro=debian]

23 months agodebian: override location of bash archive/debian/0.28-2 debian/0.28-2
David Bremner [Fri, 12 Oct 2018 23:51:45 +0000 (20:51 -0300)]
debian: override location of bash

Yes, a build chroot can have /usr/bin/bash, thanks to usrmerge, but we
can't depend on it existing in the user's system.

23 months agoversion: bump to 0.28 0.28 archive/debian/0.28-1 debian/0.28-1
David Bremner [Fri, 12 Oct 2018 23:18:14 +0000 (20:18 -0300)]
version: bump to 0.28

23 months agodebian: changelog stanza for 0.28-1
David Bremner [Fri, 12 Oct 2018 23:17:06 +0000 (20:17 -0300)]
debian: changelog stanza for 0.28-1

23 months agoNEWS: NEWS for 0.28
David Bremner [Sat, 6 Oct 2018 02:02:30 +0000 (23:02 -0300)]
NEWS: NEWS for 0.28

This is based on my subjective assessment of what is user/packager
facing and important from the output of 'git shortlog'

23 months agoemacs: Update integration with third party packages.
David Edmondson [Thu, 4 Oct 2018 09:45:45 +0000 (10:45 +0100)]
emacs: Update integration with third party packages.

`mm-inline-text-html-with-images' was removed from mm-decode.el in
2016 and replaced with `mm-html-inhibit-images'.

`gnus-select-frame-set-input-focus' was removed from gnus-util.el in
2016 and existed only for XEmacs compatibility.

23 months agotest: git should ignore message-id-parse
Daniel Kahn Gillmor [Sun, 7 Oct 2018 04:09:20 +0000 (00:09 -0400)]
test: git should ignore message-id-parse

b31e44c678bf3bfe81bcc5f159e627551f12700f introduced message-id-parse
as a new binary created by the test suite.  It shows up as something
additional to git, but git ought to know to ignore it.

23 months agodebian: changelog for 0.28~rc0-1 0.28_rc0 debian/0.28_rc0-1
David Bremner [Wed, 3 Oct 2018 23:24:57 +0000 (20:24 -0300)]
debian: changelog for 0.28~rc0-1

23 months agoNEWS: start NEWS for 0.28
David Bremner [Wed, 3 Oct 2018 23:19:08 +0000 (20:19 -0300)]
NEWS: start NEWS for 0.28

Just a stub for now.

23 months agoversion: bump to 0.28~rc0
David Bremner [Wed, 3 Oct 2018 23:17:46 +0000 (20:17 -0300)]
version: bump to 0.28~rc0

23 months agodebian: update zsh completion installation
David Bremner [Tue, 18 Sep 2018 11:19:24 +0000 (13:19 +0200)]
debian: update zsh completion installation

This ${prefix}/share/vendor-completion convention seems to be debian
specific, so leave the global default alone for now.

23 months agocompletion: more complete completion for zsh.
Vincent Breitmoser [Tue, 18 Sep 2018 11:19:23 +0000 (13:19 +0200)]
completion: more complete completion for zsh.

This adds completion files for zsh that cover most of notmuch's cli.

The files in completion/zsh are formatted so that they can be found by
zsh's completion system if put $fpath. They are also registered to the
notmuch-* pattern, so they can be called externally using _dispatch.

Update installation recipe and drop debian/notmuch.examples to avoid
breakage. This means zsh completion is not installed for debian, to be
fixed in a future commit.

Amended by db: use regexp searching for address completion. This seems
to be fast enough to work without a cache.

23 months agoemacs: Call `notmuch-mua-send-hook' hooks when sending a message
David Edmondson [Tue, 25 Sep 2018 15:09:10 +0000 (16:09 +0100)]
emacs: Call `notmuch-mua-send-hook' hooks when sending a message

Previously any hook functions attached to `notmuch-mua-send-hook' were

23 months agotest: Check that `notmuch-mua-send-hook' is called on sending a message
David Edmondson [Tue, 25 Sep 2018 15:09:09 +0000 (16:09 +0100)]
test: Check that `notmuch-mua-send-hook' is called on sending a message

2 years agopython: fix unchecked None access in get_property
Vincent Breitmoser [Mon, 17 Sep 2018 12:49:32 +0000 (14:49 +0200)]
python: fix unchecked None access in get_property

2 years agodebian: update notmuch-mutt packaging to use install target
David Bremner [Sun, 16 Sep 2018 17:08:09 +0000 (14:08 -0300)]
debian: update notmuch-mutt packaging to use install target

2 years agodebian: bump compat level to 11
David Bremner [Sun, 16 Sep 2018 17:08:08 +0000 (14:08 -0300)]
debian: bump compat level to 11

The immediate motivation is to have dh_installman look in debian/tmp

2 years agocontrib/notmuch-mutt: add install target
David Bremner [Sun, 16 Sep 2018 17:08:07 +0000 (14:08 -0300)]
contrib/notmuch-mutt: add install target

The main goal here is to be able to install the notmuch-mutt script
with an absolute shebang. I have tried to make the notmuch-mutt
Makefile use configure information from notmuch if available, but make
suitable guesses if not.

2 years agoconfigure: absolute path of perl
David Bremner [Sun, 16 Sep 2018 17:08:06 +0000 (14:08 -0300)]
configure: absolute path of perl

This can be used to set shebang lines during install.

2 years agobuild: install notmuch-emacs-mua with absolute shebang
David Bremner [Sun, 16 Sep 2018 17:08:05 +0000 (14:08 -0300)]
build: install notmuch-emacs-mua with absolute shebang

Follow distro-centric rules to reduce the chance of surprising
behaviour due to PATH changes

2 years agoconfigure: absolute path of bash
David Bremner [Sun, 16 Sep 2018 17:08:04 +0000 (14:08 -0300)]
configure: absolute path of bash

This can be used to set shebang lines during install.

2 years agotest: make regexp test conditional on field processors
David Bremner [Mon, 10 Sep 2018 01:36:17 +0000 (22:36 -0300)]
test: make regexp test conditional on field processors

Normally we'd mark it broken, but perversely missing regexp support
actually makes the test pass.

2 years agotest: mark thread subqueries broken without field processors
David Bremner [Mon, 10 Sep 2018 01:36:16 +0000 (22:36 -0300)]
test: mark thread subqueries broken without field processors

Currently these tests just fail when notmuch is built against Xapian

2 years agodebian: add tar-ignore=.git
David Bremner [Fri, 14 Sep 2018 11:03:30 +0000 (08:03 -0300)]
debian: add tar-ignore=.git

Unfortunately 514fb397c9 somewhat messed up the "debian-snapshot"
target, by including .git in the generated tarball.

2 years agoMerge tag 'debian/0.27-3'
David Bremner [Sun, 9 Sep 2018 16:46:04 +0000 (13:46 -0300)]
Merge tag 'debian/0.27-3'

notmuch release 0.27-3 for unstable (sid) [dgit]
[dgit distro=debian]

2 years agodebian: drop argument-less tar-ignore archive/debian/0.27-3 debian/0.27-3
David Bremner [Sun, 9 Sep 2018 16:06:00 +0000 (13:06 -0300)]
debian: drop argument-less tar-ignore

This hangs up dgit. It's probably not useful for users of the source
package to have debian/.gitignore, but it should not hurt.

2 years agotest: Absolute and relative directory paths.
David Edmondson [Sat, 8 Sep 2018 11:49:41 +0000 (12:49 +0100)]
test: Absolute and relative directory paths.

2 years agonotmuch: Database paths without a leading / are relative to $HOME
David Edmondson [Sat, 8 Sep 2018 11:49:40 +0000 (12:49 +0100)]
notmuch: Database paths without a leading / are relative to $HOME

If the database path specified in the configuration file does *not*
start with a /, presume that it is relative to $HOME and modify the
path used to open the database accordingly.

2 years agoDeclare fast forward from 0.27-2
David Bremner [Sat, 8 Sep 2018 21:20:10 +0000 (18:20 -0300)]
Declare fast forward from 0.27-2

[dgit --overwrite]

2 years agodebian: add unversioned emacs, drop emacs23
David Bremner [Sat, 8 Sep 2018 19:15:10 +0000 (16:15 -0300)]
debian: add unversioned emacs, drop emacs23

In current Debian sid / testing, emacs25 is a transitional package,
and emacs-gtk, emacs-lucid, and emacs-nox are the real packages.
Emacs 23 is not available in emacs after oldoldstable.

2 years agodebian: update Vcs-Git URL
David Bremner [Sat, 8 Sep 2018 19:07:05 +0000 (16:07 -0300)]
debian: update Vcs-Git URL

We should probably not git://, and it needs a branch to not confuse
e.g. vcswatch.

2 years agolib: change parent strategy to use In-Reply-To if it looks sane
David Bremner [Thu, 30 Aug 2018 11:29:15 +0000 (08:29 -0300)]
lib: change parent strategy to use In-Reply-To if it looks sane

As reported by Sean Whitton, there are mailers (in particular the
Debian Bug Tracking System) that have sensible In-Reply-To headers,
but un-useful-for-notmuch References (in particular with the BTS, the
oldest reference is last). I looked at a sample of about 200K
messages, and only about 0.5% these had something other than a single
message-id in In-Reply-To. On this basis, if we see a single
message-id in In-Reply-To, consider that as authoritative.

2 years agolib: add _notmuch_message_id_parse_strict
David Bremner [Thu, 30 Aug 2018 11:29:14 +0000 (08:29 -0300)]
lib: add _notmuch_message_id_parse_strict

The idea is that if a message-id parses with this function, the MUA
generating it was probably sane, and in particular it's probably safe
to use the result as a parent from In-Reply-to.

2 years agoutil/string-util: export skip_space
David Bremner [Thu, 30 Aug 2018 11:29:13 +0000 (08:29 -0300)]
util/string-util: export skip_space

It's only few lines, but we already define the function, so make it
usable elsewhere

2 years agotest/thread-replies: mangle In-Reply-To's
David Bremner [Thu, 30 Aug 2018 11:29:12 +0000 (08:29 -0300)]
test/thread-replies: mangle In-Reply-To's

In a future commit, we will start trusting In-Reply-To's when they
look sane (i.e. a single message-id). Modify these tests so they will
keep passing (i.e. keep choosing References) when that happens.

2 years agotest: add known broken test for good In-Reply-To / bad References
David Bremner [Thu, 30 Aug 2018 11:29:11 +0000 (08:29 -0300)]
test: add known broken test for good In-Reply-To / bad References

The current scheme of choosing the replyto (i.e. the default parent
for threading purposes) does not work well for mailers that put
the oldest Reference last.

2 years agolib/thread: change _resolve_thread_relationships to use depths
David Bremner [Thu, 30 Aug 2018 11:29:10 +0000 (08:29 -0300)]
lib/thread: change _resolve_thread_relationships to use depths

We (finally) implement the XXX comment. It requires a bit of care not
to reparent all of the possible toplevel messages.

_notmuch_messages_has_next is not ready to be a public function yet,
since it punts on the mset case. We know in the one case it is called,
the notmuch_messages_t is just a regular list / iterator.

2 years agolib/thread: rewrite _parent_or_toplevel to use depths
David Bremner [Thu, 30 Aug 2018 11:29:09 +0000 (08:29 -0300)]
lib/thread: rewrite _parent_or_toplevel to use depths

This is part 1/2 of changing the reparenting of alleged toplevel
messages to use a "deep" reference rather than just the first one

2 years agolib: calculate message depth in thread
David Bremner [Thu, 30 Aug 2018 11:29:08 +0000 (08:29 -0300)]
lib: calculate message depth in thread

This will be used in reparenting messages without useful in-reply-to,
but with useful references

2 years agolib/thread: initial use of references as for fallback parenting
David Bremner [Thu, 30 Aug 2018 11:29:07 +0000 (08:29 -0300)]
lib/thread: initial use of references as for fallback parenting

This is mainly to lay out the structure of the final code. The problem
isn't really solved yet, although some very simple cases are
better (hence the fixed test). We need two passes through the messages
because we need to be careful not to re-parent too many messages and
end up without any toplevel messages.

2 years agouse EMPTY_STRING in _parent_via_in_reply_to
David Bremner [Mon, 3 Sep 2018 15:26:10 +0000 (12:26 -0300)]
use EMPTY_STRING in _parent_via_in_reply_to

This is a review suggestion [1] of Tomi. I decided not to squash it
so that the code movement remains clear.


2 years agolib/thread: refactor in_reply_to test
David Bremner [Thu, 30 Aug 2018 11:29:06 +0000 (08:29 -0300)]
lib/thread: refactor in_reply_to test

This is not a complete win in code-size, but it makes the code (which
is about to get more complicated) easier to follow.

2 years agolib: add _notmuch_message_list_empty
David Bremner [Mon, 3 Sep 2018 21:02:25 +0000 (18:02 -0300)]
lib: add _notmuch_message_list_empty

There is no public notmuch_message_list_t public interface, so to this
is added to the private API. We use it immediately in;
future commits will use it further.

2 years agolib/thread: add macro for debug printing of threading
David Bremner [Mon, 3 Sep 2018 14:00:26 +0000 (11:00 -0300)]
lib/thread: add macro for debug printing of threading

This is analogous to DEBUG_DATABASE_SANITY, and is intended to help
debugging and to help users submit bug reports.

2 years agolib: read reference terms into message struct.
David Bremner [Thu, 30 Aug 2018 11:29:05 +0000 (08:29 -0300)]
lib: read reference terms into message struct.

The plan is to use these in resolving threads.

2 years agolib/thread: sort sibling messages by date
David Bremner [Thu, 30 Aug 2018 11:29:04 +0000 (08:29 -0300)]
lib/thread: sort sibling messages by date

For non-root messages, this should not should anything currently, as
the messages are already added in date order. In the future we will
add some non-root messages in a second pass out of order and the
sorting will be useful. It does fix the order of multiple
root-messages (although it is overkill for that).

2 years agotest: add known broken tests for "ghost roots"
David Bremner [Thu, 30 Aug 2018 11:29:03 +0000 (08:29 -0300)]
test: add known broken tests for "ghost roots"

This documents the bug discussed at


The underlying issue is that the reply to a ghost (missing) message is
falsely classified as a root message in _resolve_thread_relationships.

There are two pairs of tests; in each case the the first test is
simpler / more robust, but also easier to fool.

2 years agotest: start threading test corpus
David Bremner [Thu, 30 Aug 2018 11:29:02 +0000 (08:29 -0300)]
test: start threading test corpus

There are 3 threads here, two synthetic, and one anonymized one using
data from Gregor. They test various aspects of thread
ordering/construction in the presence of replies to ghost messages.

2 years agotest/tag: add test for updating during batch tag operations
David Bremner [Mon, 9 Jul 2018 10:30:31 +0000 (07:30 -0300)]
test/tag: add test for updating during batch tag operations

This clarifies that the breakage seen with Xapian 1.4.6 does not have
to do with "funny" tags.

This test is "known broken", but only with xapian 1.4.6, and there's
curently no convenient way to mark that.

2 years agolib: detect mislabeled Windows-1252 parts
Sebastian Poeplau [Tue, 7 Aug 2018 12:48:22 +0000 (14:48 +0200)]
lib: detect mislabeled Windows-1252 parts

Use GMime functionality to detect mislabeled messages and apply the
correct (Windows) encoding instead.

2 years agotest: add known broken test for mislabeled Windows-1252 encoding
Sebastian Poeplau [Tue, 7 Aug 2018 12:48:21 +0000 (14:48 +0200)]
test: add known broken test for mislabeled Windows-1252 encoding

Messages that contain Windows-1252 are frequently mislabeled as ISO
8859-1, which may result in non-printable characters when displaying
the message. The test asserts that such characters (in this case
curved quotes) are displayed correctly.

2 years agoemacs: Kill the stderr buffer when an async process completes
David Edmondson [Sun, 26 Aug 2018 21:16:12 +0000 (22:16 +0100)]
emacs: Kill the stderr buffer when an async process completes

On some platforms (e.g. macOS), it is necessary to add a real sentinel
process for the error buffer used by `notmuch-start-notmuch' rather
than a no-op sentinel.

2 years agodebian: changelog for 0.27-2 debian/0.27-2
David Bremner [Fri, 29 Jun 2018 00:07:31 +0000 (21:07 -0300)]
debian: changelog for 0.27-2

2 years agonotmuch (0.27-2) unstable; urgency=medium
David Bremner [Fri, 29 Jun 2018 00:01:29 +0000 (21:01 -0300)]
notmuch (0.27-2) unstable; urgency=medium

  * Add texinfo as a build-dep, build info version of documentation.

[dgit import unpatched notmuch 0.27-2]

2 years agoImport notmuch_0.27-2.debian.tar.xz
David Bremner [Fri, 29 Jun 2018 00:01:29 +0000 (21:01 -0300)]
Import notmuch_0.27-2.debian.tar.xz

[dgit import tarball notmuch 0.27-2 notmuch_0.27-2.debian.tar.xz]

2 years agodebian: add build depency on texinfo
David Bremner [Thu, 28 Jun 2018 23:58:04 +0000 (20:58 -0300)]
debian: add build depency on texinfo

This is needed to provide a makeinfo binary, to build the info version
of the documentation.

2 years agodoc: clean up manpages
Daniel Kahn Gillmor [Tue, 19 Jun 2018 22:36:16 +0000 (18:36 -0400)]
doc: clean up manpages

Many of the manpages didn't treat literal text as literal text.  I've
tried to normalize some of the restructured text to make it a bit more

several of the synopsis lines are still untouched by this cleanup, but
i'm not sure what the right way to represent those is in .rst,

In particular find that if i rebuild the manpages, sometimes i end up
with some of the synopsis lines showing – (U+2013 EN DASH) where they
should have -- (2 × U+002D HYPHEN-MINUS) in the generated nroff
output, though i have not tracked down the source of this error yet.

2 years agouse #!/usr/bin/env python consistently
Daniel Kahn Gillmor [Tue, 12 Jun 2018 21:21:10 +0000 (17:21 -0400)]
use #!/usr/bin/env python consistently

2 years agominor cleanup to printmimestructure
Jameson Graef Rollins [Tue, 12 Jun 2018 21:21:09 +0000 (17:21 -0400)]
minor cleanup to printmimestructure

make the source slightly easier to read.  no functional change.

2 years agodevel: make printmimestructure py3 compatible
Daniel Kahn Gillmor [Tue, 12 Jun 2018 21:21:08 +0000 (17:21 -0400)]
devel: make printmimestructure py3 compatible

Make printmimestructure work in python3 as well as python2.

2 years agominor post-0.26 NEWS layout fixes
Tomi Ollila [Wed, 13 Jun 2018 21:08:39 +0000 (00:08 +0300)]
minor post-0.26 NEWS layout fixes

As usual, one notices these *after* release(s).

2 years agoMerge tag '0.27'
David Bremner [Wed, 13 Jun 2018 09:37:27 +0000 (06:37 -0300)]
Merge tag '0.27'

notmuch 0.27 release

2 years agoNEWS: set date 0.27 debian/0.27-1
David Bremner [Wed, 13 Jun 2018 01:42:34 +0000 (22:42 -0300)]
NEWS: set date

2 years agodebian: changelog for 0.27-1
David Bremner [Wed, 13 Jun 2018 01:40:28 +0000 (22:40 -0300)]
debian: changelog for 0.27-1

2 years agoImport notmuch_0.27.orig.tar.gz
David Bremner [Wed, 13 Jun 2018 01:39:33 +0000 (22:39 -0300)]
Import notmuch_0.27.orig.tar.gz

[dgit import orig notmuch_0.27.orig.tar.gz]

2 years agoversion: bump to 0.27
David Bremner [Wed, 13 Jun 2018 01:36:39 +0000 (22:36 -0300)]
version: bump to 0.27

2 years agodoc: document notmuch show --decrypt=stash
Daniel Kahn Gillmor [Tue, 12 Jun 2018 21:36:45 +0000 (17:36 -0400)]
doc: document notmuch show --decrypt=stash

Help users find this new indexed-cleartext workflow.

2 years agoMerge tag '0.27_rc1'
David Bremner [Sat, 2 Jun 2018 18:54:28 +0000 (15:54 -0300)]
Merge tag '0.27_rc1'

notmuch 0.27~rc1 release

2 years agodebian: changelog stanza for 0.27~rc1-1 0.27_rc1 debian/0.27_rc1-1
David Bremner [Thu, 31 May 2018 11:19:25 +0000 (08:19 -0300)]
debian: changelog stanza for 0.27~rc1-1

2 years agoversion: bump to 0.27~rc1
David Bremner [Thu, 31 May 2018 11:17:12 +0000 (08:17 -0300)]
version: bump to 0.27~rc1

2 years agoconfigure: check for links to/from libdir in ldconfig output
David Bremner [Wed, 30 May 2018 02:03:17 +0000 (19:03 -0700)]
configure: check for links to/from libdir in ldconfig output

If e.g. /lib is a link to /usr/lib, then the latter may not show up in
the way we expect in the output of ldconfig. 'test foo -ef bar' checks
if foo and bar have the same device and inode numbers. Since (at least
in bash, dash, ksh, and zsh) the shell dereferences symlinks before
applying the test, this includes both the case where file1 is equal to
file2 and the case where one is a symlink to the other.

2 years agoNEWS: document installation of notmuch-emacs manual
David Bremner [Wed, 30 May 2018 01:31:07 +0000 (22:31 -0300)]
NEWS: document installation of notmuch-emacs manual

2 years agoNEWS: mention notmuch --full-scan
David Bremner [Wed, 30 May 2018 01:07:42 +0000 (22:07 -0300)]
NEWS: mention notmuch --full-scan

2 years agoNEWS: mention thread:{} queries
David Bremner [Wed, 30 May 2018 00:48:55 +0000 (21:48 -0300)]
NEWS: mention thread:{} queries

2 years agoNEWS: deprecate pre-1.4.0 Xapian
David Bremner [Tue, 29 May 2018 23:57:37 +0000 (20:57 -0300)]
NEWS: deprecate pre-1.4.0 Xapian

We want to give people some heads up before dropping support, since
removing a bunch of ifdefs will be a pain to revert.

2 years agodebian: update symbols for 0.27 0.27_rc0 debian/0.27_rc0-1
David Bremner [Sun, 27 May 2018 20:15:48 +0000 (13:15 -0700)]
debian: update symbols for 0.27

add two new API symbols

2 years agoNEWS: start entry for 0.27
David Bremner [Sun, 27 May 2018 19:16:02 +0000 (12:16 -0700)]
NEWS: start entry for 0.27

No content yet.

2 years agotest: fix hardcoded paths in
David Bremner [Sat, 26 May 2018 23:46:44 +0000 (16:46 -0700)]
test: fix hardcoded paths in

The previous paths will fail almost everywhere.

2 years agodebian: changelog for 0.27~rc0-1
David Bremner [Sat, 26 May 2018 16:13:09 +0000 (09:13 -0700)]
debian: changelog for 0.27~rc0-1

2 years agobump version to 0.27~rc0
David Bremner [Sat, 26 May 2018 16:11:42 +0000 (09:11 -0700)]
bump version to 0.27~rc0

Start the busywork for a new release

2 years agodocs: add initial documentation for notmuch-tag-jump
David Bremner [Mon, 21 May 2018 20:08:56 +0000 (13:08 -0700)]
docs: add initial documentation for notmuch-tag-jump

This is mainly to improve discoverability. It seems that doing
variable cross-references is not easy without using some sphinx

2 years agodoc: initial documentation for notmuch-tree mode
David Bremner [Mon, 21 May 2018 20:08:55 +0000 (13:08 -0700)]
doc: initial documentation for notmuch-tree mode

2 years agodoc: initial documentation for notmuch-show-mode
David Bremner [Mon, 21 May 2018 20:08:54 +0000 (13:08 -0700)]
doc: initial documentation for notmuch-show-mode

This is pretty minimal, but will hopefully inspire others to
contribute more complete documentation. If nothing else, it points out

2 years agodebian: install info pages as part of elpa (emacs) package
David Bremner [Mon, 21 May 2018 20:08:53 +0000 (13:08 -0700)]
debian: install info pages as part of elpa (emacs) package

This is a simple way to make the info pages available, since the emacs
package system deals with the annoying bits.  If there is many people
who want the info pages outside of emacs, we could consider a separate
binary package, but currently it doesn't seem worthwhile.

2 years agodoc: install info files in elpa package
David Bremner [Mon, 21 May 2018 20:08:52 +0000 (13:08 -0700)]
doc: install info files in elpa package

The duplication of effort in installing into different places seems
unavoidable; or more precisely not worth avoiding by more extensive

2 years agodoc: install build and install info pages
David Bremner [Mon, 21 May 2018 20:08:51 +0000 (13:08 -0700)]
doc: install build and install info pages

All of the man pages are installed as info pages, plus
the (unfinished) notmuch-emacs manual

2 years agoconfigure: set 'infodir'
David Bremner [Mon, 21 May 2018 20:08:50 +0000 (13:08 -0700)]
configure: set 'infodir'

This turns --infodir from an ignored option into a real one

2 years agoconfigure: check for makeinfo and install-info
David Bremner [Mon, 21 May 2018 20:08:49 +0000 (13:08 -0700)]
configure: check for makeinfo and install-info

These are needed to build and install (respectively) the info format

2 years agocli/show: enable --decrypt=stash
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:59 +0000 (02:57 -0400)]
cli/show: enable --decrypt=stash

Add fancy new feature, which makes "notmuch show" capable of actually
indexing messages that it just decrypted.

This enables a workflow where messages can come in in the background
and be indexed using "--decrypt=auto".  But when showing an encrypted
message for the first time, it gets automatically indexed.

This is something of a departure for "notmuch show" -- in particular,
because it requires read/write access to the database.  However, this
might be a common use case -- people get mail delivered and indexed in
the background, but only want access to their secret key to happen
when they're directly interacting with notmuch itself.

In such a scenario, they couldn't search newly-delivered, encrypted
messages, but they could search for them once they've read them.

Documentation of this new feature also uses a table form, similar to
that found in the description of index.decrypt in notmuch-config(1).

A notmuch UI that wants to facilitate this workflow while also
offering an interactive search interface might instead make use of
these additional commands while the user is at the console:

Count received encrypted messages (if > 0, there are some things we
haven't yet tried to index, and therefore can't yet search):

     notmuch count tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure

Reindex those messages:

     notmuch reindex --try-decrypt=true tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure

2 years agotest-lib: add notmuch_show_part for "notmuch show --format=text"
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:58 +0000 (02:57 -0400)]
test-lib: add notmuch_show_part for "notmuch show --format=text"

Thanks to David Bremner for this improved readability!

2 years agocli/show: reindex when we learned new session keys about a message
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:57 +0000 (02:57 -0400)]
cli/show: reindex when we learned new session keys about a message

If the number of session keys for a given message increased after
running "notmuch show" then we just learned something new that might
let us do automatic decryption.  We should reindex this message using
our newfound knowledge.

Amended by db: add previously discussed #if block

2 years agocli: write session keys to database, if asked to do so
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:56 +0000 (02:57 -0400)]
cli: write session keys to database, if asked to do so

If the decryption policy is NOTMUCH_DECRYPT_TRUE, that means we want
to stash session keys in the database.  Note that there is currently
no way from the command line to set it this way, though, so it is not
yet included in the test suite.

2 years agocli: add print_status_message()
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:55 +0000 (02:57 -0400)]
cli: add print_status_message()

This function is a parallel to print_status_query() or
print_status_database().  Thanks to David Bremner for the suggestion!

2 years agolib: make notmuch_message_get_database() take a const notmuch_message_t*
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:54 +0000 (02:57 -0400)]
lib: make notmuch_message_get_database() take a const notmuch_message_t*

This is technically an API change, but it is not an ABI change, and
it's merely a statement that limits what the library can do.

This is in parallel to notmuch_query_get_database(), which also takes
a const pointer.

2 years agoproperties: add notmuch_message_count_properties
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:53 +0000 (02:57 -0400)]
properties: add notmuch_message_count_properties

The user can already do this manually, of course, but (a) it's nice to
have a convenience function, and (b) exposing this interface means
that someone more clever with a _notmuch_string_map_t than i am can
write a more efficient version if they like, and it will just
accelerate the users of the convenience function.

2 years agolib: bump minor version
David Bremner [Wed, 23 May 2018 01:47:49 +0000 (18:47 -0700)]
lib: bump minor version

This recognizes the addition of (at least)
notmuch_message_get_database to the API.

2 years agolib: expose notmuch_message_get_database()
Daniel Kahn Gillmor [Fri, 11 May 2018 06:57:52 +0000 (02:57 -0400)]
lib: expose notmuch_message_get_database()

We've had _notmuch_message_database() internally for a while, and it's
useful.  It turns out to be useful on the other side of the library
interface as well (i'll use it later in this series for "notmuch
show"), so we expose it publicly now.

2 years agodoc: document notmuch new --full-scan
David Bremner [Sun, 29 Apr 2018 23:19:43 +0000 (20:19 -0300)]
doc: document notmuch new --full-scan

2 years agotest: use --full-scan in
David Bremner [Sun, 29 Apr 2018 23:19:42 +0000 (20:19 -0300)]
test: use --full-scan in

Wherever the test relies on directories being scanned, this option
should be used to avoid skipping them due to mtimes on directories
matching the database.