]> git.notmuchmail.org Git - notmuch/log
notmuch
2 years agolib/config: make sure the config map exists when loading defaults
David Bremner [Sat, 25 Dec 2021 13:33:04 +0000 (09:33 -0400)]
lib/config: make sure the config map exists when loading defaults

We should not rely on one of the other "_notmuch_config_load_*"
functions being called before this one.

2 years agolib/open: use notmuch->params to track split status
David Bremner [Sat, 25 Dec 2021 13:33:03 +0000 (09:33 -0400)]
lib/open: use notmuch->params to track split status

Persisting this status will allow us to use the information in other
compilation units, in particular when setting configuration defaults.

2 years agolib/open: use db struct as talloc ctx for choose_database_path
David Bremner [Sat, 25 Dec 2021 13:33:02 +0000 (09:33 -0400)]
lib/open: use db struct as talloc ctx for choose_database_path

The extra talloc struct "local" was left over from before the notmuch
struct was allocated earlier. Having the notmuch struct available in
this function will allow more flexibility to track the configuration
variations (e.g. split vs. non-split).

2 years agotest/libconfig: add two tests for the config = "" case
David Bremner [Sat, 11 Dec 2021 12:49:12 +0000 (08:49 -0400)]
test/libconfig: add two tests for the config = "" case

If notmuch_database_open_with_config finds a database, but that
database is not in a legacy, non-split configuration, then it
currently incorrectly deduces the mail root and returns SUCCESS. Add
to two tests to demonstrate this bug.

2 years agotest/libconfig: save and restore config file
David Bremner [Sat, 11 Dec 2021 12:49:11 +0000 (08:49 -0400)]
test/libconfig: save and restore config file

Currently the config file is unusable for further tests requiring a
valid database path.

2 years agoemacs/notmuch-tag.el: add xmlns attribute to svg icons
LdBeth [Fri, 14 Jan 2022 13:15:00 +0000 (07:15 -0600)]
emacs/notmuch-tag.el: add xmlns attribute to svg icons

emacs-mac that compiled with OS X system API for image display
support cannot correctly render svg without xmlns parameter [1].

[1]: id:tencent_127AA231767438AC66FEE4DDB4BBF51DF909@qq.com

2 years agoMerge remote-tracking branch 'origin/release'
David Bremner [Wed, 12 Jan 2022 17:25:29 +0000 (13:25 -0400)]
Merge remote-tracking branch 'origin/release'

2 years agotest/gpgsm: use --with-colons when calculating fingerprint.
David Bremner [Tue, 11 Jan 2022 23:52:30 +0000 (19:52 -0400)]
test/gpgsm: use --with-colons when calculating fingerprint.

As stressed by the gpg documentation, the non-'with-colons' output
format is subject to change, and indeed it did in 2.3.x (x<=3). This
should make the the test suite more robust against such changes.

2 years agoconfigure: Ignore more options that Fedora spec macros expect
Michael J Gruber [Tue, 11 Jan 2022 10:13:34 +0000 (11:13 +0100)]
configure: Ignore more options that Fedora spec macros expect

Signed-off-by: Michael J Gruber <git@grubix.eu>
2 years agoemacs: make header line in notmuch-show buffers optional
jao [Mon, 10 Jan 2022 03:05:23 +0000 (03:05 +0000)]
emacs: make header line in notmuch-show buffers optional

New notmuch-show-header-line customizable boolean to allow inhibiting
a header line in notmuch-show-mode buffers (for instance, because one
prefers to just include Subject in notmuch-message-headers).

2 years agoMerge tag '0.34.3'
David Bremner [Sun, 9 Jan 2022 23:34:58 +0000 (19:34 -0400)]
Merge tag '0.34.3'

notmuch 0.34.3 release

2 years agodoc: add 2022 to copyright years. 0.34.3 archive/debian/0.34.3-1 debian/0.34.3-1
David Bremner [Sun, 9 Jan 2022 19:35:52 +0000 (15:35 -0400)]
doc: add 2022 to copyright years.

2 years agoversion: bump to 0.34.3
David Bremner [Sun, 9 Jan 2022 19:35:12 +0000 (15:35 -0400)]
version: bump to 0.34.3

2 years agodebian: changelog for 0.34.3-1
David Bremner [Sun, 9 Jan 2022 19:31:03 +0000 (15:31 -0400)]
debian: changelog for 0.34.3-1

2 years agoNEWS: add NEWS for 0.34.3
David Bremner [Sun, 9 Jan 2022 19:29:05 +0000 (15:29 -0400)]
NEWS: add NEWS for 0.34.3

2 years agobindings/python-cffi: search for config by default
David Bremner [Sat, 8 Jan 2022 21:21:43 +0000 (17:21 -0400)]
bindings/python-cffi: search for config by default

