notmuch
5 years agorequire xapian >= 1.2.6
David Bremner [Wed, 5 Oct 2016 00:35:23 +0000 (21:35 -0300)]
require xapian >= 1.2.6

It seems that no-one tried to compile without Xapian compact support
since March of 2015, since that's when I introduced a syntax error in
that branch of the ifdef.

Given the choice of maintaining this underused branch of code, or
bumping the Xapian dependency to a version from 2011, it seems
reasonable to do the latter.

5 years agodebian: changelog stanza for 0.23-2
David Bremner [Thu, 6 Oct 2016 00:27:17 +0000 (21:27 -0300)]
debian: changelog stanza for 0.23-2

6 years agodebian: changelog stanza for 0.23-1 0.23
David Bremner [Tue, 4 Oct 2016 01:47:21 +0000 (22:47 -0300)]
debian: changelog stanza for 0.23-1

6 years agoNEWS: bump date to today
David Bremner [Tue, 4 Oct 2016 01:43:23 +0000 (22:43 -0300)]
NEWS: bump date to today

6 years agoversion: bump to 0.23
David Bremner [Tue, 4 Oct 2016 01:40:22 +0000 (22:40 -0300)]
version: bump to 0.23

6 years agolib: bump minor version to mark added symbols
David Bremner [Sun, 2 Oct 2016 01:11:56 +0000 (22:11 -0300)]
lib: bump minor version to mark added symbols

This should not change the SONAME, and therefore won't change the
dynamic linking behaviour, but it may help some users debug missing
symbols in case their libnotmuch is too old.

6 years agodebian: changelog stanza for 0.23~rc1-1 0.23_rc1 debian/0.23_rc1-1
David Bremner [Fri, 30 Sep 2016 10:21:09 +0000 (07:21 -0300)]
debian: changelog stanza for 0.23~rc1-1

6 years agoversion: update to 0.23~rc1
David Bremner [Fri, 30 Sep 2016 10:18:04 +0000 (07:18 -0300)]
version: update to 0.23~rc1

6 years agoconfigure: set platform variables also when `uname` is unrecognized
Tomi Ollila [Thu, 29 Sep 2016 13:12:49 +0000 (16:12 +0300)]
configure: set platform variables also when `uname` is unrecognized

Since commit

124a67e96ecab5495c0f17b6875d53dfd67ff137: configure: add set -u

all variables must be set before their expansion are attempted. These
2 variables: "platform" and "linker_resolves_library_dependencies" were
not given value in the final 'else' branch when platform check failed
due to unrecognized kernel name (output of `uname`). Now those two are
given reasonable non-empty values.

6 years agoemacs: fcc: say we are doing Fcc
Mark Walters [Thu, 29 Sep 2016 13:44:04 +0000 (14:44 +0100)]
emacs: fcc: say we are doing Fcc

Since doing the Fcc with notmuch insert could be slow (if the indexing
takes some time) add a message saying we are doing it.

6 years agoemacs: document notmuch-fcc-dirs
Mark Walters [Wed, 28 Sep 2016 10:03:46 +0000 (11:03 +0100)]
emacs: document notmuch-fcc-dirs

This updates the docstring for the variable notmuch-fcc-dirs to match
the new insert code.

6 years agoNEWS: add news for fcc insert and address completion changes
Mark Walters [Wed, 28 Sep 2016 12:33:54 +0000 (13:33 +0100)]
NEWS: add news for fcc insert and address completion changes

6 years agolib/database.cc: fix misleading indentation
Tomi Ollila [Tue, 27 Sep 2016 15:06:52 +0000 (18:06 +0300)]
lib/database.cc: fix misleading indentation

Found by gcc 6.1.1 -Wmisleading-indentation option (set by -Wall).

6 years agoNEWS: emacs notmuch-show-resend-message
Tomi Ollila [Tue, 27 Sep 2016 17:24:41 +0000 (20:24 +0300)]
NEWS: emacs notmuch-show-resend-message

6 years agoNEWS: mention message properties API, dump/restore
David Bremner [Sun, 25 Sep 2016 11:36:52 +0000 (08:36 -0300)]
NEWS: mention message properties API, dump/restore

6 years agoNEWS: fix headline for go bindings NEWS
David Bremner [Sun, 25 Sep 2016 11:33:26 +0000 (08:33 -0300)]
NEWS: fix headline for go bindings NEWS

6 years agoNEWS: note notmuch-reply refactor
David Bremner [Sun, 25 Sep 2016 11:30:49 +0000 (08:30 -0300)]
NEWS: note notmuch-reply refactor

