3 years agoCLI/new: support maildir synced tags in new.tags
David Bremner [Sun, 20 Aug 2017 01:07:27 +0000 (22:07 -0300)]
CLI/new: support maildir synced tags in new.tags

We reorder reading maildir flags to avoid overwriting 'new.tags'. The
inverted status of 'unread' means the maildir flag needs to be checked
a second time.

I backpedalled here on the idea of supporting 'new.tags' without
'unread' in the presence of maildir syncing.  For files in 'new/', it
seems quite natural to tag them as 'unread'.

3 years agolib: add notmuch_message_has_maildir_flag
David Bremner [Sun, 20 Aug 2017 01:07:26 +0000 (22:07 -0300)]
lib: add notmuch_message_has_maildir_flag

I considered a higher level interface where the caller passes a tag
name rather than a flag character, but the role of the "unread" tag is
particularly confusing with such an interface.

3 years agolib/message: split n_m_maildir_flags_tags, store maildir flags
David Bremner [Sun, 20 Aug 2017 01:07:25 +0000 (22:07 -0300)]
lib/message: split n_m_maildir_flags_tags, store maildir flags

In a future commit this will allow querying maildir flags seperately
from tags to allow resolving certain conflicts.

3 years agotest: Perform T170 tests that don't require dtach before any that do.
David Edmondson [Sun, 27 Aug 2017 12:50:50 +0000 (13:50 +0100)]
test: Perform T170 tests that don't require dtach before any that do.

This avoids the later tests seeing different versions of the database
depending on whether dtach is available.

3 years agonotmuch-tag.el: Fix minor grammar error
Vladimir Panteleev [Mon, 14 Aug 2017 05:54:56 +0000 (05:54 +0000)]
notmuch-tag.el: Fix minor grammar error

3 years agotest: Use small Python script for JSON normalization instead of json.tool
Vladimir Panteleev [Wed, 16 Aug 2017 16:31:27 +0000 (16:31 +0000)]
test: Use small Python script for JSON normalization instead of json.tool

json.tool does not sort or otherwise normalize the order of JSON keys
in its output, which can result in test failures on some test systems.

Instead, use a one-line Python script passed to the interpreter
directly on its command line. Use sort_keys=True for json.dump to
ensure the key order is normalized. The script works with both Python
2 and 3.

* test/ Update test_expect_equal_json.

3 years agoreindex: drop notmuch_param_t, use notmuch_indexopts_t instead
Daniel Kahn Gillmor [Thu, 17 Aug 2017 23:14:26 +0000 (19:14 -0400)]
reindex: drop notmuch_param_t, use notmuch_indexopts_t instead

There are at least three places in notmuch that can trigger an
indexing action:

 * notmuch new
 * notmuch insert
 * notmuch reindex

I have plans to add some indexing options (e.g. indexing the cleartext
of encrypted parts, external filters, automated property injection)
that should properly be available in all places where indexing

I also want those indexing options to be exposed by (and constrained
by) the libnotmuch C API.

This isn't yet an API break because we've never made a release with

These indexing options are relevant in the listed places (and in the
libnotmuch analogues), but they aren't relevant in the other kinds of
functionality that notmuch offers (e.g. dump/restore, tagging, search,
show, reply).

So i think a generic "param" object isn't well-suited for this case.
In particular:

 * a param object sounds like it could contain parameters for some
   other (non-indexing) operation.  This sounds confusing -- why would
   i pass non-indexing parameters to a function that only does

 * bremner suggests online a generic param object would actually be
   passed as a list of param objects, argv-style.  In this case (at
   least in the obvious argv implementation), the params might be some
   sort of generic string.  This introduces a problem where the API of
   the library doesn't grow as new options are added, which means that
   when code outside the library tries to use a feature, it first has
   to test for it, and have code to handle it not being available.
   The indexopts approach proposed here instead makes it clear at
   compile time and at dynamic link time that there is an explicit
   dependency on that feature, which allows automated tools to keep
   track of what's needed and keeps the actual code simple.

My proposal adds the notmuch_indexopts_t as an opaque struct, so that
we can extend the list of options without causing ABI breakage.

The cost of this proposal appears to be that the "boilerplate" API
increases a little bit, with a generic constructor and destructor
function for the indexopts struct.

More patches will follow that make use of this indexopts approach.