The previous (pre-0.34.2) constructor searched for a config file but
only if the database path was not specified, and only to retrieve
database.path. Neither of the available options (CONFIG.SEARCH or
CONFIG.NONE) matches this semantics exactly, but CONFIG.SEARCH causes
less breakage for people who relied on the old behaviour to set their
database.path [1]. Since it also seems like the friendlier option in
the long run, this commit switches to CONFIG.SEARCH as default.

This requires a certain amount of updating the pytest tests, but most
users will actually have a config file, unlike the test environment.

[1]: id:87fsqijx7u.fsf@metapensiero.it

2 years agoMerge branch 'release'
David Bremner [Sun, 9 Jan 2022 13:20:56 +0000 (09:20 -0400)]
Merge branch 'release'

2 years agopython-cffi: returned OwnedMessage objects from Message.replies
David Bremner [Sat, 8 Jan 2022 14:03:16 +0000 (10:03 -0400)]
python-cffi: returned OwnedMessage objects from Message.replies

If we return regular Message objects, python will try to destroy them,
and the underlying notmuch object, causing e.g. the crash [1].

[1]: id:87sfu6utxg.fsf@tethera.net

2 years agotest: add known broken tests for recursive traversal of replies.
David Bremner [Sat, 8 Jan 2022 14:03:15 +0000 (10:03 -0400)]
test: add known broken tests for recursive traversal of replies.

This reproduces the bug reported at [1]. The second test hints at the
solution, making reply return OwnedMessage objects.

[1]: id:87sfu6utxg.fsf@tethera.net

2 years agocompletion: use mail_root for path completion in bash/zsh
Cédric Hannotier [Thu, 16 Dec 2021 17:40:53 +0000 (18:40 +0100)]
completion: use mail_root for path completion in bash/zsh

Since mail store and database directory can be different,
path and folder completions must use the directory given by
database.mail_root, not by database.path.

2 years agodoc: mail store is given by database.mail_root
Cédric Hannotier [Thu, 16 Dec 2021 17:40:52 +0000 (18:40 +0100)]
doc: mail store is given by database.mail_root

The mail store directory is given by database.mail_root,
which can be different from database.path.

However, notmuch-insert documentation was still referencing the latter
as the provider of the maildir directory instead of the former.

2 years agobindings/python-cffi: add matched property to message objects
David Bremner [Sat, 1 Jan 2022 14:36:43 +0000 (10:36 -0400)]
bindings/python-cffi: add matched property to message objects

Existing users of the legacy python bindings use
message.get_flags(Message.FLAG.MATCH) to determine which messages in a
thread matched. Since the bindings don't provide get_flags anymore,
they should provide a property analogous to the existing "excluded"
property.

2 years agobuild: move {C,CXX}FLAGS to the end of FINAL_{C,CXX}FLAGS
David Bremner [Fri, 24 Dec 2021 18:29:05 +0000 (14:29 -0400)]
build: move {C,CXX}FLAGS to the end of FINAL_{C,CXX}FLAGS

In addition to avoiding problems with user specified include paths
picking up an installed version of notmuch.h, this should also enable
users to override more options (in particular they could override
warning options since the last one takes effect).

[1]: id:7851CAB5-4556-4931-A0A2-37003E56C927@ryandesign.com

2 years agobuild: move CPPFLAGS after source directory includes.
David Bremner [Fri, 24 Dec 2021 18:29:04 +0000 (14:29 -0400)]
build: move CPPFLAGS after source directory includes.

In [1] Ryan Schmidt reported a problem on macports [2] with notmuch
finding an existing installed version of notmuch.h during the build.

This is a partial fix; the user might also specify -I in CFLAGS.

[1]: id:7851CAB5-4556-4931-A0A2-37003E56C927@ryandesign.com

[2]: The problem does not arise when notmuch.h is installed into a
"system" include path that the compiler searches by default.

2 years agobuild: move LDFLAGS after notmuch libraries.
David Bremner [Fri, 24 Dec 2021 18:29:03 +0000 (14:29 -0400)]
build: move LDFLAGS after notmuch libraries.

In [1] Ryan Schmidt reported a problem on macports [2] with notmuch
finding an existing installed version of libnotmuch during the build
when the user specified LDFLAGS including the libnotmuch install
directory.

This change should prevent that.

LDFLAGS also occurs in FINAL_LIBNOTMUCH_LDFLAGS. The only built
library linked to that is util/libtnotmuch_util.a, and that passed as
explicit (relative) path, and is thus not affected by -L.

[1]: id:7851CAB5-4556-4931-A0A2-37003E56C927@ryandesign.com