6 years agoNEWS: note dropping of User-Agent header
David Bremner [Sun, 25 Sep 2016 11:22:50 +0000 (08:22 -0300)]
NEWS: note dropping of User-Agent header

6 years agoNEWS: document mtime bugfix
David Bremner [Sun, 25 Sep 2016 11:12:40 +0000 (08:12 -0300)]
NEWS: document mtime bugfix

6 years agoemacs: tree: make b bounce a message and backspace scroll message pane up
Mark Walters [Sun, 25 Sep 2016 07:18:10 +0000 (08:18 +0100)]
emacs: tree: make b bounce a message and backspace scroll message pane up

This tweaks the keybindings in tree-mode. It make b do bounce/resend
matching show-mode. Since b was already bound to scroll message pane
back, we now use backspace for that.

This means space/backspace scroll the message pane forwards/backwards,
and page-up/page-down scrolls the tree pane forwards/backwards.

6 years agodebian: update symbols for 0.23 0.23_rc0 debian/0.23_rc0-1
David Bremner [Mon, 26 Sep 2016 10:39:25 +0000 (07:39 -0300)]
debian: update symbols for 0.23

New sub-APIs: config, built_with, message_property. A new exception used
internally. Mark the exception as optional, as it only shows up when
built against Xapian supporting FieldProcessors

6 years agodebian: changelog stanza for 0.23~rc0-1
David Bremner [Mon, 26 Sep 2016 10:30:15 +0000 (07:30 -0300)]
debian: changelog stanza for 0.23~rc0-1

6 years agoversion: bump to 0.23~rc0
David Bremner [Mon, 26 Sep 2016 10:22:21 +0000 (07:22 -0300)]
version: bump to 0.23~rc0

6 years agoemacs: tag deleted face bugfix
Mark Walters [Sun, 18 Sep 2016 10:57:32 +0000 (11:57 +0100)]
emacs: tag deleted face bugfix

Commit d25d33ff cleaned up some of the tag face code. However, for the
face notmuch-tag-deleted it used the test

((class color) (supports :strike-through))

