This is mainly a rebase against current master, but also required an
update to the (just pushed) empty query string handling

Apparently there's at least 4 ways to test a C++ string for being
empty, so here I try a different way of writing it.

Interdiff follows:

diff --git a/lib/regexp-fields.cc b/lib/regexp-fields.cc
index 26b22fe2..1598c17f 100644
--- a/lib/regexp-fields.cc
+++ b/lib/regexp-fields.cc
@@ -156,12 +156,17 @@ RegexpFieldProcessor::RegexpFieldProcessor (std::string 
prefix,
 Xapian::Query
 RegexpFieldProcessor::operator() (const std::string & str)
 {
-    if (str.size () == 0)
-       return Xapian::Query(Xapian::Query::OP_AND_NOT,
+    if (str.empty ()) {
+       if (options & NOTMUCH_FIELD_PROBABILISTIC) {
+           return Xapian::Query(Xapian::Query::OP_AND_NOT,
                             Xapian::Query::MatchAll,
                             Xapian::Query (Xapian::Query::OP_WILDCARD, 
term_prefix));
+       } else {
+           return Xapian::Query (term_prefix);
+       }
+    }
 
-    if (str.length() > 0 && str.at (0) == '/') {
+    if (str.at (0) == '/') {
        if (str.length() > 1 && str.at (str.size () - 1) == '/'){
            std::string regexp_str = str.substr(1,str.size () - 2);
            if (slot != Xapian::BAD_VALUENO) {

_______________________________________________
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch

Reply via email to