[2]: The problem does not arise when libnotmuch is installed into a
"system" library path that the compiler/linker searches by default.

2 years agoemacs: update coolj-line-prefix-regexp to make space optional
David Bremner [Sat, 25 Dec 2021 23:31:12 +0000 (19:31 -0400)]
emacs: update coolj-line-prefix-regexp to make space optional

Jani reported that lines prefixed with '>' (as opposed to '> ') are
not highlighted properly [1]. David E responded with a updated regex
[2]. This change implements David E's suggestion.

[1]: id:87a8b5pcky.fsf@nikula.org
[2]: id:m2pok1e3gv.fsf@dme.org

2 years agoMerge branch 'release'
David Bremner [Wed, 29 Dec 2021 18:20:49 +0000 (14:20 -0400)]
Merge branch 'release'

2 years agoconfigure: calculate NOTMUCH_BUILDDIR, write to Makefile.config
David Bremner [Thu, 23 Dec 2021 01:44:45 +0000 (21:44 -0400)]
configure: calculate NOTMUCH_BUILDDIR, write to Makefile.config

This will correct the current use of an undefined variable when
setting LD_LIBRARY_PATH in doc/Makefile.local

It is tempting to try to replace the use of test/export-dirs.sh, but
this is not as simple as it looks, as NOTMUCH_BUILDDIR is used to
locate sh.config, so probably cannot also sensibly be used to define
it.

2 years agolib/open: do not consider .notmuch alone as an existing database.
David Bremner [Sat, 25 Dec 2021 21:22:56 +0000 (17:22 -0400)]
lib/open: do not consider .notmuch alone as an existing database.

It makes perfect sense for users to want to pre-create .notmuch,
e.g. to install hooks, so we should handle the case of a .notmuch
directory without an actual xapian database more gracefully.

2 years agotest/new: add known broken test for missing xapian directory.
David Bremner [Sat, 25 Dec 2021 21:22:55 +0000 (17:22 -0400)]
test/new: add known broken test for missing xapian directory.

`notmuch new' should go ahead and create the xapian database if it is
missing, even in the case where the parent .notmuch (or equivalent)
directory exists.

2 years agotest: test folder renames
David Bremner [Sun, 26 Dec 2021 16:20:44 +0000 (12:20 -0400)]
test: test folder renames

In [1] Mark Walters reported a problem with messages being removed
from the database when the parent directory was renamed. Jani Nikula
proposed [2] these tests but observed

   This test is not suitable for merging since it's not deterministic.

After applying Jani's patch [3], the tests now pass deterministically,
and could usefully act as regression tests.

[1]: id:87siray6th.fsf@qmul.ac.uk
[2]: id:1393191650-28333-1-git-send-email-jani@nikula.org
[3]: id:1441445731-4362-2-git-send-email-jani@nikula.org

2 years agodoc: add dep. on stamp file for rebuilding gzipped man pages.
David Bremner [Fri, 24 Dec 2021 16:20:31 +0000 (12:20 -0400)]
doc: add dep. on stamp file for rebuilding gzipped man pages.

In [1] Daniel observed that the gzipped man pages were only being
rebuild every second time when building with `make -j4'. This may be
caused by a race condition between sphinx-build rebuilding the roff
files and the recipe to gzip them. This commit sequentializes these
two steps by making the stamp file a prerequisite for (all of) the
gzip files.

[1]: id:87tveotn1g.fsf@fifthhorseman.net

2 years agotest: remove directory names from paths in exceptions
David Bremner [Sun, 5 Dec 2021 13:56:03 +0000 (09:56 -0400)]
test: remove directory names from paths in exceptions

These cause failures when building out of tree.

2 years agoemacs: add notmuch-logo.svg and use it in emacs mua on graphic displays
Tomi Ollila [Tue, 21 Dec 2021 23:10:39 +0000 (01:10 +0200)]
emacs: add notmuch-logo.svg and use it in emacs mua on graphic displays

emacs/notmuch-logo.svg is handcrafted scalable vector graphics version
of the notmuch logo.

Emacs on graphic displays render this image four times in size compared
to the emacs/notmuch-logo.png, and the image is much sharper.

The rendered image size, 100x100 pixels, fits reasonably well with
text shown in various font sizes.

Scaling the image -- if desired -- may come in the future. For now
this is improvement on how the logo looked in notmuch-hello window.

2 years agodoc: introduce stamp file for info build
David Bremner [Sat, 4 Dec 2021 23:47:51 +0000 (19:47 -0400)]
doc: introduce stamp file for info build

This partially fixes (i.e. just for sphinx) the problem reported by
Daniel in id:87r29wwgq2.fsf@fifthhorseman.net.

