From: Carl Worth Date: Sun, 25 Oct 2009 05:23:58 +0000 (-0700) Subject: Add the magic to allow searches such as "tag:inbox". X-Git-Tag: 0.1~726 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=aa46a683a85af0d0234720bd93ae3d09bc360910;hp=17f9c6a0ef7fb303c4b60422667ad063d91234bc Add the magic to allow searches such as "tag:inbox". The key for this is call add_boolean_prefix on the QueryParser object. That tells the query parser to take something like "tag:inbox" and transform it into the "Linbox" term and do what it needs to do to make this term a requirement of the search. We're starting to have a real system here. Also, I didn't want to expose the ugly name of "msgid" to the user, so we add a prefix name of simply "id" instead. --- diff --git a/database.cc b/database.cc index 3d967270..1666aff0 100644 --- a/database.cc +++ b/database.cc @@ -45,6 +45,7 @@ prefix_t BOOLEAN_PREFIX[] = { { "type", "K" }, { "tag", "L" }, { "msgid", "Q" }, + { "id", "Q" }, { "thread", "H" }, { "ref", "R" }, { "timestamp", "KTS" }, @@ -493,6 +494,9 @@ notmuch_database_open (const char *path) notmuch->query_parser = new Xapian::QueryParser; notmuch->query_parser->set_default_op (Xapian::Query::OP_AND); notmuch->query_parser->set_database (*notmuch->xapian_db); + notmuch->query_parser->add_boolean_prefix ("id", _find_prefix ("id")); + notmuch->query_parser->add_boolean_prefix ("tag", _find_prefix ("tag")); + notmuch->query_parser->add_boolean_prefix ("type", _find_prefix ("type")); } catch (const Xapian::Error &error) { fprintf (stderr, "A Xapian exception occurred: %s\n", error.get_msg().c_str());