3 years agodatabase: add n_d_index_file (deprecates n_d_add_message)
Daniel Kahn Gillmor [Thu, 17 Aug 2017 23:14:25 +0000 (19:14 -0400)]
database: add n_d_index_file (deprecates n_d_add_message)

We need a way to pass parameters to the indexing functionality on the
first index, not just on reindexing.  The obvious place is in
notmuch_database_add_message.  But since modifying the argument list
would break both API and ABI, we needed a new name.

I considered notmuch_database_add_message_with_params(), but the
functionality we're talking about doesn't always add a message.  It
tries to index a specific file, possibly adding a message, but
possibly doing other things, like adding terms to an existing message,
or failing to deal with message objects entirely (e.g. because the
file didn't contain a message).

So i chose the function name notmuch_database_index_file.

I confess i'm a little concerned about confusing future notmuch
developers with the new name, since we already have a private
_notmuch_message_index_file function, and the two do rather different
things.  But i think the added clarity for people linking against the
future libnotmuch and the capacity for using index parameters makes
this a worthwhile tradeoff.  (that said, if anyone has another name
that they strongly prefer, i'd be happy to go with it)

This changeset also adjusts the tests so that we test whether the new,
preferred function returns bad values (since the deprecated function
just calls the new one).

We can keep the deprecated n_d_add_message function around as long as
we like, but at the next place where we're forced to break API or ABI
we can probably choose to drop the name relatively safely.

NOTE: there is probably more cleanup to do in the ruby and go bindings
to complete the deprecation directly.  I don't know those languages
well enough to attempt a fix; i don't know how to test them; and i
don't know the culture around those languages about API additions or

3 years agoshow: workaround for the missing file problem
Yuri Volchkov [Mon, 21 Aug 2017 15:44:48 +0000 (17:44 +0200)]
show: workaround for the missing file problem

This patch fixes the 'Deleted first duplicate file does not stop
notmuch show from working' test.

If a message to be shown has several duplicated files, and for some
reason the first file in the list is not available anymore, notmuch
will exit with an error.

This is clearly a problem in the database, but we are not going to let
this problem be a show-stopper. Let's walk through the list, and show
the first existing file.

Signed-off-by: Yuri Volchkov <>
3 years agotest: show id:<> works even if the first duplicate is deleted
Yuri Volchkov [Mon, 21 Aug 2017 15:44:47 +0000 (17:44 +0200)]
test: show id:<> works even if the first duplicate is deleted

Signed-off-by: Yuri Volchkov <>
3 years agoinsert: strip trailing / in folder path
Yuri Volchkov [Mon, 21 Aug 2017 15:44:46 +0000 (17:44 +0200)]
insert: strip trailing / in folder path

This patch fixes the "Insert message into folder with trailing /"
test. The problem was insufficient path canonization.

From database's point of view, "Sent" and "Sent/" are different
folders. If user runs (note the last '/'):

    notmuch insert --folder=maildir/Sent/ < test.msg

notmuch will create an extra XDIRECTORY record for the folder
'Sent/'. This means that database will have _TWO_ records for _ONE_
physical folder: 'Sent' and 'Sent/'. However, the 'notmuch new'
command will update only records related to the first one (the correct

Now, if user moved the email file (e.g. from 'Sent/new' to
'Sent/cur'), 'notmuch new' will add a record about the new file, but
will not delete the old record.

Signed-off-by: Yuri Volchkov <>
3 years agodatabase: move striping of trailing '/' into helper function
Yuri Volchkov [Mon, 21 Aug 2017 15:44:45 +0000 (17:44 +0200)]
database: move striping of trailing '/' into helper function

Stripping trailing character is not that uncommon
operation. Particularly, the next patch has to perform it as
well. Lets move it to the separate function to avoid code duplication.

Also the new function has a little improvement: if the character to
strip is repeated several times in the end of a string, function
strips them all.

Signed-off-by: Yuri Volchkov <>
3 years agoperf-test: add memory test for notmuch-insert
David Bremner [Fri, 18 Aug 2017 23:50:06 +0000 (20:50 -0300)]
perf-test: add memory test for notmuch-insert

In the future it might be worthwhile selecting corpus messages to
insert, but that seems a bit overcomplicated for now

3 years agoperf-test: renumber tests
David Bremner [Fri, 18 Aug 2017 23:50:05 +0000 (20:50 -0300)]
perf-test: renumber tests

One test per number so ordering is clear.

3 years agotest: move generate_message, add_message into
David Bremner [Fri, 18 Aug 2017 23:50:04 +0000 (20:50 -0300)]
test: move generate_message, add_message into

The plan is to use at least the former in the perf test suite.

3 years agolib: clarify description of notmuch_database_add_message
Daniel Kahn Gillmor [Thu, 17 Aug 2017 23:14:24 +0000 (19:14 -0400)]
lib: clarify description of notmuch_database_add_message

Since we're accumulating the index when we add a new file to the
message, the semantics have slightly changed.  This tries to align the
documentation with the actual functionality.

3 years agoemacs: Use make-process when available
Vladimir Panteleev [Thu, 17 Aug 2017 17:57:12 +0000 (17:57 +0000)]
emacs: Use make-process when available

make-process is a new function introduced in Emacs 25, which provides
greater control over process creation. Crucially, it allows
separately redirecting stderr directly to a buffer, which allows us to
avoid needing to use the shell to redirect to a temporary file in
order to correctly distinguish stdout and stderr.

* notmuch-lib.el: Use make-process when it is available; fall back to
  the previous method when not.

3 years agoemacs: Refactor subprocess stderr propagation
Vladimir Panteleev [Thu, 17 Aug 2017 17:57:11 +0000 (17:57 +0000)]
emacs: Refactor subprocess stderr propagation

Load subprocess error output to a string in the callers, and propagate
the error messages as a string parameter instead of a path to file

Required to be able to avoid using temporary files for subprocess
error output.

* notmuch-lib.el: Update notmuch-check-async-exit-status,
  notmuch-check-exit-status: accept an err parameter instead of
  err-file; shift the responsibility of loading error messages from
  files up the call stack.

3 years agodoc: Disable SmartyPants in generated manual pages
Vladimir Panteleev [Mon, 14 Aug 2017 06:36:54 +0000 (06:36 +0000)]
doc: Disable SmartyPants in generated manual pages

By default, Sphinx tries to pre-process text through SmartyPants,
which attempts to convert ASCII quotes and dashes to Unicode
characters. Unfortunately, this mangles technical text such as command
lines. For instance, this excerpt from notmuch-tag.rst:

  **notmuch** **tag** **--batch** [--input=<*filename*>]

got turned into:

  notmuch tag –batch [–input=<filename>]

That's an en-dash and an em-dash respectively.

Not only are these characters visually confusing and could easily be
mistaken for a single dash, copying and pasting such command lines
into a terminal is doomed to result in incomprehensible error

* doc/ Disable SmartyPants.

3 years agoemacs: set query-context to nil if its "" or "*"
Jani Nikula [Sun, 13 Aug 2017 09:07:24 +0000 (12:07 +0300)]
emacs: set query-context to nil if its "" or "*"

The queries "" and "*" are special cased in the notmuch library to
match all messages, but only if they're the entire query. They can't
be combined with other queries, such as "* AND foo", in which case
they "leak" down to the Xapian query parser.

Notmuch show and tree buffers inadvertently combine the thread query
with said special queries, causing incorrect collapsing of
messages. Handle the special queries specially. We already do a
similar thing in notmuch-search-filter.

3 years agotest: insert into the folder with trailing /
Yuri Volchkov [Sat, 12 Aug 2017 16:47:30 +0000 (18:47 +0200)]
test: insert into the folder with trailing /

From database's point of view, "Drafts" and "Drafts/" are different

Signed-off-by: Yuri Volchkov <>
Amended: add test_subtest_known_broken (db)

3 years agocompletion: add bash completion for "notmuch reindex"
Daniel Kahn Gillmor [Wed, 9 Aug 2017 07:14:41 +0000 (03:14 -0400)]
completion: add bash completion for "notmuch reindex"

The main thing that notmuch reindex does is to use search terms, so we
can reuse a bunch of the existing completion framework.

3 years agofix typo
Daniel Kahn Gillmor [Wed, 9 Aug 2017 07:44:10 +0000 (03:44 -0400)]
fix typo

3 years agotest: remove remainder of previously killed basic test
Yuri Volchkov [Fri, 11 Aug 2017 18:31:22 +0000 (20:31 +0200)]
test: remove remainder of previously killed basic test

In the commit 51cd69feb1d131db7a468e33e0fa2e043caad41e the part of the
test "test runs if prerequisite is satisfied" has been
removed. However, there was a remainder of that test - variable

Kill it, to not to confuse people.

Signed-off-by: Yuri Volchkov <>
3 years agoUse rooted paths in .gitignore files
Vladimir Panteleev [Thu, 17 Aug 2017 00:41:10 +0000 (00:41 +0000)]
Use rooted paths in .gitignore files

A leading / in paths in a .gitignore file matches the beginning of the
path, meaning that for patterns without slashes, git will match files
only in the current directory as opposed to in any subdirectory.

Prefix relevant paths with / in .gitignore files, to prevent
accidentally ignoring files in subdirectories and possibly slightly
improve the performance of "git status".

3 years agotest: Update extant references to corpus.mail
Vladimir Panteleev [Thu, 17 Aug 2017 00:41:09 +0000 (00:41 +0000)]
test: Update extant references to corpus.mail

971cdc72cdb80f060193bc0914dc9badcc29696b renamed corpus.mail to
corpora.mail. Although 971cdc72cdb80f060193bc0914dc9badcc29696b
updated some of the remaining corpus.mail references, two remained,
causing the test suite to leave behind an unignored corpora.mail

3 years agoremove boolean "first" argument from format_part_sprinter
Daniel Kahn Gillmor [Fri, 14 Jul 2017 13:05:06 +0000 (15:05 +0200)]
remove boolean "first" argument from format_part_sprinter

This argument seems to be unused, and format_part_sprinter isn't
required to meet any specific API so it seems cleaner and simpler to
drop it.

3 years agotest: add test for ,S message without 'unread' in new.tags
David Bremner [Tue, 8 Aug 2017 16:35:08 +0000 (12:35 -0400)]
test: add test for ,S message without 'unread' in new.tags

This is arguably overkill, but it helps to understand the complicated
interactions here between maildir tags and configuration.

3 years agotest: add missing quotes in maildir-sync test.
David Bremner [Tue, 8 Aug 2017 16:35:07 +0000 (12:35 -0400)]
test: add missing quotes in maildir-sync test.

Oops. ';' is significant in the shell. Who knew.

3 years agoMerge branch 'release'
David Bremner [Thu, 17 Aug 2017 00:44:43 +0000 (21:44 -0300)]
Merge branch 'release'

merge in debian-only changes

3 years agocli/new: improve error reporting
David Bremner [Sat, 15 Jul 2017 02:01:26 +0000 (23:01 -0300)]
cli/new: improve error reporting

Recently a user reported a crash in notmuch new, but because of
missing error reporting, all they could say was "A Xapian exception
occured". This commit adds the extra information available about
the error message in the exception.

3 years agodebian: start changelog for next debian upload
David Bremner [Thu, 17 Aug 2017 00:38:26 +0000 (21:38 -0300)]
debian: start changelog for next debian upload

3 years agodo not use bullets in debian/NEWS
Daniel Kahn Gillmor [Thu, 20 Jul 2017 06:28:52 +0000 (08:28 +0200)]
do not use bullets in debian/NEWS

see lintian's debian-news-entry-uses-asterisk for justification

3 years agoremove obsolete lintian-override (see
Daniel Kahn Gillmor [Fri, 28 Jul 2017 18:45:05 +0000 (14:45 -0400)]
remove obsolete lintian-override (see

3 years agoMerge tag 'debian/0.25-6'
David Bremner [Tue, 15 Aug 2017 11:38:10 +0000 (08:38 -0300)]
Merge tag 'debian/0.25-6'

uploaded to unstable

3 years agodebian: actually stop shipping 50notmuch.el debian/0.25-6
David Bremner [Tue, 15 Aug 2017 10:52:47 +0000 (07:52 -0300)]
debian: actually stop shipping 50notmuch.el

3 years agoMerge tag 'debian/0.25-5'
David Bremner [Thu, 10 Aug 2017 11:08:49 +0000 (07:08 -0400)]
Merge tag 'debian/0.25-5'

uploaded to unstable

3 years agodebian upload 0.25-5 debian/0.25-5
David Bremner [Thu, 10 Aug 2017 10:44:07 +0000 (06:44 -0400)]
debian upload 0.25-5

fix typo in -4

3 years agotest: add broken tests for maildir syncing
David Bremner [Fri, 4 Aug 2017 21:38:45 +0000 (17:38 -0400)]
test: add broken tests for maildir syncing

Users should be able to specify synced tags in new.tags

3 years agoMerge tag 'debian/0.25-4'
David Bremner [Fri, 4 Aug 2017 22:43:33 +0000 (18:43 -0400)]
Merge tag 'debian/0.25-4'

uploaded to unstable

3 years agodebian: upload 0.25-4 debian/0.25-4
David Bremner [Fri, 4 Aug 2017 22:15:09 +0000 (18:15 -0400)]
debian: upload 0.25-4

replace notmuch-emacs with elpa-emacs as a recommend

3 years agoMerge tag 'debian/0.25-3'
David Bremner [Thu, 3 Aug 2017 14:59:32 +0000 (10:59 -0400)]
Merge tag 'debian/0.25-3'

uploaded to unstable

3 years agodebian: changelog stanza for 0.25-3 debian/0.25-3
David Bremner [Thu, 3 Aug 2017 13:26:34 +0000 (09:26 -0400)]
debian: changelog stanza for 0.25-3

3 years agodebian: add maintainer scripts to remove old startup file
David Bremner [Thu, 3 Aug 2017 13:20:37 +0000 (09:20 -0400)]
debian: add maintainer scripts to remove old startup file

We do it for notmuch and notmuch-emacs because the history is a bit
unclear. It seems to be safe to call when that conffile is not owned
by a given package

3 years agoadd "notmuch reindex" subcommand
Daniel Kahn Gillmor [Sun, 4 Jun 2017 12:32:35 +0000 (09:32 -0300)]
add "notmuch reindex" subcommand

This new subcommand takes a set of search terms, and re-indexes the
list of matching messages.

3 years agolib: add notmuch_message_reindex
Daniel Kahn Gillmor [Sun, 4 Jun 2017 12:32:34 +0000 (09:32 -0300)]
lib: add notmuch_message_reindex

This new function asks the database to reindex a given message.
The parameter `indexopts` is currently ignored, but is intended to
provide an extensible API to support e.g. changing the encryption or
filtering status (e.g. whether and how certain non-plaintext parts are

3 years agolib: add _notmuch_message_remove_indexed_terms
David Bremner [Sun, 4 Jun 2017 12:32:33 +0000 (09:32 -0300)]
lib: add _notmuch_message_remove_indexed_terms

Testing will be provided via use in notmuch_message_reindex

3 years agocli/search: print total number of files matched in summary output.
David Bremner [Sun, 4 Jun 2017 12:32:32 +0000 (09:32 -0300)]
cli/search: print total number of files matched in summary output.

The structured output formats already have all of the filenames. This
is an easy bit of UI change to make the multiple files visible.

3 years agolib: add notmuch_thread_get_total_files
David Bremner [Sun, 4 Jun 2017 12:32:31 +0000 (09:32 -0300)]
lib: add notmuch_thread_get_total_files

This is relatively inexpensive in terms of run time and implementation
cost as we are already traversing the list of messages in a thread.

3 years agolib: add notmuch_message_count_files
David Bremner [Sun, 4 Jun 2017 12:32:30 +0000 (09:32 -0300)]
lib: add notmuch_message_count_files

This operation is relatively inexpensive, as the needed metadata is
already computed by our lazy metadata fetching. The goal is to support
better UI for messages with multipile files.

3 years agolib: index message files with duplicate message-ids
David Bremner [Sun, 4 Jun 2017 12:32:29 +0000 (09:32 -0300)]
lib: index message files with duplicate message-ids

The corresponding xapian document just gets more terms added to it,
but this doesn't seem to break anything. Values on the other hand get
overwritten, which is a bit annoying, but arguably it is not worse to
take the values (from, subject, date) from the last file indexed
rather than the first.

3 years agotest: add known broken tests for duplicate message id
David Bremner [Sun, 4 Jun 2017 12:32:28 +0000 (09:32 -0300)]
test: add known broken tests for duplicate message id

There are many other problems that could be tested, but these ones we
have some hope of fixing because it doesn't require UI changes, just
indexing changes.

3 years agolib: refactor notmuch_database_add_message header parsing
David Bremner [Sun, 4 Jun 2017 12:32:27 +0000 (09:32 -0300)]
lib: refactor notmuch_database_add_message header parsing

This function is large and hard to understand and modify. Start to
break it down into meaningful pieces.

3 years agolib: factor out message-id parsing to separate file.
David Bremner [Sun, 4 Jun 2017 12:32:26 +0000 (09:32 -0300)]
lib: factor out message-id parsing to separate file.

This is really pure C string parsing, and doesn't need to be mixed in
with the Xapian/C++ layer. Although not strictly necessary, it also
makes it a bit more natural to call _parse_message_id from multiple
compilation units.

3 years agolib/n_d_add_message: refactor test for new/ghost messages
David Bremner [Sun, 4 Jun 2017 12:32:25 +0000 (09:32 -0300)]
lib/n_d_add_message: refactor test for new/ghost messages

The switch is easier to understand than the side effects in the if
test. It also potentially allows us more flexibility in breaking up
this function into smaller pieces, since passing private_status around
is icky.

3 years agolib: isolate n_d_add_message and helper functions into own file
David Bremner [Sun, 4 Jun 2017 12:32:24 +0000 (09:32 -0300)]
lib: isolate n_d_add_message and helper functions into own file

'' is becoming a monster, and it's hard to follow what the
various static functions are used for. It turns out that about 1/3 of
this file notmuch_database_add_message and helper functions not used
by any other function. This commit isolates this code into it's own

Some side effects of this refactoring:

- find_doc_ids becomes the non-static (but still private)
- a few instances of 'string' have 'std::' prepended, avoiding the
  need for 'using namespace std;' in the new file.

3 years agoMerge tag 'debian/0.25-2'
David Bremner [Sat, 29 Jul 2017 11:52:28 +0000 (07:52 -0400)]
Merge tag 'debian/0.25-2'

uploaded to unstable

3 years agodebian: update gmime dependencies debian/0.25-2
David Bremner [Wed, 26 Jul 2017 14:51:59 +0000 (10:51 -0400)]
debian: update gmime dependencies

- build against gmime 3.0 by preference
- drop gmime-2.4-dev, no longer supported upstream

3 years agoMerge tag 'debian/0.25-1'
David Bremner [Wed, 26 Jul 2017 14:02:16 +0000 (10:02 -0400)]
Merge tag 'debian/0.25-1'

notmuch Debian 0.25-1 upload (same as 0.25)

3 years agodebian: add changelog entry for 0.25 0.25 debian/0.25-1
David Bremner [Tue, 25 Jul 2017 11:30:24 +0000 (07:30 -0400)]
debian: add changelog entry for 0.25

3 years agoNEWS: set date
David Bremner [Tue, 25 Jul 2017 11:24:11 +0000 (07:24 -0400)]
NEWS: set date

3 years agoversion: bump to 0.25
David Bremner [Tue, 25 Jul 2017 11:21:29 +0000 (07:21 -0400)]
version: bump to 0.25

3 years agoNEWS: formatting fixups
David Bremner [Tue, 25 Jul 2017 11:16:20 +0000 (07:16 -0400)]
NEWS: formatting fixups

These are from Tomi, split from the previous commit

3 years agoNEWS for release 0.25: Emacs: support for stashing message timestamp
Tomi Ollila [Sun, 23 Jul 2017 19:38:14 +0000 (22:38 +0300)]
NEWS for release 0.25: Emacs: support for stashing message timestamp

3 years agoemacs: Add commentary for MELPA users
David Bremner [Tue, 11 Jul 2017 11:19:37 +0000 (08:19 -0300)]
emacs: Add commentary for MELPA users

We have a steady trickle of people using notmuch-emacs from melpa with
distro packages of notmuch, and then being confused when it doesn't
work. Try to warn people what a foot-gun this is; this commentary
should be copied to the melpa web site.

3 years agodebian: changelog for 0.25~rc1-2 debian/0.25_rc1-2
David Bremner [Tue, 18 Jul 2017 22:48:12 +0000 (19:48 -0300)]
debian: changelog for 0.25~rc1-2

3 years agodebian: finalize changelog for 0.25~rc1-1 0.25_rc1 debian/0.25_rc1-1
David Bremner [Tue, 18 Jul 2017 10:06:04 +0000 (07:06 -0300)]
debian: finalize changelog for 0.25~rc1-1

3 years agoversion: bump to 0.25~rc1
David Bremner [Tue, 18 Jul 2017 10:04:29 +0000 (07:04 -0300)]
version: bump to 0.25~rc1

3 years agodebian: allow emacs25 as a build depend
David Bremner [Mon, 17 Jul 2017 15:06:12 +0000 (12:06 -0300)]
debian: allow emacs25 as a build depend

It's a bit crazy to require emacs 24 installed just to build, when it
isn't required to run.

3 years agoemacs: convert remaining format-versions from 3 to 4
David Bremner [Mon, 17 Jul 2017 15:06:11 +0000 (12:06 -0300)]
emacs: convert remaining format-versions from 3 to 4

This is needed for consistent beheviour between notmuch built against
gmime-2.6 and gmime-3.0 w.r.t. error reporting.

3 years agofix the generated documentation output
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:05 +0000 (00:16 +0200)]
fix the generated documentation output

3 years agoFix orthography
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:02 +0000 (00:16 +0200)]
Fix orthography

3 years agouse modern debian/copyright
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:06 +0000 (00:16 +0200)]
use modern debian/copyright

3 years agoavoid false lintian warning about "iff"
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:04 +0000 (00:16 +0200)]
avoid false lintian warning about "iff"

3 years agoresolve lintian tag debhelper-but-no-misc-depends notmuch-emacs
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:03 +0000 (00:16 +0200)]
resolve lintian tag debhelper-but-no-misc-depends notmuch-emacs

This is likely not strictly necessary given that notmuch-emacs is a
transitional package.  But having a simple consistency until we
eventually remove the transitional notmuch-emacs package seems ok too,
and fewer arbitrary lintian warnings will make real lintian warnings
more visible.

3 years agofix Python capitalization
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:01 +0000 (00:16 +0200)]
fix Python capitalization