2 years agodoc: replace phony target with variable
David Bremner [Sat, 4 Dec 2021 23:47:50 +0000 (19:47 -0400)]
doc: replace phony target with variable

Depending on a phony target seems like a good way to always trigger a
recipe.

2 years agoemacs/tree: fix docstrings for author faces
Kyle Meyer [Sun, 5 Dec 2021 20:48:36 +0000 (15:48 -0500)]
emacs/tree: fix docstrings for author faces

The docstrings for notmuch-tree-match-author-face and
notmuch-tree-no-match-author-face incorrectly match the docstring of
notmuch-tree-match-date-face.

2 years agoconfigure: have bash_absolute and perl_absolute always defined
Tomi Ollila [Tue, 7 Dec 2021 19:11:41 +0000 (21:11 +0200)]
configure: have bash_absolute and perl_absolute always defined

Since set -u is used, without bash or perl, configure would fail.

This has gone unnoticed as (almost) everyone always had both
bash and perl installed (and in $PATH).

Thanks to FreeBSD ports this bug became visible; this change is
verbatim copy of `patch-configure` in FreeBSD ports tree.

2 years agoMerge tag 'debian/0.34.2-1'
David Bremner [Fri, 10 Dec 2021 22:53:57 +0000 (18:53 -0400)]
Merge tag 'debian/0.34.2-1'

notmuch release 0.34.2-1 for unstable (sid) [dgit]

[dgit distro=debian no-split --quilt=linear]

2 years agodebian: build only against default python version archive/debian/0.34.2-1 debian/0.34.2-1
David Bremner [Fri, 10 Dec 2021 01:26:39 +0000 (21:26 -0400)]
debian: build only against default python version

This problem will will be solved in the next release of dh-python, but
the crude solution is needed for backports anyway.

2 years agoNEWS: mention fix for unprintable python exception 0.34.2
David Bremner [Thu, 9 Dec 2021 12:54:15 +0000 (08:54 -0400)]
NEWS: mention fix for unprintable python exception

2 years agodebian: changelog for 0.34.2-1
David Bremner [Thu, 9 Dec 2021 12:49:46 +0000 (08:49 -0400)]
debian: changelog for 0.34.2-1

2 years agoversion: bump to 0.34.2
David Bremner [Thu, 9 Dec 2021 12:47:15 +0000 (08:47 -0400)]
version: bump to 0.34.2

2 years agoNEWS: add NEWS for 0.34.2
David Bremner [Thu, 9 Dec 2021 12:44:22 +0000 (08:44 -0400)]
NEWS: add NEWS for 0.34.2

2 years agotest/emacs: mark one test as fixed in newer emacs.
David Bremner [Sun, 5 Dec 2021 14:40:07 +0000 (10:40 -0400)]
test/emacs: mark one test as fixed in newer emacs.

The remaining problem in this test is fixed upstream in Emacs
28. While most people are using earlier versions of emacs, the test
still provides some documentation of a known bug.

2 years agopython-cffi: fix out-of-tree build
David Bremner [Sun, 31 Oct 2021 10:03:54 +0000 (07:03 -0300)]
python-cffi: fix out-of-tree build

The main idea is to replace the hack of copying version.txt into the
bindings source with a generated _notmuch_config.py file.

This will mean that the bindings only build after configuring and
building notmuch itself. Given those constraints, "pip install ."
should work.

2 years agoMerge branch 'release'
David Bremner [Sun, 5 Dec 2021 13:02:50 +0000 (09:02 -0400)]
Merge branch 'release'

2 years agoFix error message when using notmuch_status_to_string
Floris Bruynooghe [Sat, 6 Nov 2021 11:02:37 +0000 (12:02 +0100)]
Fix error message when using notmuch_status_to_string

The python exception class was incorrectly loading the error message
which resulted in unprintable exception objects.

2 years agopython-cffi: introduce stamp file
David Bremner [Sat, 30 Oct 2021 20:48:55 +0000 (17:48 -0300)]
python-cffi: introduce stamp file

Although the rebuild does not take long, it is a bit noisy, so assume
if it succeeds once, it doesn't need to re-invoke setup.py until the
shared library is rebuilt. This is a partial fix for [1].

[1]: id:87r29wwgq2.fsf@fifthhorseman.net

2 years agoruby: don't use a directory as a target.
David Bremner [Sat, 30 Oct 2021 20:48:54 +0000 (17:48 -0300)]
ruby: don't use a directory as a target.

The directory is (neccesarily) not updated by the build, so it keeps
trying to build. The proposed fix is to use the name of the dynamic
library containing the extension.  This is a partial fix for the
rebuilding reported at [1].

[1]: id:87r29wwgq2.fsf@fifthhorseman.net

