]> git.cworth.org Git - notmuch/commitdiff
notmuch-mutt: fix Xapian query construction
authorPaul Wise <pabs3@bonedaddy.net>
Sun, 9 Apr 2023 04:41:42 +0000 (12:41 +0800)
committerDavid Bremner <david@tethera.net>
Sat, 27 May 2023 17:24:40 +0000 (14:24 -0300)
Spaces need to be stripped when querying the Message-Id,
because notmuch stores them in Xapian with spaces stripped.

All double-quote characters need to be doubled to escape them,
otherwise they will be added as extra query terms outside the id.

contrib/notmuch-mutt/notmuch-mutt

index 1e12038cdbda50bb29f6e98d49fc2b891b5cfe49..b38258f5772a7808889e5f1c1c9cd0ea61c76187 100755 (executable)
@@ -124,7 +124,11 @@ sub thread_action($$@) {
        empty_maildir($results_dir);
        die "notmuch-mutt: cannot find Message-Id, abort.\n";
     }
-    my $search_cmd = 'notmuch search --output=threads ' . shell_quote("id:$mid");
+
+    $mid =~ s/ //g; # notmuch strips spaces before storing Message-Id
+    $mid =~ s/"/""/g; # escape all double quote characters
+
+    my $search_cmd = 'notmuch search --output=threads ' . shell_quote(qq{id:"$mid"});
     my $tid = `$search_cmd`;   # get thread id
     chomp($tid);
 
@@ -135,7 +139,10 @@ sub tag_action(@) {
     my $mid = get_message_id();
     defined $mid or die "notmuch-mutt: cannot find Message-Id, abort.\n";
 
-    system("notmuch", "tag", @_, "--", "id:$mid");
+    $mid =~ s/ //g; # notmuch strips spaces before storing Message-Id
+    $mid =~ s/"/""/g; # escape all double quote characters
+
+    system("notmuch", "tag", @_, "--", qq{id:"$mid"});
 }
 
 sub die_usage() {