notmuch-mutt: fix Xapian query construction

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.
This commit is contained in:
Paul Wise 2023-04-09 12:41:42 +08:00 committed by David Bremner
parent d155f29eca
commit 6d383d4049

View file

@ -124,7 +124,11 @@ sub thread_action($$@) {
empty_maildir($results_dir); empty_maildir($results_dir);
die "notmuch-mutt: cannot find Message-Id, abort.\n"; 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 my $tid = `$search_cmd`; # get thread id
chomp($tid); chomp($tid);
@ -135,7 +139,10 @@ sub tag_action(@) {
my $mid = get_message_id(); my $mid = get_message_id();
defined $mid or die "notmuch-mutt: cannot find Message-Id, abort.\n"; 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() { sub die_usage() {