2 years agoemacs: don't add space to tag completion candidates.
David Bremner [Sat, 23 Oct 2021 17:05:24 +0000 (14:05 -0300)]
emacs: don't add space to tag completion candidates.

Apparently this messes up various third party completion
frameworks. This change does mean that users will have to hit space
after completing a tag change in order to enter another change.

As a bonus, remove the call to #'delete, since
completing-read-multiple already promises to remove empty strings.

2 years agotest/new: replace use of gdb in vanishing file test
David Bremner [Mon, 25 Oct 2021 01:15:15 +0000 (22:15 -0300)]
test/new: replace use of gdb in vanishing file test

Unlike the similar change in T060-new, no symlink creation is needed
here.

2 years agotest/count: replace use of gdb with a LD_PRELOAD shim
David Bremner [Mon, 25 Oct 2021 01:15:14 +0000 (22:15 -0300)]
test/count: replace use of gdb with a LD_PRELOAD shim

There is a certain amount of boilerplate to pass the call on the
original function, so abstract it out as a C preprocessor macro, plus
some extra includes in notmuch-test.h

2 years agotest: move system includes to notmuch-test.h
David Bremner [Thu, 28 Oct 2021 12:32:34 +0000 (09:32 -0300)]
test: move system includes to notmuch-test.h

This removes some redudant includes, and will also make it easier to
introduce "#define _GNU_SOURCE", which must come before all system
includes.

2 years agolib/config: use g_key_file_get_string to read config values
David Bremner [Thu, 30 Sep 2021 18:59:54 +0000 (15:59 -0300)]
lib/config: use g_key_file_get_string to read config values

Unlike the previous g_key_file_get_value, this version processes
escape codes for whitespace and \. The remaining two broken tests from
the last commit are because "notmuch config get" treats every value as
a list, and thus the previously introduces stripping of leading
whitespace applies.

2 years agotest: known broken tests for escape characters in config files.
David Bremner [Thu, 30 Sep 2021 18:28:34 +0000 (15:28 -0300)]
test: known broken tests for escape characters in config files.

glib generates the following escape characters with their usual
meanings: \n, \t, \r, and \\, along with \s for _leading_
spaces. Currently notmuch fails to unescape these on reading the
config files. These tests demonstrate this bug; the one new test that
passes is because apparently glib only escapes tabs at the beginning
of a key.

2 years agoconfig: ignore leading/trailing spaces in ';'-delimited lists
David Bremner [Thu, 30 Sep 2021 17:17:48 +0000 (14:17 -0300)]
config: ignore leading/trailing spaces in ';'-delimited lists

In [1] Ciprian observed that it was easy for users to mistakenly
introduce leading and trailing space to new.tags when editing a
notmuch config file. This commit strips spaces on either side of the
';' delimiter when splitting.

In principle it would be possible to support tags (or other config
values) with leading or trailing spaces by processing '\s' escapes in
the input string. Currently such processing is not done.

[1]: id:CA+Tk8fzjPLaEd3vL1f9ebk_bF_RV8PDTLzDupraTkCLCpJAmCg@mail.gmail.com

2 years agotest: known broken tests for leading/trailing ws in config
David Bremner [Thu, 30 Sep 2021 17:17:47 +0000 (14:17 -0300)]
test: known broken tests for leading/trailing ws in config

These tests duplicate the bug/misfeature reported in

      id:CA+Tk8fzjPLaEd3vL1f9ebk_bF_RV8PDTLzDupraTkCLCpJAmCg@mail.gmail.com

2 years agoemacs: run notmuch-search-hook lazily
David Bremner [Mon, 13 Sep 2021 01:03:50 +0000 (22:03 -0300)]
emacs: run notmuch-search-hook lazily

In message id:YT3ueuZHKW931NW3@localhost, Fabio Natali isolated a
visual glitch caused by running notmuch-search-hook too early. This
change moves the running of that hook to
notmuch-search-process-filter, which ensures there is some output in
the buffer before running the hook. Since n-s-p-f can be called many
times for a given buffer, add a buffer local flag to make sure it is
only run once per buffer.

2 years agoMerge branch 'release'
David Bremner [Sat, 4 Dec 2021 13:27:30 +0000 (09:27 -0400)]
Merge branch 'release'

2 years agopython-cffi: switch to notmuch_database_{open,create}_with_config
David Bremner [Sat, 30 Oct 2021 16:22:35 +0000 (13:22 -0300)]
python-cffi: switch to notmuch_database_{open,create}_with_config

Since release 0.32, libnotmuch provides searching for database and
configuration paths. This commit changes the python module notmuch2 to
use those facilities.

This fixes the bug reported in [1], along with a couple of the
deprecation warnings in the python bindings.