to decide whether to use red strikethrough or inverse-video (emacs in
a terminal typically doesn't support red strikethrough, but in X it does).

However, it seems that test often returns true even though red
strikethrough is not supported. This breaks the tag update code -- the
wrong thing is displayed to the user.

Thus we make the test explicitly more specific, changing the test to

((class color) (supports :strike-through "red"))

6 years agotest: test-lib.sh: use $BASH instead of ${SHELL-sh} to relaunch
Tomi Ollila [Sat, 24 Sep 2016 12:43:27 +0000 (15:43 +0300)]
test: test-lib.sh: use $BASH instead of ${SHELL-sh} to relaunch

In case of the test script is to be relaunced under valgrind, or --tee
is requested, use the $BASH shell variable to locate the command
interpreter. The $SHELL variable is re-set by non-interactive shells
so in case the shell uses some other shell (e.g. zsh) for interactive
use these bash scripts continue to work.

6 years agolib: add talloc reference from string map iterator to map
David Bremner [Fri, 23 Sep 2016 09:33:19 +0000 (06:33 -0300)]
lib: add talloc reference from string map iterator to map

This is needed so that when the map is modified during traversal, and
thus unlinked by the database code, the map is not disposed of until the
iterator is done with it.

6 years agoemacs: tree: make jump close message pane
Mark Walters [Mon, 19 Sep 2016 09:39:49 +0000 (10:39 +0100)]
emacs: tree: make jump close message pane

j is in the global notmuch keymap bound to notmuch jump. In tree-mode
it makes sense to close the message pane first (otherwise the new
search runs in the small top pane of tree-mode).

6 years agotest/emacs: add broken test for message replying to msg to self
David Bremner [Tue, 13 Sep 2016 02:24:43 +0000 (23:24 -0300)]
test/emacs: add broken test for message replying to msg to self

This is a strange corner case where the removing of the user's address
from the To: header does the wrong thing. If we think it is
worth (eventually) fixing, this test can serve as a reminder.

6 years agoNEWS: fix markup of CONSTANTS_WITH_UNDERSCORES
David Bremner [Fri, 23 Sep 2016 23:58:32 +0000 (20:58 -0300)]
NEWS: fix markup of CONSTANTS_WITH_UNDERSCORES

Alas, I did not notice when when I originally applied the NEWS patch

6 years agoNEWS: news for Xapian 1.4 enabled features
David Bremner [Sat, 17 Sep 2016 13:07:44 +0000 (10:07 -0300)]
NEWS: news for Xapian 1.4 enabled features

In fact some of these features are available in Xapian 1.3.x development
releases, but these are not really widely packaged. In any case, the
experts who are using development releases of Xapian can figure that
out.

6 years agotest: fix printf format
David Bremner [Thu, 22 Sep 2016 11:11:42 +0000 (08:11 -0300)]
test: fix printf format

notmuch_status_t is an integer type, printing it as a string is a very
bad idea.

6 years agobuild system: choose gnu99 as a C standard
David Bremner [Wed, 21 Sep 2016 23:09:14 +0000 (20:09 -0300)]
build system: choose gnu99 as a C standard

Apparently pre 5.1 gcc defaulted to gnu89, but we decided it was ok to
use some c99 features.

'-std=c99' by itself is not enough for notmuch to compile.

'-std=gnu99' seems to work with clang and gcc, so I'm not convinced
configuration support is needed.

6 years agoadd property: query prefix to search for specific properties
Daniel Kahn Gillmor [Fri, 8 Jul 2016 09:15:36 +0000 (11:15 +0200)]
add property: query prefix to search for specific properties

We want to be able to query the properties directly, like:

   notmuch count property:foo=bar

which should return a count of messages where the property with key
"foo" has value equal to "bar".

6 years agocli: optionally restore message properties from dump file
David Bremner [Mon, 13 Jun 2016 01:05:55 +0000 (22:05 -0300)]
cli: optionally restore message properties from dump file

This somewhat mimics the config line parsing, except there can be
arbitrarily many key value pairs, so one more level of looping is
required.

6 years agoCLI: add properties to dump output
David Bremner [Mon, 13 Jun 2016 01:05:54 +0000 (22:05 -0300)]
CLI: add properties to dump output

Part of providing extensibility via properties is to make sure that user
data is not lost. Thus we need to be able to dump and restore
properties.

6 years agoCLI: refactor dumping of tags.
David Bremner [Mon, 13 Jun 2016 01:05:53 +0000 (22:05 -0300)]
CLI: refactor dumping of tags.

This is mainly code movement, to make room in the loop over messages for
dumping properties.

6 years agolib: iterator API for message properties
David Bremner [Mon, 13 Jun 2016 01:05:52 +0000 (22:05 -0300)]
lib: iterator API for message properties

This is a thin wrapper around the string map iterator API just introduced.

6 years agolib: extend private string map API with iterators
David Bremner [Mon, 13 Jun 2016 01:05:51 +0000 (22:05 -0300)]
lib: extend private string map API with iterators

Support for prefix based iterators is perhaps overengineering, but I
wanted to mimic the existing database_config API.

6 years agolib: basic message-property API
David Bremner [Mon, 13 Jun 2016 01:05:50 +0000 (22:05 -0300)]
lib: basic message-property API

Initially, support get, set and removal of single key/value pair, as
well as removing all properties.

6 years agolib: private string map (associative array) API
David Bremner [Mon, 13 Jun 2016 01:05:49 +0000 (22:05 -0300)]
lib: private string map (associative array) API

The choice of array implementation is deliberate, for future iterator support

6 years agolib: read "property" terms from messages.
David Bremner [Mon, 13 Jun 2016 01:05:48 +0000 (22:05 -0300)]
lib: read "property" terms from messages.

This is a first step towards providing an API to attach
arbitrary (key,value) pairs to messages and retrieve all of the values
for a given key.

6 years agotest: silence the output of notmuch new mid-test
Jani Nikula [Sun, 11 Sep 2016 15:42:25 +0000 (18:42 +0300)]
test: silence the output of notmuch new mid-test

Fix this during test run:

T470-missing-headers: Testing messages with missing headers
Added 2 new messages to the database.

6 years agoemacs: reply: remove wrong sig/enc status buttons
Mark Walters [Tue, 13 Sep 2016 01:45:58 +0000 (22:45 -0300)]
emacs: reply: remove wrong sig/enc status buttons

This stops the (usually incorrect) sigstatus and encstatus buttons
appearing when replying in emacs, and updates the test suite to match.

Overriding the status button functions is a little unusual but much
less intrusive than passing an argument all the way down the call
chain. It also makes it clear exactly what it does.

We also hide the application/pgp-encrypted part as it can only contain
"Version: 1". We do this in notmuch show, which means it also happens
when replying.

6 years agotest/crypto: test reply to encrypted message in emacs
David Bremner [Tue, 13 Sep 2016 01:45:57 +0000 (22:45 -0300)]
test/crypto: test reply to encrypted message in emacs

This test considers the extra output about encryption/signature status
as a bug, to be fixed in the next commit

6 years agocli/reply: only pass gmime message to add recipients to reply message
Jani Nikula [Tue, 13 Sep 2016 17:14:22 +0000 (20:14 +0300)]
cli/reply: only pass gmime message to add recipients to reply message

The notmuch message is no longer needed. Simplify.

6 years agocli/reply: pass gmime message to Reply-To: redundancy detection
Jani Nikula [Tue, 13 Sep 2016 17:14:21 +0000 (20:14 +0300)]
cli/reply: pass gmime message to Reply-To: redundancy detection

Use gmime message instead of notmuch message in Reply-To: redundancy
detection. This allows us to easily iterate over all recipient email
addresses accurately, instead of just scanning for strings in the
relevant message headers. This improves the accuracy of the detection
in many ways.

This also makes the notmuch message parameter to get_sender()
unused. This will be cleaned up in a follow-up patch to not make too
many changes here at once.

6 years agocli/reply: do not parse Reply-To: header into internet address list twice
Jani Nikula [Tue, 13 Sep 2016 17:14:20 +0000 (20:14 +0300)]
cli/reply: do not parse Reply-To: header into internet address list twice

Avoid parsing Reply-To: header into internet address list twice. Move
the parsing outside of reply_to_header_is_redundant(), and pass the
parsed internet address list in as parameter. This also avoids leaking
the memory of one copy of the internet address list.

6 years agocli/reply: return internet address list from get header funcs
Jani Nikula [Tue, 13 Sep 2016 17:14:19 +0000 (20:14 +0300)]
cli/reply: return internet address list from get header funcs

Pass in GMimeMessage to simplify To/Cc/Bcc headers. We'll eventually
remove the notmuch message passing altogether, but keep both for now
to not make too big changes at once.

Getting the headers from GMimeMessage using GMime functions fixes the
error on duplicate Cc headers reported by Daniel Kahn Gillmor
<dkg@fifthhorseman.net> in id:87d1ngv95p.fsf@alice.fifthhorseman.net.

Get rid of an intermediate function.

The small annoyance is the ownership differences in the address lists.

6 years agocli/reply: check for NULL list first in scan_address_list()
Jani Nikula [Tue, 13 Sep 2016 17:14:18 +0000 (20:14 +0300)]
cli/reply: check for NULL list first in scan_address_list()

Support passing NULL list later on. Also use it to simplify the
recursion.

6 years agocli/reply: use dedicated functions for reply to mapping
Jani Nikula [Tue, 13 Sep 2016 17:14:17 +0000 (20:14 +0300)]
cli/reply: use dedicated functions for reply to mapping

The main motivation here is to move the special casing around
reply-to/from handling into a function of its own, clarifying the main
logic.

6 years agocli/reply: reduce the reply format abstractions
Jani Nikula [Tue, 13 Sep 2016 17:14:16 +0000 (20:14 +0300)]
cli/reply: reduce the reply format abstractions

Now that we've made the various reply formats quite similar to each
other, there's no point in keeping the abstractions. They are now
close enough to be put in one function.

For now, a mime node will be uselessly created for the headers-only
case, but this is insignificant, and may change in the future.

6 years agocli/reply: reuse create_reply_message() also for headers-only format
Jani Nikula [Tue, 13 Sep 2016 17:14:15 +0000 (20:14 +0300)]
cli/reply: reuse create_reply_message() also for headers-only format

Add an option for "limited" headers for the (slightly misleadingly
named) headers-only format. There should be no functional changes.

6 years agocli/reply: make references header creation easier to follow
Jani Nikula [Tue, 13 Sep 2016 17:14:14 +0000 (20:14 +0300)]
cli/reply: make references header creation easier to follow

Just use strdup when original references is not available, instead of
trying to cram everything into a monster asprintf. There should be no
functional changes.

6 years agocli/reply: reorganize create_reply_message()
Jani Nikula [Tue, 13 Sep 2016 17:14:13 +0000 (20:14 +0300)]
cli/reply: reorganize create_reply_message()

Again, in preparation for later unification, reorganize
create_reply_message() to be more similar to the headers-only format
reply code in notmuch_reply_format_headers_only(). Due to "pretty"
header ordering, there should be no change in output. There should be
no functional changes.

6 years agocli/reply: unify reply format functions
Jani Nikula [Tue, 13 Sep 2016 17:14:12 +0000 (20:14 +0300)]
cli/reply: unify reply format functions

Prepare for further future unification by making the code similar. The
only functional change is that errors in mime_node_open() also break
execution in default reply format.

6 years agocli/reply: reuse show_reply_headers() in headers-only format
Jani Nikula [Tue, 13 Sep 2016 17:14:11 +0000 (20:14 +0300)]
cli/reply: reuse show_reply_headers() in headers-only format

Align the code with default format reply. There should be no changes
in output.

6 years agocli/reply: push notmuch reply format abstraction lower in the stack
Jani Nikula [Tue, 13 Sep 2016 17:14:10 +0000 (20:14 +0300)]
cli/reply: push notmuch reply format abstraction lower in the stack

There's quite a bit of duplication, and some consequent deviation,
between the various notmuch reply format code paths. Perform the query
and message iteration in common code, and make the format specific
functions operate on single messages.

There should be no functional changes.

6 years agotest: add known broken test for reply to message with multiple Cc headers
Jani Nikula [Tue, 13 Sep 2016 17:14:09 +0000 (20:14 +0300)]
test: add known broken test for reply to message with multiple Cc headers

As Daniel Kahn Gillmor <dkg@fifthhorseman.net> reports in
id:87d1ngv95p.fsf@alice.fifthhorseman.net, notmuch show combines
multiple Cc: fields into one, while notmuch reply does not. While such
messages are in violation of RFC 5322, it would be reasonable to
expect notmuch to be consistent. Add a known broken test to document
this expectation.

This also starts a new "broken" corpus for messages which are broken.

Details:

The original message is formatted using the message printing in
notmuch-show.c. For Cc:, it uses g_mime_message_get_recipients(),
which apparently combines all Cc: fields into one internally.

The addresses in the reply headers, OTOH, are based on headers queried
through libnotmuch. It boils down to g_mime_object_get_header() in
lib/message-file.c, which returns only the first occurence of header.

6 years agotest: make it possible to have multiple corpora
Jani Nikula [Tue, 13 Sep 2016 17:14:08 +0000 (20:14 +0300)]
test: make it possible to have multiple corpora

We largely use the corpus under test/corpus for
testing. Unfortunately, many of our tests have grown to depend on
having exactly this set of messages, making it hard to add new message
files for testing specific cases.

We do use a lot of add_message from within the tests, but it's not
possible to use that for adding broken messages, and adding several
messages at once can get unwieldy.

Move the basic corpus under tests/corpora/default, and make it
possible to add new, independent corpora along its side. This means
tons of renames with a few tweaks to add_email_corpus function in
test-lib.sh to let tests specify which corpus to use.

6 years agoclean up spelling
Daniel Kahn Gillmor [Mon, 12 Sep 2016 02:23:48 +0000 (04:23 +0200)]
clean up spelling

6 years agoemacs: make the remaining faces configurable.
Matt Armstrong [Sun, 14 Aug 2016 22:17:42 +0000 (15:17 -0700)]
emacs: make the remaining faces configurable.

I believe this moves all "anonymous" face specifications in notmuch
code into a configurable defface.

6 years agoemacs: implement notmuch-search-color-line with dolist.
Matt Armstrong [Sun, 14 Aug 2016 22:13:00 +0000 (15:13 -0700)]
emacs: implement notmuch-search-color-line with dolist.

While passing a lambda to mapc is idiomatic elisp, dolist is easier
to understand, and there are a few other calls to it in this file.

6 years agoemacs: wash: make word-wrap bound message width
Mark Walters [Sat, 6 Aug 2016 15:29:34 +0000 (16:29 +0100)]
emacs: wash: make word-wrap bound message width

Previously if notmuch-wash-wrap-lines-length was set then all messages
would be wrapped at this value (or window-width if that is
smaller). This was done regardless of the message's depth in a thread --
for example, if the n.w.w.l.l is 80 and the messages depth is 20
(so indented 20 by default) the messages text only got 60 characters
of space.

This commit changes that so a message always gets the full n.w.w.l.l
of width regardless of its indentation (unless that goes over
window-width of course).

6 years agoemacs: show: let the user override the mime-type of an attachment
Mark Walters [Mon, 11 Jul 2016 07:49:19 +0000 (08:49 +0100)]
emacs: show: let the user override the mime-type of an attachment

This allows the user to override the mime-type of a part in the show
buffer. This takes the simple option of displaying the part with the
specified mime-type in its own buffer (in view mode). This avoids
further complicating the part handling code.

Bound to ". m" (i.e., m in the part map). Then the user can either
enter a mime-type (with completion to all mime types that mailcap (and
thus notmuch) knows about, or press return for the default choice of
text/plain.

6 years agoemacs: use define-derived-mode for defining modes.
Steven Allen [Sun, 28 Aug 2016 18:41:22 +0000 (14:41 -0400)]
emacs: use define-derived-mode for defining modes.

This sets up and runs all the correct hooks and reduces some redundancy.

6 years agoMerge branch 'release'
David Bremner [Fri, 9 Sep 2016 01:18:37 +0000 (22:18 -0300)]
Merge branch 'release'

hand fixed conflicts with NEWS

6 years agoNEWS: add news for 0.22.2 0.22.2 debian/0.22.2-1
David Bremner [Thu, 8 Sep 2016 22:22:12 +0000 (19:22 -0300)]
NEWS: add news for 0.22.2

6 years agodebian: add changelog stanza for 0.22.2-1
David Bremner [Thu, 8 Sep 2016 22:11:26 +0000 (19:11 -0300)]
debian: add changelog stanza for 0.22.2-1

6 years agoversion: bump to 0.22.2
David Bremner [Thu, 8 Sep 2016 22:05:12 +0000 (19:05 -0300)]
version: bump to 0.22.2

6 years agotest/crypto: hard code fingerprint
David Bremner [Thu, 8 Sep 2016 12:03:15 +0000 (09:03 -0300)]
test/crypto: hard code fingerprint

Originally the intent was to make the test more robust against changing
test keys. It turns out that (unscientifically) gpg --with-colons output
changes more often than our test key. Rather than making the script more
complex, just hard code the fingerprint.

This fixes Debian bug #847013; I expect similar test failures as other
distros adopt gnupg 2.1.15

6 years agoemacs: maildir: add the actual insert code
Mark Walters [Sat, 3 Sep 2016 22:59:43 +0000 (23:59 +0100)]
emacs: maildir: add the actual insert code

With all the preparation it is now simple to add the actual insert
code. Since insert can fail for many reasons we let the user decide
interactively deal with it.

We modify test-lib.el to set file fcc, so that all the old tests and
emacs_fcc_message from test-lib.sh still work

6 years agoModify our local copy of message-do-fcc
Mark Walters [Sat, 3 Sep 2016 22:59:42 +0000 (23:59 +0100)]
Modify our local copy of message-do-fcc

Since we also need to use this code for the draft handling we split
message-do-fcc into convenient sub-chunks (functions or macros as
appropriate).

6 years agoemacs: simplify our local copy of message-do-fcc
Mark Walters [Sat, 3 Sep 2016 22:59:41 +0000 (23:59 +0100)]
emacs: simplify our local copy of message-do-fcc

message-do-fcc has lots of functionality we don't need, so remove it.

6 years agoemacs: maildir import message-do-fcc
Mark Walters [Sat, 3 Sep 2016 22:59:40 +0000 (23:59 +0100)]
emacs: maildir import message-do-fcc

We will need our own local copy of message-do-fcc so this commit just
copies the code straight from message.el so that it is easier to see
our local changes coming in the next commit.

6 years agoemacs: maildir-fcc: prepare for use of notmuch insert
Mark Walters [Sat, 3 Sep 2016 22:59:39 +0000 (23:59 +0100)]
emacs: maildir-fcc: prepare for use of notmuch insert

We move some code around in preparation for the use of notmuch
insert. In particular, we move the check for a valid maildir for the
fcc to when the message is sent rather than when the fcc header is
inserted. The main motivation is consistency with the insert version
(coming later) where we cannot check the validity until send.

We allow the user some chance to correct the header; the choice here
is intended to be consistent with the insert version to come.

6 years agoemacs: notmuch-check-exit-status bugfix
Mark Walters [Sat, 3 Sep 2016 22:59:38 +0000 (23:59 +0100)]
emacs: notmuch-check-exit-status bugfix

This function prints diagnostic information in the event of an
error. However, one of the callers has an optional :stdin-string
keyword argument. This causes the error printing routine to error
itself.

Rather than reach notmuch-check-exit-status about the possible keyword
arguments (currently only one but could be more in the future) this
commit just tells notmuch-check-exit-status how to print non-string arguments.

6 years agoMakefile.local: use $(wildcard) to check existence of ${srcdir}/.git
Tomi Ollila [Wed, 25 May 2016 21:04:32 +0000 (00:04 +0300)]
Makefile.local: use $(wildcard) to check existence of ${srcdir}/.git

With this GNU Make construct one shell invocation can be skipped
and code looks shorter (narrower). This would now match to .git
being other file type than regular file or directory (or symlink
to those), but that is not a use case anyone should expect users
to do.

6 years agoMakefile.local: make IS_GIT simply expanded
Tomi Ollila [Wed, 25 May 2016 21:04:31 +0000 (00:04 +0300)]
Makefile.local: make IS_GIT simply expanded

By using ':=' while setting IS_GIT it is expanded to 'yes' or 'no' at
that point (and not every time when $(IS_GIT) is referenced).

6 years agoemacs: address: allow internal completion on an individual basis
Mark Walters [Fri, 20 May 2016 20:13:03 +0000 (21:13 +0100)]
emacs: address: allow internal completion on an individual basis

This commit makes two changes. The first allows the user to override
an external completion method with the internal notmuch address based
completion for an individual buffer.

Secondly, if the user has company-mode enabled then it sets up company
mode (based on internal completion) but disables the automatic timeout
completion -- the user can still activate it in when desired with
standard company commands such as company-complete.

6 years agoemacs: address completion, allow sender/recipient and filters
Mark Walters [Fri, 20 May 2016 20:13:02 +0000 (21:13 +0100)]
emacs: address completion, allow sender/recipient and filters

This commit lets the user customize the address completion. It makes
two changes.

The first change controls whether to build the address completion list
based on messages you have sent or you have received (the latter is
much faster).

The second change add a possible filter query to limit the messages
used -- for example, setting this to date:1y..  would limit the
address completions to addresses used in the last year. This speeds up
the address harvest and may also make the search less cluttered as old
addresses may well no longer be valid.

6 years agoNEWS: fix go bindings NEWS
David Bremner [Sun, 4 Sep 2016 11:04:48 +0000 (08:04 -0300)]
NEWS: fix go bindings NEWS

Move to correct release. Mention moving to contrib. Drop mention of
formatting fixes, as those are not yet applied.

6 years agoupdated NEWS
laochailan [Sun, 31 May 2015 12:02:15 +0000 (14:02 +0200)]
updated NEWS

6 years agofixed wrong constant values
laochailan [Sun, 31 May 2015 12:02:12 +0000 (14:02 +0200)]
fixed wrong constant values

before, they were both zero, so getting a read-writeable handle was
impossible.

6 years agoAdded thread bindings to go bindings
laochailan [Sun, 31 May 2015 12:02:11 +0000 (14:02 +0200)]
Added thread bindings to go bindings

6 years agobindings: move go bindings to contrib
David Bremner [Tue, 23 Aug 2016 23:50:05 +0000 (20:50 -0300)]
bindings: move go bindings to contrib

This signals two things, an intent to be more liberal about accepting
patches, and an intent to stop distributing the bindings if maintenance
doesn't pick up.

6 years agocontrib: remove old copy of vim front end
David Bremner [Tue, 23 Aug 2016 23:40:51 +0000 (20:40 -0300)]
contrib: remove old copy of vim front end

Having two in the tree is just confusing. And the viml one is even more
out of date than the ruby one.

6 years agolib: update cached mtime in notmuch_directory_set_mtime
David Bremner [Mon, 27 Jun 2016 20:43:04 +0000 (22:43 +0200)]
lib: update cached mtime in notmuch_directory_set_mtime

Without this change, the following code fails

  notmuch_directory_set_mtime(dir, 12345);
  assert(notmuch_directory_get_mtime(dir) == 12345);

6 years agodoc: update cross references for notmuch.1
David Bremner [Wed, 29 Jun 2016 19:39:11 +0000 (21:39 +0200)]
doc: update cross references for notmuch.1

In particular add notmuch-compact(1) (Debian bug #825884)

6 years agolib: reword comment about XFOLDER: prefix
David Bremner [Thu, 18 Aug 2016 08:06:54 +0000 (05:06 -0300)]
lib: reword comment about XFOLDER: prefix

I believe the current one is misleading, because in my experiments
Xapian did not add : when prefix and term were both upper case. Indeed,
it's hard to see how it could, because prefixes are added at a layer
above Xapian in our code. See _notmuch_message_add_term for an example.

Also try to explain why this is a good idea.  As far as I can ascertain,
this is more of an issue for a system trying to work with an unknown set
of prefixes. Since notmuch has a fixed set of prefixes, and we can
hopefully be trusted not to add XGOLD and XGOLDEN as prefixes, it is
harder for problems to arise.

6 years agodebian: changelog stanza for 0.22.1-3 debian/0.22.1-3
David Bremner [Sun, 14 Aug 2016 04:31:25 +0000 (13:31 +0900)]
debian: changelog stanza for 0.22.1-3

6 years agotest: make gdb even quieter
David Bremner [Tue, 28 Jun 2016 21:08:54 +0000 (23:08 +0200)]
test: make gdb even quieter

gdb sometimes writes warnings to stdout, which we don't need/want, and
for some reason --batch-silent isn't enough to hide. So in this commit
we write them to a log file, which is probably better for debugging
anyway. To see an illustrative test failure before this change, run

% make
% touch notmuch-count.c
% cd test && ./T060-count.sh

(cherry picked from commit f45fa5bdd397d52473f7092f7ae3e2ffb9b7aee5)

6 years agoOmit User-Agent: header by default
Daniel Kahn Gillmor [Mon, 8 Aug 2016 23:35:17 +0000 (19:35 -0400)]
Omit User-Agent: header by default

The User-Agent: header can be fun and interesting, but it also leaks
quite a bit of information about the user and their software stack.

This represents a potential security risk (attackers can target the
particular stack) and also an anonymity risk (a user trying to
preserve their anonymity by sending mail from a non-associated account
might reveal quite a lot of information if their choice of mail user
agent is exposed).

This change also avoids hiding the User-Agent header by default, so
that people who decide they want to send it will at least see it (and
can edit it if they want to) before sending.

It makes sense to have safer defaults.

6 years agoconfigure: add --without-api-docs option
Mikhail [Wed, 10 Aug 2016 13:02:35 +0000 (16:02 +0300)]
configure: add --without-api-docs option

Add option to explicitly disable API man page build even if doxygen
binary is available. --without-docs also implies not building API
manpage.

This change intended to add more distinctness into build system and
allow user not to build unwanted man pages.

6 years agoemacs: wash: word-wrap bugfix
Mark Walters [Sat, 6 Aug 2016 15:29:33 +0000 (16:29 +0100)]
emacs: wash: word-wrap bugfix

Previously notmuch-wash made the width of the text (approximately) the
window-width minus the depth in thread. This is correct for the
default indentation of 1 per message depth, but is incorrect for any
other setting of notmuch-show-indent-messages-width.

As notmuch-show-indent-messages-width is customisable, and notmuch-tree
sets it to zero to avoid indenting messages in the message pane, this
bug can show up in real use.

Two of the tests had to be updated: when
notmuch-show-indent-messages-width is 0, then the new (correct) word
wrapping happens later, when notmuch-show-indent-messages-width is 4,
then the new word wrapping happens sooner.

6 years agolib: provide _notmuch_database_log_append
David Bremner [Fri, 15 Jul 2016 10:25:41 +0000 (07:25 -0300)]
lib: provide _notmuch_database_log_append

_notmuch_database_log clears the log buffer each time. Rather than
introducing more complicated semantics about for this function, provide
a second function that does not clear the buffer. This is mainly a
convenience function for callers constructing complex or multi-line log
messages.

The changes to query.cc are to make sure that the common code path of
the new function is tested.

6 years agotest: make gdb even quieter
David Bremner [Tue, 28 Jun 2016 21:08:54 +0000 (23:08 +0200)]
test: make gdb even quieter

gdb sometimes writes warnings to stdout, which we don't need/want, and
for some reason --batch-silent isn't enough to hide. So in this commit
we write them to a log file, which is probably better for debugging
anyway. To see an illustrative test failure before this change, run

% make
% touch notmuch-count.c
% cd test && ./T060-count.sh

6 years agoemacs: express n-search-line-faces in terms of two new faces
Matt Armstrong [Thu, 21 Jul 2016 21:30:33 +0000 (14:30 -0700)]
emacs: express n-search-line-faces in terms of two new faces

The two new faces (notmuch-search-flagged-face and
notmuch-search-unread-face) make it easier to find the relevant face by
customizing notmuch-faces.  I plan to do the same to the other alists of
faces found elsewhere.

6 years agocreate .mailmap file (for git shortlog/blame)
David Bremner [Fri, 22 Jul 2016 12:47:34 +0000 (09:47 -0300)]
create .mailmap file (for git shortlog/blame)

Recently it was suggested on the list that we add a contributor to
AUTHORS. This file has been unmodified for 7 years, and is somewhat out
of date. It would potentially make sense to automagically update this
file during the release process using the output from git shortlog. This
file helps clean up some inconsistencies in author data in the history.

6 years agoFix typo in Message.maildir_flags_to_tags
Jaime Velasco Juan [Mon, 4 Jul 2016 18:49:31 +0000 (19:49 +0100)]
Fix typo in Message.maildir_flags_to_tags

It has been calling _tags_to_maildir_flags instead since the beginning,

6 years agoMerge branch 'release'
David Bremner [Tue, 19 Jul 2016 12:03:19 +0000 (09:03 -0300)]
Merge branch 'release'