3 years agoexplicitly mark notmuch-emacs as transitional
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:00 +0000 (00:16 +0200)]
explicitly mark notmuch-emacs as transitional

3 years agoBump standards version to 4.0.0 (no changes needed)
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:15:59 +0000 (00:15 +0200)]
Bump standards version to 4.0.0 (no changes needed)

Some things that might be interesting (and are acceptable and
supported under 4.0.0, though not required) are:

 * supporting DEB_BUILD_OPTIONS tag nodoc wihle tagging build-deps (we
   could put python-sphinx into <!nodoc>, for example)

 * splitting out Build-Depends-Arch from Build-Depends

3 years agoDrop duplicate Section header for notmuch-vim
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:15:58 +0000 (00:15 +0200)]
Drop duplicate Section header for notmuch-vim

Resolves lintian binary-control-field-duplicates-source

3 years agoNEWS: drop redundant mention of dump fix
David Bremner [Tue, 18 Jul 2017 09:36:31 +0000 (06:36 -0300)]
NEWS: drop redundant mention of dump fix

This actually happened in 0.24.x.

3 years agoMerge tag 'debian/0.25_rc0-2'
David Bremner [Mon, 17 Jul 2017 12:20:10 +0000 (09:20 -0300)]
Merge tag 'debian/0.25_rc0-2'

