1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| | .. _notmuch-sexp-query(7):
====================
notmuch-sexp-queries
====================
SYNOPSIS
========
**notmuch** **search** ``--query-syntax=sexp`` '(and (to santa) (date december))'
DESCRIPTION
===========
S-EXPRESSIONS
-------------
An *s-expression* is either an atom, or list of whitespace delimited
s-expressions inside parentheses. Atoms are either
*basic value*
A basic value is an unquoted string containing no whitespace, double quotes, or
parentheses.
*quoted string*
Double quotes (") delimit strings possibly containing whitespace
or parentheses. These can contain double quote characters by
escaping with backslash. E.g. ``"this is a quote \""``.
S-EXPRESSION QUERIES
--------------------
An s-expression query is either an atom, the empty list, or a
*compound query* consisting of a prefix atom (first element) defining
a *field*, *logical operation*, or *modifier*, and 0 or more
subqueries.
``*``
``()``
The empty list matches all messages
*term*
Match all messages containing *term*, possibly after
stemming or phase splitting. For discussion of stemming in
notmuch see :any:`notmuch-search-terms(7)`. Stemming only applies
to unquoted terms (basic values) in s-expression queries.
``(`` *field* |q1| |q2| ... |qn| ``)``
Restrict the queries |q1| to |qn| to *field*, and combine with *and*
(for most fields) or *or*. See :any:`fields` for more information.
``(`` *operator* |q1| |q2| ... |qn| ``)``
Combine queries |q1| to |qn|. See :any:`operators` for more information.
``(`` *modifier* |q1| |q2| ... |qn| ``)``
Combine queries |q1| to |qn|, and reinterpret the result (e.g. as a regular expression).
See :any:`modifiers` for more information.
.. _fields:
FIELDS
``````
.. _operators:
OPERATORS
`````````
.. _modifiers:
MODIFIERS
`````````
EXAMPLES
========
``Wizard``
Match all messages containing the word "wizard", ignoring case.
``added``
Match all messages containing "added", but also those containing "add", "additional",
"Additional", "adds", etc... via stemming.
.. |q1| replace:: :math:`q_1`
.. |q2| replace:: :math:`q_2`
.. |qn| replace:: :math:`q_n`
|