David Bremner [Sun, 9 Jan 2022 19:35:52 +0000 (15:35 -0400)]
doc: add 2022 to copyright years.
David Bremner [Sun, 9 Jan 2022 19:35:12 +0000 (15:35 -0400)]
version: bump to 0.34.3
David Bremner [Sun, 9 Jan 2022 19:31:03 +0000 (15:31 -0400)]
debian: changelog for 0.34.3-1
David Bremner [Sun, 9 Jan 2022 19:29:05 +0000 (15:29 -0400)]
NEWS: add NEWS for 0.34.3
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
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
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
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.
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.
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.
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.
David Bremner [Thu, 9 Dec 2021 12:54:15 +0000 (08:54 -0400)]
NEWS: mention fix for unprintable python exception
David Bremner [Thu, 9 Dec 2021 12:49:46 +0000 (08:49 -0400)]
debian: changelog for 0.34.2-1
David Bremner [Thu, 9 Dec 2021 12:47:15 +0000 (08:47 -0400)]
version: bump to 0.34.2
David Bremner [Thu, 9 Dec 2021 12:44:22 +0000 (08:44 -0400)]
NEWS: add NEWS for 0.34.2
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.
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
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
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.
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.
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.
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").
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.
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.
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
David Bremner [Wed, 3 Nov 2021 13:20:49 +0000 (10:20 -0300)]
debian: refinalize changelog
David Bremner [Wed, 3 Nov 2021 13:20:08 +0000 (10:20 -0300)]
NEWS: finalize release date
David Bremner [Sun, 31 Oct 2021 11:25:25 +0000 (08:25 -0300)]
debian: changelog for 0.34.1-1
David Bremner [Sun, 31 Oct 2021 11:18:38 +0000 (08:18 -0300)]
NEWS: start news for 0.34.1
David Bremner [Sun, 31 Oct 2021 11:11:25 +0000 (08:11 -0300)]
version: bump to 0.34.1
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.
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.
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.
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.
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.
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
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.
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.
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.
David Bremner [Wed, 20 Oct 2021 14:25:31 +0000 (11:25 -0300)]
NEWS: set date
David Bremner [Wed, 20 Oct 2021 14:09:00 +0000 (11:09 -0300)]
debian: changelog for 0.34
David Bremner [Wed, 20 Oct 2021 13:51:06 +0000 (10:51 -0300)]
add NEWS for remaining changes
David Bremner [Wed, 20 Oct 2021 13:31:26 +0000 (10:31 -0300)]
version: bump to 0.34
David Bremner [Wed, 20 Oct 2021 13:26:36 +0000 (10:26 -0300)]
NEWS: update sexp-query news
Doug Woos [Mon, 18 Oct 2021 04:30:02 +0000 (21:30 -0700)]
emacs: fix call to nonexistent notmuch--call-process-shell-command
Looks like a find/replace error in
e722b4f4
David Bremner [Fri, 15 Oct 2021 11:52:32 +0000 (08:52 -0300)]
debian: add dependency on libsexp-dev
Enable the s-expression query parser in Debian.
David Bremner [Fri, 15 Oct 2021 11:51:55 +0000 (08:51 -0300)]
debian: add changelog for 0.34~rc0
David Bremner [Fri, 15 Oct 2021 11:49:01 +0000 (08:49 -0300)]
INSTALL: document optional dependency on libsfsexp
For now putting it in the apt-get line will cause complaints about
missing packages for too many people.
David Bremner [Fri, 15 Oct 2021 11:42:56 +0000 (08:42 -0300)]
NEWS: stub news for 0.34~rc0
This is mostly to pacify the release checks. NEWS will be filled in
during the release process.
David Bremner [Fri, 15 Oct 2021 11:34:39 +0000 (08:34 -0300)]
lib: bump lib minor version to 5
One new function (and an enum) was added to the API/ABI.
David Bremner [Fri, 15 Oct 2021 11:34:09 +0000 (08:34 -0300)]
debian: add new function to symbols file
David Bremner [Fri, 15 Oct 2021 11:28:59 +0000 (08:28 -0300)]
version: bump to 0.34~0
Start release process for 0.34.
David Bremner [Tue, 12 Oct 2021 11:20:09 +0000 (08:20 -0300)]
debian: install notmuch-sexp-queries man page
This was missed in the series that added the sexp-query parser and
docs.
David Bremner [Sat, 9 Oct 2021 20:09:16 +0000 (17:09 -0300)]
configure: whitespace cleanup
In order to make it easier to keep the whitespace consistent in the
configure script, use the same style defined in devel/STYLE for
C/C++.
Specifically, a line should begin with zero or more tabs followed
by fewer than eight spaces.
Presumably this will be no more difficult for people editing configure
than for people editing the C and C++ code.
David Bremner [Sun, 10 Oct 2021 11:47:58 +0000 (08:47 -0300)]
devel: script for checking a commit (series)
'check-notmuch-commit' is an updated version of a script I have been
using (although not always as consistently as I should) before sending
patches to the list.
Although it requires a bit more tooling, encouraging people to use
check-notmuch-commit might reduce the number of round trips to the
list for style nitpicks.
David Bremner [Thu, 7 Oct 2021 11:59:06 +0000 (08:59 -0300)]
configure: check explicitely for python dev (include) files
As discussed at [1] we have received reports that the implicit check
using cffi.FFI().verify() is not reliable in all environments. Since
we already use pkg-config, and the python dev package should include a
.pc file [2], add an extra check using pkg-config. On at least
Debian, we have to know which version of python dev files with are
looking for, so calculate that first.
[1]: id:87im1g35ey.fsf@tethera.netid:87im1g35ey.fsf@tethera.net,
[2]: checked on Debian and Fedora
David Bremner [Thu, 30 Sep 2021 11:58:48 +0000 (08:58 -0300)]
Merge tag '0.33.2'
notmuch 0.33.2 release
David Bremner [Thu, 30 Sep 2021 11:28:49 +0000 (08:28 -0300)]
version: bump to 0.33.2
David Bremner [Thu, 30 Sep 2021 11:27:37 +0000 (08:27 -0300)]
debian: changelog for 0.33.2-1
David Bremner [Thu, 30 Sep 2021 11:25:11 +0000 (08:25 -0300)]
NEWS: update for 0.33.2
David Bremner [Tue, 28 Sep 2021 01:30:08 +0000 (22:30 -0300)]
test/T355-smime: Use key as exported by gpgsm
As reported in id:87h7pxiek3.fsf@tethera.net, the previous version of
the test is flaky. There is some so-far undebugged interaction between
openssl and gpgsm that causes the keys to fail to import. As a
potential workaround, use the key as exported by gpgsm, and eliminate
openssl from this particular pipeline.
jao [Tue, 31 Aug 2021 01:21:06 +0000 (02:21 +0100)]
emacs: notmuch-tree: customizable strings for drawing trees
New customizable variable, notmuch-tree-thread-symbols, that allows
tweaking of how trees in a forest are represented. For instance, one
can now choose to use an hyphen rather than a white space as a prefix,
or replace the character(s) used to draw arrows.
Amended-By: db; delete errant '3'
David Bremner [Sun, 29 Aug 2021 19:23:35 +0000 (12:23 -0700)]
test/emacs: tests for notmuch-{tree,unthreaded} with bad CWD
These work thanks to the previous wrapping of process creation
primitives.
David Bremner [Sat, 11 Sep 2021 14:04:08 +0000 (11:04 -0300)]
emacs: wrap call-process
Provide safe working directory
David Bremner [Sun, 29 Aug 2021 19:23:33 +0000 (12:23 -0700)]
test/emacs: test for notmuch-show with nonexistent CWD
Somewhat predictably, the other code path in
notmuch-call-notmuch--helper also needs to be fixed.
David Bremner [Sun, 29 Aug 2021 19:23:32 +0000 (12:23 -0700)]
emacs: wrap make-process
Provide a safe working directory.
David Bremner [Sun, 29 Aug 2021 19:23:31 +0000 (12:23 -0700)]
test/emacs: test for notmuch-search with nonexistent CWD
(At least) notmuch-start-notmuch needs to be updated to set a safe
working directory.
David Bremner [Sun, 29 Aug 2021 19:23:30 +0000 (12:23 -0700)]
emacs: wrap call-process-region
As with notmuch--process-lines, initial purpose is to provide a safe
binding for default-directory. This is enough to make notmuch-hello
robust against non-existent or corrupt values default-directory, but
probably not other views.
David Bremner [Sun, 29 Aug 2021 19:23:29 +0000 (12:23 -0700)]
emacs: wrap process-lines
Initially just set the working directory, to avoid (the implicit)
call-process crashing when the default-directory points to a
non-existent location.
Use of a macro here is over-engineering for this change, but the same
change needs to be applied to several other process creation
primitives.
David Bremner [Sun, 29 Aug 2021 19:23:28 +0000 (12:23 -0700)]
test/emacs: run notmuch-hello with a nonexisting default dir
This replicates the problem reported in Debian bug #922536.
David Bremner [Sun, 29 Aug 2021 19:23:27 +0000 (12:23 -0700)]
test/emacs: provide macro test-log-error
Because of the way emacs reports errors, a test form can crash and not
change the main buffer. To work around this, capture both signalled
errors and any other messages.
David Bremner [Sat, 11 Sep 2021 00:02:10 +0000 (21:02 -0300)]
Merge tag '0.33.1'
notmuch 0.33.1 release
David Bremner [Fri, 10 Sep 2021 11:30:24 +0000 (08:30 -0300)]
debian: drop debian specific test exclusion
In principle these tests should pass now.
David Bremner [Fri, 10 Sep 2021 11:30:07 +0000 (08:30 -0300)]
debian: changelog for 0.33.1-1
David Bremner [Fri, 10 Sep 2021 11:28:04 +0000 (08:28 -0300)]
NEWS: update for 0.33.1
David Bremner [Fri, 10 Sep 2021 11:21:28 +0000 (08:21 -0300)]
version: bump to 0.33.1
David Bremner [Thu, 9 Sep 2021 12:51:03 +0000 (09:51 -0300)]
lib: use 'localhost' rather than fqdn for default mail address.
As discussed in the thread starting at [1], the fully qualified domain
name is a bit tricky to get reproducibly, might reveal information
people prefer to keep private, and somewhat unlikely to provide
reliable mail routing.
The new approach of $current_username@localhost is better for the
first two considerations, and probably at least as good as a test mail
address.
[1]: id:87sfyibqhj.fsf@tethera.net
David Bremner [Mon, 30 Aug 2021 19:49:06 +0000 (12:49 -0700)]
test/emacs: test for functions in notmuch-search-result-format.
Based on the commit message in id:
20210221151902.
2301690-3-dme@dme.org
Add the function notmuch-test-result-flags to test-lib.el to avoid
repeating it in 3 T*.sh files.
David Edmondson [Sun, 21 Feb 2021 15:19:02 +0000 (15:19 +0000)]
emacs: Allow functions in notmuch-{tree,unthreaded}-result-format
If the car of an element in notmuch-tree-result-format or
notmuch-unthreaded-result-format is a function, insert the result of
calling the function into the buffer.
David Edmondson [Sun, 21 Feb 2021 15:19:01 +0000 (15:19 +0000)]
emacs: Allow functions in notmuch-search-result-format
If the car of an element in notmuch-search-result-format is a
function, insert the result of calling the function into the buffer.
This allows a user to generate custom fields in the output of a search
result. For example, with:
(defun -notmuch-result-flags (format-string result)
(let ((tags-to-letters '(("flagged" . "!")
("unread" . "u")
("mine" . "m")
("sent" . "s")
("replied" . "r")))
(tags (plist-get result :tags)))
(format format-string
(mapconcat (lambda (t2l)
(if (member (car t2l) tags)
(cdr t2l)
" "))
tags-to-letters ""))))
(setq notmuch-search-result-format '((-notmuch-result-flags . "%s ")
("date" . "%12s ")
("count" . "%9s ")
("authors" . "%-30s ")
("subject" . "%s ")
("tags" . "(%s)")))
The first few characters on each line of the search result are used to
show information about some significant tags associated with the
thread.
David Edmondson [Sun, 21 Feb 2021 15:19:00 +0000 (15:19 +0000)]
emacs: Use pcase in notmuch-search-insert-field
Rather than lots of string-equal calls, use the pcase macro.
Jonas Bernoulli [Mon, 2 Aug 2021 22:10:08 +0000 (00:10 +0200)]
emacs: notmuch-fcc-header-setup: fix regression
With [1:
16b2db09] we lost the (undocumented) option to use no Fcc
header only for From addresses matching a regexp. This brings back
that feature and documents it.
1: 2021-01-15
16b2db0986ce0ed7c420a69d0a98bb41e9ca4bd8
emacs: various cosmetic improvements
Tomi Ollila [Mon, 6 Sep 2021 21:07:11 +0000 (00:07 +0300)]
NEWS: typo fix; some trailing periods
The trailing periods to smaller diff between devel/news2wiki.pl
output and what has been pushed to notmuch-wiki.
David Bremner [Tue, 24 Aug 2021 15:17:45 +0000 (08:17 -0700)]
doc/sexp-queries: update synopsis and description
I chose to go with a somewhat terse synopsis to try to keep the length
of the page down.
David Bremner [Tue, 24 Aug 2021 15:17:44 +0000 (08:17 -0700)]
CLI/tag: enable sexp queries
We have to rewrite _optimize_tag_query here because it is generating
a query string in the infix Xapian syntax. Luckily this is easy to do
with the sexp query syntax.
David Bremner [Tue, 24 Aug 2021 15:17:43 +0000 (08:17 -0700)]
CLI/{count, dump, reindex, reply, show}: enable sexp queries
The change in each case is to call notmuch_query_create_with_syntax,
relying on the already inherited shared options. As a bonus we get
improved error handling from the new query creation API.
The remaining subcommand is 'tag', which is a bit trickier.
David Bremner [Tue, 24 Aug 2021 15:17:42 +0000 (08:17 -0700)]
CLI: move query syntax to shared option
This will allow easy addition of a query syntax option to other subcommands.
David Bremner [Tue, 24 Aug 2021 15:17:41 +0000 (08:17 -0700)]
lib/parse-sexp: apply macros
Macros implement lazy evaluation and lexical scope. The former is
needed to make certain natural constructs work sensibly (e.g. (tag
,param)) but the latter is mainly future-proofing in case the DSL is
is extended to allow local bindings.
For technical background, see chapters 6 and 17 of [1] (or some other
intermediate programming languages textbook).
[1] http://cs.brown.edu/courses/cs173/2012/book/
David Bremner [Tue, 24 Aug 2021 15:17:40 +0000 (08:17 -0700)]
lib/parse-sexp: thread environment argument through parser
No functionality change, just an extra argument carried everywhere.
David Bremner [Tue, 24 Aug 2021 15:17:39 +0000 (08:17 -0700)]
lib/parse-sexp: support saved s-expression queries
It turns out there is not really much code in query-fp.cc useful for
supporting the new syntax. The code we could potentially factor out
amounts to calling notmuch_database_get_config; both the key
construction and the parsing of the results are specific to the query
syntax involved.
David Bremner [Tue, 24 Aug 2021 15:17:38 +0000 (08:17 -0700)]
CLI/config support saving s-expression queries
This commit does not enable using saved s-expression queries, only
saving and retrieving them from the config file or the database. Use
in queries will be enabled in a following commit.
David Bremner [Tue, 24 Aug 2021 15:17:37 +0000 (08:17 -0700)]
lib/parse-sexp: handle saved queries
This provides functionality analogous to query: in the Xapian
QueryParser based parser. Perhaps counterintuitively, the saved
queries currently have to be in the original query syntax (i.e. not
s-expressions).
David Bremner [Tue, 24 Aug 2021 15:17:36 +0000 (08:17 -0700)]
lib: factor out expansion of saved queries.
This is intended to allow use outside of the Xapian query parser.
David Bremner [Tue, 24 Aug 2021 15:17:35 +0000 (08:17 -0700)]
lib/parse-sexp: parse user headers
One subtle aspect is the replacement of _find_prefix with
_notmuch_database_prefix, which understands user headers. Otherwise
the code mainly consists of creating a fake prefix record (since the
user prefixes are not in the prefix table) and error handling.
David Bremner [Tue, 24 Aug 2021 15:17:34 +0000 (08:17 -0700)]
lib/parse-sexp: support infix subqueries
This is necessary so that programs can take infix syntax queries from
a user and use the sexp query syntax to construct e.g. a refinement of
that query.
David Bremner [Tue, 24 Aug 2021 15:17:33 +0000 (08:17 -0700)]
lib/parse-sexp: expand queries
The code here is just gluing together _notmuch_query_expand with the
existing sexp parser infrastructure.
David Bremner [Tue, 24 Aug 2021 15:17:32 +0000 (08:17 -0700)]
lib/thread-fp: factor out query expansion, rewrite in Xapian
It will be convenient not to have to construct a notmuch query object
when parsing subqueries, so the commit rewrites the query
expansion (currently only used for thread:{} queries) using only
Xapian. As a bonus it seems about 15% faster in initial experiments.
David Bremner [Tue, 24 Aug 2021 15:17:31 +0000 (08:17 -0700)]
lib/query: factor out _notmuch_query_string_to_xapian_query
When dealing with recursive queries (i.e. thread:{foo}) it turns out
to be useful just to deal with the underlying Xapian objects, and not
wrap them in notmuch objects.
David Bremner [Tue, 24 Aug 2021 15:17:30 +0000 (08:17 -0700)]
lib: generate actual Xapian query for "*" and ""
The previous code had the somewhat bizarre effect that the (notmuch
specific) query string was "*" (interpreted as MatchAll) and the
allegedly parsed xapian_query was "MatchNothing".
This commit also reduces code duplication.
David Bremner [Tue, 24 Aug 2021 15:17:29 +0000 (08:17 -0700)]
lib/parse-sexp: support regular expressions
At least to the degree that the Xapian QueryParser based parser
also supports them. Support short alias 'rx' as it seems to make more
complex queries nicer to read.