Database.default_path is deprecated, since it no longer faithfully
reflects what libnotmuch is doing, and it is also no longer used in
the bindings themselves.

This commit choose the default of config=CONFIG.EMPTY (equivalent to
passing "" to notmuch_database_open_with_config).  This makes the
change upward compatible API-wise (at least as far as the test suite
verifies), but changing the default to CONFIG.SEARCH would probably be
more convenient for bindings users.

[1]: id:87h7d4wp6b.fsf@tethera.net

2 years agotest: add known broken tests for python bindings in split configs
David Bremner [Sat, 30 Oct 2021 16:22:34 +0000 (13:22 -0300)]
test: add known broken tests for python bindings in split configs

This reproduces the bug(s) reported in id:87h7d4wp6b.fsf@tethera.net

2 years agotest: add python-cffi bindings to path for test_python
David Bremner [Sat, 30 Oct 2021 16:22:33 +0000 (13:22 -0300)]
test: add python-cffi bindings to path for test_python

This will allow testing the new python bindings using test_python, in
addition to the current invocation of pytest.

2 years agopython-cffi: fix typos in docstring for Database.default_path
David Bremner [Sat, 30 Oct 2021 16:22:32 +0000 (13:22 -0300)]
python-cffi: fix typos in docstring for Database.default_path

These generate warnings from sphinx doc, which makes it harder to
debug documentation changes. They also corrupt the output.

2 years agolib/config: don't overwrite database.path if the caller passed it
David Bremner [Thu, 28 Oct 2021 01:34:19 +0000 (22:34 -0300)]
lib/config: don't overwrite database.path if the caller passed it

If the user passed a path, and we opened it, then we consider that
definitive definition of "database.path". This makes libnotmuch
respond more gracefully to certain erroneous combinations of
NOTMUCH_CONFIG settings and config file contents.

2 years agolib/open: track which parameters are passed
David Bremner [Thu, 28 Oct 2021 01:34:18 +0000 (22:34 -0300)]
lib/open: track which parameters are passed

This will be used to fine tune the loading of configuration for
certain special configuration items (initially just "database.path").

2 years agotest: add known broken test for conflict with database parameter
David Bremner [Thu, 28 Oct 2021 01:34:17 +0000 (22:34 -0300)]
test: add known broken test for conflict with database parameter

This is arguably user error: having configuration file with bad
settings in it (and/or having a bad NOTMUCH_CONFIG environment
variable).  On the other hand returning a different path than was
actually opened is definitely a bug.

2 years agotest/libconfig: use 'export' for remaining sets of NOTMUCH_CONFIG
David Bremner [Sat, 4 Dec 2021 00:47:05 +0000 (20:47 -0400)]
test/libconfig: use 'export' for remaining sets of NOTMUCH_CONFIG

It makes the tests easier to understand if we always use export for
environment variables.

2 years agoemacs: drop C-tab binding in hello mode, document <backtab>.
David Bremner [Sat, 30 Oct 2021 18:58:16 +0000 (15:58 -0300)]
emacs: drop C-tab binding in hello mode, document <backtab>.

The <backtab> binding has always been there, but the docs were
apparently mistakenly changed to say <backspace> [1]

Revert to <backtab> in the documentation.

The commit also drops the C-<tab> binding, since it seems redundant
and it interferes with tab-bar-mode.

[1]: 703dec7754da477b5683867c88cb940b8553be91.

2 years agodoc/python-cffi: import from built bindings, not installed module
David Bremner [Fri, 29 Oct 2021 14:54:59 +0000 (11:54 -0300)]
doc/python-cffi: import from built bindings, not installed module

Previously the python-cffi bindings either failed to build, or built
for the wrong module by using the installed module.

The fix requires correction the module path, building the bindings
before docs, and helping python find the built libnotmuch.

Based on patch / discussion from Micheal Gruber [1]

[1]: id:cover.1634808719.git.git@grubix.eu

2 years agorename built_with.sexpr_query to built_with.sexp_queries
David Bremner [Sat, 30 Oct 2021 18:49:20 +0000 (15:49 -0300)]
rename built_with.sexpr_query to built_with.sexp_queries

It is confusing to use two different names (sexp vs sexpr) when
compared with the command line option --query=sexp and (furthermore)
singular vs plural when compared with the man page title.

2 years agoMerge tag '0.34.1'
David Bremner [Thu, 4 Nov 2021 19:28:03 +0000 (16:28 -0300)]
Merge tag '0.34.1'

notmuch 0.34.1 release

2 years agodebian: refinalize changelog 0.34.1 archive/debian/0.34.1-1 debian/0.34.1-1
David Bremner [Wed, 3 Nov 2021 13:20:49 +0000 (10:20 -0300)]
debian: refinalize changelog

2 years agoNEWS: finalize release date
David Bremner [Wed, 3 Nov 2021 13:20:08 +0000 (10:20 -0300)]
NEWS: finalize release date

2 years agodebian: changelog for 0.34.1-1
David Bremner [Sun, 31 Oct 2021 11:25:25 +0000 (08:25 -0300)]
debian: changelog for 0.34.1-1

2 years agoNEWS: start news for 0.34.1
David Bremner [Sun, 31 Oct 2021 11:18:38 +0000 (08:18 -0300)]
NEWS: start news for 0.34.1

2 years agoversion: bump to 0.34.1
David Bremner [Sun, 31 Oct 2021 11:11:25 +0000 (08:11 -0300)]
version: bump to 0.34.1

2 years agoemacs: improve notmuch-*-from-current-query docstrings
David Bremner [Sat, 23 Oct 2021 13:12:58 +0000 (10:12 -0300)]
emacs: improve notmuch-*-from-current-query docstrings

Err on the side of providing better user documentation, rather than
documentation for developers.

2 years agoemacs: add minimal docstring for notmuch-unthreaded
David Bremner [Mon, 11 Oct 2021 11:19:21 +0000 (08:19 -0300)]
emacs: add minimal docstring for notmuch-unthreaded

The missing docstring causes a blank in the notmuch-help display
[1]. Since the function is a simple wrapper for notmuch-tree, it seems
fair to forward the reader there for more detailed information.

[1]: id:878sape5a9.fsf@disroot.org

2 years agolib/open: replace call to deprecated notmuch_database_open_verbose
David Bremner [Sat, 23 Oct 2021 12:27:02 +0000 (09:27 -0300)]
lib/open: replace call to deprecated notmuch_database_open_verbose

Essentially inline the existing shim definition of
notmuch_database_open_verbose.

2 years agolib/compact: replace deprecated notmuch_database_open_verbose
David Bremner [Sat, 23 Oct 2021 12:27:01 +0000 (09:27 -0300)]
lib/compact: replace deprecated notmuch_database_open_verbose

It should not be necesary to have any config information here, hence
passing "" to n_d_open_with_config.

2 years agoMerge branch 'release'
David Bremner [Sat, 30 Oct 2021 18:01:01 +0000 (15:01 -0300)]
Merge branch 'release'

2 years agolib/load_config: deallocate / NULL database on fatal error
David Bremner [Sat, 23 Oct 2021 13:22:38 +0000 (10:22 -0300)]
lib/load_config: deallocate / NULL database on fatal error

This fixes a potential memory leak, and makes the behaviour of
notmuch_database_load_config (somewhat) consistent with
n_d_{open,create} with config.

2 years agolib/load_config: document expectations for db on error, add tests
David Bremner [Sat, 23 Oct 2021 13:22:37 +0000 (10:22 -0300)]
lib/load_config: document expectations for db on error, add tests

This is a bit different than n_d_{open,create}_with_config, since
there are several non-zero status codes where we do want to return a
non-NULL database structure.

2 years agolib/create: fix memory leak, ensure *database=NULL on error
David Bremner [Sat, 23 Oct 2021 13:22:36 +0000 (10:22 -0300)]
lib/create: fix memory leak, ensure *database=NULL on error

This code previously relied on _finish_open to free the notmuch struct
on errors (except for the case of database == NULL, which was a
potential double free). When we removed those frees from _finish_open,
we introduced a (small) memory leak.

In this commit, fix the memory leak, and harmonize the on-error
behaviour with n_d_open_with_config.

2 years agolib/create: document expectations for db on error, add tests
David Bremner [Sat, 23 Oct 2021 13:22:35 +0000 (10:22 -0300)]
lib/create: document expectations for db on error, add tests

It seems sensible to harmonize the behaviour with
n_d_open_with_config. In this commit we just assert the desired
behaviour.

2 years agolib/open: fix potential double-free, ensure *database=NULL on error
David Bremner [Sat, 23 Oct 2021 13:22:34 +0000 (10:22 -0300)]
lib/open: fix potential double-free, ensure *database=NULL on error

During refactoring for 0.32, the code that set notmuch=NULL on various
errors was moved into _finish_open. This meant that the the code which
relied on that to set *database to NULL on error was no longer
correct. It also introduced a potential double free, since the notmuch
struct was deallocated inside _finish_open (via n_d_destroy).

In this commit we revert to "allocator frees", and leave any cleanup
to the caller of _finish_open. This allows us to get back the
behaviour of setting *database to NULL with a small change. Other
callers of _finish_open will need free notmuch on errors.