merge 32 bit compilation fix

3 years agodebian: changelog stanza for 0.25~rc0-2 debian/0.25_rc0-2
David Bremner [Mon, 17 Jul 2017 11:50:08 +0000 (08:50 -0300)]
debian: changelog stanza for 0.25~rc0-2

3 years agoutil: make g_mime_utils_header_decode_date_unix match prototype
David Bremner [Mon, 17 Jul 2017 11:47:18 +0000 (08:47 -0300)]
util: make g_mime_utils_header_decode_date_unix match prototype

The problem shows up on 32 bit architectures where sizeof(time_t) !=
sizeof(gint64).  Upcasting the 32 bit time_t to a 64 bit integer
should hopefully be safe.

3 years agoNEWS: Initial writeup for my contributions to 0.25
David Bremner [Mon, 17 Jul 2017 01:43:11 +0000 (22:43 -0300)]
NEWS: Initial writeup for my contributions to 0.25

3 years agoMerge tag '0.25_rc0'
David Bremner [Sun, 16 Jul 2017 12:08:39 +0000 (09:08 -0300)]
Merge tag '0.25_rc0'

notmuch 0.25~rc0 release

3 years agodebian: note two closed bugs in changelog 0.25_rc0 debian/0.25_rc0-1
David Bremner [Sun, 16 Jul 2017 11:49:06 +0000 (08:49 -0300)]
debian: note two closed bugs in changelog

