mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
CLI/search+address: support sexpr queries
Initially support selection of query syntax in two subcommands to enable testing.
This commit is contained in:
parent
c4f2f33a50
commit
e3b1a0a6a5
3 changed files with 23 additions and 4 deletions
|
@ -56,6 +56,7 @@ typedef struct {
|
|||
int format_sel;
|
||||
sprinter_t *format;
|
||||
int exclude;
|
||||
int query_syntax;
|
||||
notmuch_query_t *query;
|
||||
int sort;
|
||||
int output;
|
||||
|
@ -719,11 +720,10 @@ _notmuch_search_prepare (search_context_t *ctx, int argc, char *argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
ctx->query = notmuch_query_create (ctx->notmuch, query_str);
|
||||
if (ctx->query == NULL) {
|
||||
fprintf (stderr, "Out of memory\n");
|
||||
if (print_status_database ("notmuch search", ctx->notmuch,
|
||||
notmuch_query_create_with_syntax (ctx->notmuch, query_str,
|
||||
ctx->query_syntax, &ctx->query)))
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
notmuch_query_set_sort (ctx->query, ctx->sort);
|
||||
|
||||
|
@ -769,6 +769,7 @@ static search_context_t search_context = {
|
|||
.format_sel = NOTMUCH_FORMAT_TEXT,
|
||||
.exclude = NOTMUCH_EXCLUDE_TRUE,
|
||||
.sort = NOTMUCH_SORT_NEWEST_FIRST,
|
||||
.query_syntax = NOTMUCH_QUERY_SYNTAX_XAPIAN,
|
||||
.output = 0,
|
||||
.offset = 0,
|
||||
.limit = -1, /* unlimited */
|
||||
|
@ -787,6 +788,10 @@ static const notmuch_opt_desc_t common_options[] = {
|
|||
{ "text", NOTMUCH_FORMAT_TEXT },
|
||||
{ "text0", NOTMUCH_FORMAT_TEXT0 },
|
||||
{ 0, 0 } } },
|
||||
{ .opt_keyword = &search_context.query_syntax, .name = "query", .keywords =
|
||||
(notmuch_keyword_t []){ { "infix", NOTMUCH_QUERY_SYNTAX_XAPIAN },
|
||||
{ "sexp", NOTMUCH_QUERY_SYNTAX_SEXP },
|
||||
{ 0, 0 } } },
|
||||
{ .opt_int = ¬much_format_version, .name = "format-version" },
|
||||
{ }
|
||||
};
|
||||
|
|
|
@ -189,4 +189,11 @@ test_begin_subtest "parts do not have adjacent term positions"
|
|||
output=$(notmuch search id:termpos and '"c x"')
|
||||
test_expect_equal "$output" ""
|
||||
|
||||
if [[ NOTMUCH_HAVE_SFSEXP = 1 ]]; then
|
||||
test_begin_subtest "sexpr query: all messages"
|
||||
notmuch search '*' > EXPECTED
|
||||
notmuch search --query=sexp '()' > OUTPUT
|
||||
test_expect_equal_file EXPECTED OUTPUT
|
||||
fi
|
||||
|
||||
test_done
|
||||
|
|
|
@ -325,4 +325,11 @@ cat <<EOF >EXPECTED
|
|||
EOF
|
||||
test_expect_equal_file EXPECTED OUTPUT
|
||||
|
||||
if [[ NOTMUCH_HAVE_SFSEXP = 1 ]]; then
|
||||
test_begin_subtest "sexpr query: all messages"
|
||||
notmuch address '*' > EXPECTED
|
||||
notmuch address --query=sexp '()' > OUTPUT
|
||||
test_expect_equal_file EXPECTED OUTPUT
|
||||
fi
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue