This only matches against individual terms in the message body, but may be useful e.g. in some queries simulating stemming for non-English languages Test suite is adjusted as follows: switch one expected error test to use mimetype instead of body, add one test for regex search in the body. --- doc/man7/notmuch-sexp-queries.rst | 2 +- lib/parse-sexp.cc | 2 +- test/T081-sexpr-search.sh | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/man7/notmuch-sexp-queries.rst b/doc/man7/notmuch-sexp-queries.rst index 858ff685..a77f4d54 100644 --- a/doc/man7/notmuch-sexp-queries.rst +++ b/doc/man7/notmuch-sexp-queries.rst @@ -141,7 +141,7 @@ the most recent database revision (see :option:`count --lastmod`). +------------+-----------+-----------+-----------+-----------+----------+ | attachment | and | phrase | yes | yes | no | +------------+-----------+-----------+-----------+-----------+----------+ - | body | and | phrase | no | no | no | + | body | and | phrase | no | no | yes | +------------+-----------+-----------+-----------+-----------+----------+ | date | | range | no | no | no | +------------+-----------+-----------+-----------+-----------+----------+ diff --git a/lib/parse-sexp.cc b/lib/parse-sexp.cc index 930888e9..9cfd1af6 100644 --- a/lib/parse-sexp.cc +++ b/lib/parse-sexp.cc @@ -85,7 +85,7 @@ static _sexp_prefix_t prefixes[] = { "attachment", Xapian::Query::OP_AND, SEXP_INITIAL_MATCH_ALL, SEXP_FLAG_FIELD | SEXP_FLAG_WILDCARD | SEXP_FLAG_EXPAND }, { "body", Xapian::Query::OP_AND, SEXP_INITIAL_MATCH_ALL, - SEXP_FLAG_FIELD }, + SEXP_FLAG_FIELD | SEXP_FLAG_REGEX }, { "date", Xapian::Query::OP_INVALID, SEXP_INITIAL_MATCH_ALL, SEXP_FLAG_RANGE }, { "from", Xapian::Query::OP_AND, SEXP_INITIAL_MATCH_ALL, diff --git a/test/T081-sexpr-search.sh b/test/T081-sexpr-search.sh index 8800b545..b97227ec 100755 --- a/test/T081-sexpr-search.sh +++ b/test/T081-sexpr-search.sh @@ -669,15 +669,19 @@ EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "regex in illegal field" -notmuch search --query=sexp '(body (regex foo))' >& OUTPUT +notmuch search --query=sexp '(mimetype (regex foo))' >& OUTPUT cat <<EOF > EXPECTED notmuch search: Syntax error in query -'regex' not supported in field 'body' +'regex' not supported in field 'mimetype' EOF test_expect_equal_file EXPECTED OUTPUT notmuch search --output=messages from:cworth > cworth.msg-ids +test_begin_subtest "regexp 'body' search" +output=$(notmuch search --output=messages --query=sexp '(body (rx taing))') +test_expect_equal $output 'id:1258500222-32066-1-git-send-email-ingmar@exherbo.org' + test_begin_subtest "regexp 'from' search" notmuch search --output=messages --query=sexp '(from (rx cworth))' > OUTPUT test_expect_equal_file cworth.msg-ids OUTPUT -- 2.47.2 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org