<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/parse-sexp.cc, branch master</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=master</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2025-08-09T10:12:23Z</updated>
<entry>
<title>lib: return NOTMUCH_STATUS_OPERATION_INVALIDATED where appropriate</title>
<updated>2025-08-09T10:12:23Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-08-06T05:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=aa761727999b105711ba4ca789e0836a0a05cf9f'/>
<id>urn:sha1:aa761727999b105711ba4ca789e0836a0a05cf9f</id>
<content type='text'>
The overall goal is to allow clients to restart operations in
situations where that is the response recommended by the underlying
Xapian library.

Amended-by: db, added above explanation
</content>
</entry>
<entry>
<title>lib: thread-safe s-expression query parser</title>
<updated>2024-07-25T10:15:02Z</updated>
<author>
<name>Kevin Boulain</name>
<email>kevin@boula.in</email>
</author>
<published>2023-08-27T12:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a1921a25b71b23335ac01db7fc2f5462bf5edd3a'/>
<id>urn:sha1:a1921a25b71b23335ac01db7fc2f5462bf5edd3a</id>
<content type='text'>
Follow-up of 6273966d, now that sfsexp 1.4.1 doesn't rely on globals
anymore by default (https://github.com/mjsottile/sfsexp/issues/21).

This simply defers the initial query generation to use the thread-safe
helper (xapian_query_match_all) instead of Xapian::Query::MatchAll.
</content>
</entry>
<entry>
<title>lib: factor out lastmod range handling from sexp parser.</title>
<updated>2022-09-03T11:36:53Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-08-14T15:02:58Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=93c602a82fdbd03e0104ea922d073b2b1aa6b241'/>
<id>urn:sha1:93c602a82fdbd03e0104ea922d073b2b1aa6b241</id>
<content type='text'>
This will permit the re-use of the same logic in the infix query
parser. The location of the shared code in the infix side is for
consistency with the other shared parsing logic. It will make more
sense when a Xapian field processor is added for the lastmod prefix.
</content>
</entry>
<entry>
<title>lib/sexp: provide relative lastmod queries</title>
<updated>2022-09-03T11:36:53Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-08-14T15:02:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=606d9b02e46498874f6c3b5af18467c870e8658b'/>
<id>urn:sha1:606d9b02e46498874f6c3b5af18467c870e8658b</id>
<content type='text'>
Test the relatively trivial logic changes for the sexp query parser
first before refactoring that logic to share with the infix query
parser.
</content>
</entry>
<entry>
<title>lib/sexp: add parameter expansion for regex and wildcard</title>
<updated>2022-07-01T11:37:00Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-15T12:14:47Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=6a9ae990990848ec99107f2e2e6b6ae12dcd33df'/>
<id>urn:sha1:6a9ae990990848ec99107f2e2e6b6ae12dcd33df</id>
<content type='text'>
Fix the bug reported at [1].

The parameter expansion for regex and wildcard modifiers has to be
done a bit differently, because their arguments are not s-expressions
defining complete Xapian queries.

[1]: id:87o7yxqxy6.fsf@code.pm
</content>
</entry>
<entry>
<title>lib/sexp: allow * as alias for "" in range searches.</title>
<updated>2022-06-25T22:49:55Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-04T21:53:58Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=e7ffb7404163ebb453c96f6af9724e0fba75abb0'/>
<id>urn:sha1:e7ffb7404163ebb453c96f6af9724e0fba75abb0</id>
<content type='text'>
It can be tedious to use "" inside of a string, e.g. in a shell script.
</content>
</entry>
<entry>
<title>lib/sexp: special case "" as an argument in lastmod ranges.</title>
<updated>2022-06-25T22:49:55Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-04T21:53:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=78632345868b5e4753ad402c806c29569946ce89'/>
<id>urn:sha1:78632345868b5e4753ad402c806c29569946ce89</id>
<content type='text'>
Support this syntax for constincy with (data from to) ranges.
</content>
</entry>
<entry>
<title>lib: strip trailing '/' from pathnames (sexp queries).</title>
<updated>2022-01-27T11:48:27Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-21T23:38:53Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=2c1d1107f5dacdb4a2c514909fd96f45f83e2f3c'/>
<id>urn:sha1:2c1d1107f5dacdb4a2c514909fd96f45f83e2f3c</id>
<content type='text'>
This changes makes the sexp query parser consistent with the infix one
in ignoring trailing '/'. Here we do a bit better and ignore any
number of trailing '/'.
</content>
</entry>
<entry>
<title>lib/parse-sexp: handle lastmod queries.</title>
<updated>2022-01-26T11:41:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-20T13:36:05Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=0a32741fceb7778ced34064eacb7b5aac2c71638'/>
<id>urn:sha1:0a32741fceb7778ced34064eacb7b5aac2c71638</id>
<content type='text'>
This particular choice of converting strings to integers requires C++11.
</content>
</entry>
<entry>
<title>lib/parse-sexp: support actual date queries.</title>
<updated>2022-01-26T11:41:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-20T13:36:03Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=77ab961a1dce3a31d1f0edf5c9bd83c295575835'/>
<id>urn:sha1:77ab961a1dce3a31d1f0edf5c9bd83c295575835</id>
<content type='text'>
The default argument processing overlaps somewhat with what is already
done in _notmuch_date_strings_to_query, but we can give more specific
error messages for the s-expression context.

The extra generality of _sexp_parse_range will be useful when we
implement additional range prefixes (at least 'lastmod' is needed).
</content>
</entry>
</feed>