3 years agodebian: don't create obsolete bash completion dir
David Bremner [Sun, 16 Jul 2017 11:45:55 +0000 (08:45 -0300)]
debian: don't create obsolete bash completion dir

3 years agodebian: set distribution to experimental, finalize changelog
David Bremner [Sun, 16 Jul 2017 11:20:15 +0000 (08:20 -0300)]
debian: set distribution to experimental, finalize changelog

3 years agodebian: add more c++ gunk to symbols file
David Bremner [Sun, 16 Jul 2017 11:18:19 +0000 (08:18 -0300)]
debian: add more c++ gunk to symbols file

3 years agodebian: bump changelog version, mention SONAME bump
David Bremner [Sun, 16 Jul 2017 11:08:18 +0000 (08:08 -0300)]
debian: bump changelog version, mention SONAME bump

3 years agoNEWS: start entry for 0.25
David Bremner [Sun, 16 Jul 2017 11:02:51 +0000 (08:02 -0300)]
NEWS: start entry for 0.25

3 years agoversion: bump version to 0.25~rc0
David Bremner [Sun, 16 Jul 2017 11:01:42 +0000 (08:01 -0300)]
version: bump version to 0.25~rc0

3 years agocrypto: clean up unused definitions in gmime 3.0
David Bremner [Sat, 15 Jul 2017 23:01:46 +0000 (01:01 +0200)]
crypto: clean up unused definitions in gmime 3.0

