<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/parse-sexp.cc, branch 0.34.1</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.34.1</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.34.1'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2021-09-05T00:07:19Z</updated>
<entry>
<title>lib/parse-sexp: apply macros</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:41Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=551254eb76c9bb558078f04f21df1f6089cb03d6'/>
<id>urn:sha1:551254eb76c9bb558078f04f21df1f6089cb03d6</id>
<content type='text'>
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/
</content>
</entry>
<entry>
<title>lib/parse-sexp: thread environment argument through parser</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:40Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=3eca7fcf10a63e642e627539442271872fca58fd'/>
<id>urn:sha1:3eca7fcf10a63e642e627539442271872fca58fd</id>
<content type='text'>
No functionality change, just an extra argument carried everywhere.
</content>
</entry>
<entry>
<title>lib/parse-sexp: support saved s-expression queries</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:39Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=9b9eb1d8bd6464f044facef9507c5988c3d953ca'/>
<id>urn:sha1:9b9eb1d8bd6464f044facef9507c5988c3d953ca</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>lib/parse-sexp: handle saved queries</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:37Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=6ab2d9b1a2e62b76960df8e80ff2a45d9c6a8551'/>
<id>urn:sha1:6ab2d9b1a2e62b76960df8e80ff2a45d9c6a8551</id>
<content type='text'>
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).
</content>
</entry>
<entry>
<title>lib/parse-sexp: parse user headers</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:35Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a07ef8abf5248c1128ddc75b8139ae807a88abd9'/>
<id>urn:sha1:a07ef8abf5248c1128ddc75b8139ae807a88abd9</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>lib/parse-sexp: support infix subqueries</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:34Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=cc5992a30470222791c24849da04a3c0403ecce5'/>
<id>urn:sha1:cc5992a30470222791c24849da04a3c0403ecce5</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>lib/parse-sexp: expand queries</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:33Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=afe85e65786df1df9abf261393b4b4e6e2e86009'/>
<id>urn:sha1:afe85e65786df1df9abf261393b4b4e6e2e86009</id>
<content type='text'>
The code here is just gluing together _notmuch_query_expand with the
existing sexp parser infrastructure.
</content>
</entry>
<entry>
<title>lib/thread-fp: factor out query expansion, rewrite in Xapian</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:32Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=4083fd8bec7a34cf9c6a722b7dd511e0d31712f6'/>
<id>urn:sha1:4083fd8bec7a34cf9c6a722b7dd511e0d31712f6</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>lib/parse-sexp: support regular expressions</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:29Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1870b3ae4bae5e68296e63acc81965eea04a1a7a'/>
<id>urn:sha1:1870b3ae4bae5e68296e63acc81965eea04a1a7a</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>lib/parse-sexp: handle unprefixed terms.</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:26Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bafc307190f694bb3c9dd6dee8af1bae49225529'/>
<id>urn:sha1:bafc307190f694bb3c9dd6dee8af1bae49225529</id>
<content type='text'>
This is equivalent to adding the same field name "" for multiple
prefixes in the Xapian query parser, but we have to explicitely
construct the resulting query.
</content>
</entry>
</feed>