2 years agotest: add two known broken tests for missing config files
David Bremner [Sat, 23 Oct 2021 13:22:33 +0000 (10:22 -0300)]
test: add two known broken tests for missing config files

The documentation claims that the database will be set to NULL in this
case, but it is currently not happening. Based on a reproducer [1]
from Austin Ray.

[1]: id:20211021190401.imirxau2ewke6e2m@athena

2 years agolib: document n_o_w_config can return NOTMUCH_STATUS_NO_CONFIG
David Bremner [Thu, 21 Oct 2021 14:42:36 +0000 (11:42 -0300)]
lib: document n_o_w_config can return NOTMUCH_STATUS_NO_CONFIG

This should be treated as fatal by callers, since we didn't succeed in
opening a Xapian database.

2 years agoMerge branch 'release'
David Bremner [Thu, 28 Oct 2021 01:09:03 +0000 (22:09 -0300)]
Merge branch 'release'

2 years agoNEWS: fix typo in 0.34 news.
David Bremner [Sun, 24 Oct 2021 10:07:08 +0000 (07:07 -0300)]
NEWS: fix typo in 0.34 news.

Thanks to jrm on IRC for finding the typo.

2 years agotest/libconfig: use 'export' when restoring NOTMUCH_CONFIG
David Bremner [Wed, 27 Oct 2021 13:20:40 +0000 (10:20 -0300)]
test/libconfig: use 'export' when restoring NOTMUCH_CONFIG

This is required when NOTMUCH_CONFIG has been unset, and is harmless
otherwise.

2 years agodoc/sexp-queries: replace definition lists with block quotes.
David Bremner [Mon, 11 Oct 2021 12:56:15 +0000 (09:56 -0300)]
doc/sexp-queries: replace definition lists with block quotes.

This document contains meaningful markup in the terms, which makeinfo
complains about. Replace the use of definition lists with regular
paragraphs containing quote blocks. This is accomplished by splitting
the "term" from the definition with a blank line.

2 years agodoc: remove explicit formatting of terms in definition lists
David Bremner [Mon, 11 Oct 2021 12:56:14 +0000 (09:56 -0300)]
doc: remove explicit formatting of terms in definition lists

Sphinx-doc already formats the terms appropriately for a given
backend (bold in html and man). `makeinfo` complains noisily about
formatting inside a @item if we add our own explicit formatting.

This change may change the formatting in the info output. On the other
hand, the existing use of quotes for bold is not that great anyway.

In some places blank lines were removed to preserve the logical
structure of a definition list.

2 years agoCLI: move indexopts variable out of shared options block
David Bremner [Sat, 12 Jun 2021 13:26:17 +0000 (10:26 -0300)]
CLI: move indexopts variable out of shared options block

This reduces the amount of global state.  Furthermore, index options
can be set (in principle) in several ways, not just in the one
function for processing indexing command line options.

2 years agolib: make indexopts pointers opaque
David Bremner [Sat, 12 Jun 2021 13:26:16 +0000 (10:26 -0300)]
lib: make indexopts pointers opaque

There is no reason for anything outside the indexopts.c compilation
unit to have access to structure members.

2 years agocli: remove enum names from typedefs
Jani Nikula [Wed, 13 Oct 2021 14:02:17 +0000 (17:02 +0300)]
cli: remove enum names from typedefs

There are some enum typedefs with the enum name:

    typedef enum _name_t { ... } name_t;

We don't need or use the enum names _name_t for anything, and not all
of the enum typedefs have them. We have the typedefs specifically to
use the typedef name.

Use the anonymous enum in the typedefs:

    typedef enum { ... } name_t;

2 years agolib: remove enum names from typedefs
Jani Nikula [Wed, 13 Oct 2021 14:02:16 +0000 (17:02 +0300)]
lib: remove enum names from typedefs

There are some enum typedefs with the enum name:

    typedef enum _name_t { ... } name_t;

We don't need or use the enum names _name_t for anything, and not all
of the enum typedefs have them. We have the typedefs specifically to
use the typedef name.

Use the anonymous enum in the typedefs:

    typedef enum { ... } name_t;

2 years agolib: fix commented out NOTMUCH_DEPRECATED()
Jani Nikula [Wed, 13 Oct 2021 14:03:10 +0000 (17:03 +0300)]
lib: fix commented out NOTMUCH_DEPRECATED()

Remove the comment markers from the placeholder NOTMUCH_DEPRECATED(),
added in commit e5f3c3ed5024 ("lib: add stub for
notmuch_database_open_with_config").

2 years agoNEWS: set date 0.34 archive/debian/0.34-1 debian/0.34-1
David Bremner [Wed, 20 Oct 2021 14:25:31 +0000 (11:25 -0300)]
NEWS: set date