based on the same patch from dkg as the previous commit.

3 years agocrypto: Avoid explicit handling of GMimeCryptoContext in gmime 3
David Bremner [Sat, 15 Jul 2017 23:01:45 +0000 (01:01 +0200)]
crypto: Avoid explicit handling of GMimeCryptoContext in gmime 3

gmime 3.0 knows how to select the correct GMimeCryptoContext
automatically, so a bunch of the code in notmuch can be dropped in
that case.

The #ifdef removal of the crypto stuff is better than #define aliasing
in gmime-extra.h for this stuff.  When built against gmime 3.0:

    * it reduces compiled code, and
    * it avoids initializing unused gpgme contexts

(based on a patch from dkg)

3 years agocli/crypto: eliminated compiler warnings about unused arguments
David Bremner [Sat, 15 Jul 2017 23:01:44 +0000 (01:01 +0200)]
cli/crypto: eliminated compiler warnings about unused arguments

These are due to (excessively?) fancy macro definitions in gmime-extra.h

3 years agocli/crypto: treat failure to create a crypto context as fatal.
David Bremner [Sat, 15 Jul 2017 23:01:43 +0000 (01:01 +0200)]
cli/crypto: treat failure to create a crypto context as fatal.

Silently ignoring signed/encrypted parts seems like the wrong idea,
and it also complicates future gmime-3.0 compatibility changes.

3 years agoemacs: change default for notmuch-crypto-process-mime to t
David Bremner [Wed, 12 Jul 2017 10:48:18 +0000 (07:48 -0300)]
emacs: change default for notmuch-crypto-process-mime to t

There are some cases like remote usage where this might cause
problems, but those users can easily customize the variable. The
inconvenience seems to be outweighed by the security benefit for most

3 years agoNEWS: a few formatting updates for 0.24 news items (wiki compatibility)
Tomi Ollila [Thu, 13 Jul 2017 17:35:34 +0000 (20:35 +0300)]
NEWS: a few formatting updates for 0.24 news items (wiki compatibility)

- removed 7 trailing dots -- to make those lines subsection headers

- converted some (mime type) text to monospace

- removed one extra space

3 years agoclean up use of constants in g_mime_multipart_ wrappers
Daniel Kahn Gillmor [Fri, 14 Jul 2017 13:12:01 +0000 (15:12 +0200)]
clean up use of constants in g_mime_multipart_ wrappers

When compiling as C code (instead of C++) against gmime 3.0, gcc gives
errors like the following:

    error: invalid conversion from ‘int’ to ‘GMimeDecryptFlags’ [-fpermissive]

so use explicit *_NONE values instead.

3 years agoconfig: deprecate/drop crypto.gpg_path under gmime 2.6/3.0
Daniel Kahn Gillmor [Fri, 14 Jul 2017 13:12:00 +0000 (15:12 +0200)]
config: deprecate/drop crypto.gpg_path under gmime 2.6/3.0

gmime 3.0 no longer offers a means to set the path for gpg.

Users can set $PATH anyway if they want to pick a
differently-installed gpg (e.g. /usr/local/bin/gpg), so this isn't
much of a reduction in functionality.

The one main difference is for people who have tried to use "gpg2" to
make use of gpg 2.1, but that isn't usefully co-installable anyway.