]> git.cworth.org Git - notmuch-wiki/blobdiff - faq.mdwn
complete sentence
[notmuch-wiki] / faq.mdwn
index 36a7669c44bc093726668b379a96bb0bbbd10725..652d33015b4afe427bec0784d36a43c6a3b1b306 100644 (file)
--- a/faq.mdwn
+++ b/faq.mdwn
@@ -12,6 +12,19 @@ with the same message (i.e. the files have identical Message-ID). A
 `folder:` search will match the folder of any of the files. The
 `--output=files` option outputs all the files of all matching messages.
 
+## How come this query does not list all the emails on the file system? `notmuch search --output=files -- folder:inbox`
+
+You may have emails that only have some of the excluded tags.
+
+Notmuch can be configured to exclude some tags while searching. You can list excluded tags with
+
+       $ notmuch config get search.exclude_tags
+       deleted
+
+To verify this is the reason of the discrepancy, add the excluded tags explicitly to your query.
+
+       $ notmuch search --output=files -- folder:inbox tag:deleted
+
 ## Shouldn't notmuch support inline PGP?
 
 [Why it might not be a good idea](https://dkg.fifthhorseman.net/notes/inline-pgp-harmful/)
@@ -27,11 +40,26 @@ See [[excluding]].
 
 See help for `message-citation-line-format` for details.
 
+## What are sexp queries?
+
+For the syntax of sexp queries, see [the manual
+page](https://notmuchmail.org/doc/latest/man7/notmuch-sexp-queries.html).
+
+To see if your version of notmuch supports them, run
+
+        $ notmuch config get built_with.sexp_queries
+
 ## How do I search for messages that have no tags?
 
-Unfortunately, there is no way to do this directly.
+To do this directly, you need a recent notmuch compiled with sexp
+queries (see above). You can then run
+
+        $ notmuch search --query=sexp --output=messages '(not (tag *))'
+
+The same style of query should work for any prefix, even user defined
+prefixes like `List` (see below).
 
-However, it's possible to accomplish this using two searches in shell. First,
+Otherwise, it's possible to accomplish this using two searches in shell. First,
 you need to query all tags in the database, and transform the result into a
 query that matches messages that have none of those tags:
 
@@ -44,8 +72,8 @@ Next, use that to query the messages:
 
 ## How do I search for punctuation, specific special characters, or regexp?
 
-Please see the [[notmuch-search-terms manual
-page|manpages/notmuch-search-terms-7]] first.
+Please see the [notmuch-search-terms manual
+page](https://notmuchmail.org/doc/latest/man7/notmuch-search-terms.html) first.
 
 The main thing to understand is that Xapian, and therefore Notmuch, searches are
 closer to natural language searches than regular expression
@@ -54,20 +82,30 @@ searches. Punctuation is mostly ignored.
 The boolean prefix searches (see Boolean and Probabilistic Prefixes in the man
 page), such as tag: or path: searches, need an exact match.
 
+For [specific
+fields](https://notmuchmail.org/doc/latest/man7/notmuch-search-terms.html#search-prefixes)
+it is possible to use regex searches (although these are often
+noticeably slower than native Xapian queries). The limited set of
+fields is a quirk of implementation which requires a Xapian "value
+slot" in the database schema. Adding regex support for more fields to
+would require of adding more value slots to the schema. The
+performance impact of that needs to be experimentally evaluated, and
+assuming it is not too bad, some database upgrade code would need to
+be written.
+
+## How do I search for folders or paths with spaces?
+
+The spaces in the names must be escaped. For example if you use bash or zsh,
+you can search for messages with tag `foo` in folder `INBOX/folder with spaces`
+with this query:
+
+        $ notmuch search tag:foo 'folder:"INBOX/folder with spaces"'
+
 ## How do I search for the `List-Id:` header?
 
-Currently there is no way to search for `List-Id:`. As a workaround, try using a
-`to:` prefix search (which covers both `To:` and `Cc:` headers) on the mailing
-list address.
+See `index.header.<prefix>` in `notmuch-config(1)` for details. TLD;R:
 
-Limitations in the duplicate message handling are the main reason for not
-indexing the `List-Id:` header. If you receive the same message via both the
-list and directly (by way of `To:` or `Cc:`), only the first message encountered
-will be indexed. Only the message received via the list will have `List-Id:`,
-but you would expect a `List-Id:` search to find the message, regardless of the
-order in which the duplicates were received. This is a more general problem than
-just `List-Id:`, and once this has been resolved, adding `List-Id:` indexing is
-trivial.
+    notmuch config set index.header.List List-Id
 
 ## Can I use notmuch with grsec?
 
@@ -75,3 +113,48 @@ Sure! It works out of the box. If you have TPE enabled (trusted path execution),
 make sure the user is executing the script belongs to the
 `kernel.grsecurity.tpe_gid` (in debian this is grsec-tpe).
 This is required in order to run the `pre-new` and `post-new` hooks.
+
+## Can I tag threads?
+
+No. Tagging is message based.
+
+It is possible, however, to make tags propagate to all messages in a thread
+using a little bit of scripting in the [post-new
+hook](https://notmuchmail.org/doc/latest/man5/notmuch-hooks.html). For example, to add the muted tag to all
+messages in threads that have at least one message with the muted tag:
+
+        THREAD_TAGS="muted"
+        for tag in "$THREAD_TAGS"; do
+                notmuch tag +$tag $(notmuch search --output=threads tag:$tag)
+        done
+
+You can add other tags to `THREAD_TAGS` as needed. Note that this is one way
+only; you need to explicitly remove the tag from all the messages in a thread to
+stop it from propagating again.
+
+
+## How can I extract a git patchset for an email thread?
+
+See [notmuch-extract-patch](https://github.com/aaptel/notmuch-extract-patch).
+
+## T150-tagging.sh is failing with Xapian 1.4.6
+
+This is (probably) a bug in this point release of Xapian, should be
+fixed in 1.4.7.  Try reverting Xapian commit
+`093999529acc2f86900d91fed0c7f7af301ab94a`, e.g. with the following
+patch.
+
+
+    index 80e578b85..a47f14a68 100644
+    --- a/xapian-core/backends/glass/glass_postlist.cc
+    +++ b/xapian-core/backends/glass/glass_postlist.cc
+    @@ -759,7 +759,7 @@ GlassPostList::open_nearby_postlist(const std::string & term_,
+         (void)need_pos;
+         if (term_.empty())
+            RETURN(NULL);
+    -    if (!this_db.get() || this_db->postlist_table.is_modified())
+    +    if (!this_db.get() || this_db->postlist_table.is_writable())
+            RETURN(NULL);
+         RETURN(new GlassPostList(this_db, term_, cursor->clone()));
+     }
+