From: Paul Wise Date: Sun, 9 Apr 2023 04:41:42 +0000 (+0800) Subject: notmuch-mutt: fix Xapian query construction X-Git-Tag: 0.38_rc0~24 X-Git-Url: https://git.cworth.org/git?p=notmuch;a=commitdiff_plain;h=6d383d404982c6e12dd68dcdf94b3490e3de4645 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. --- diff --git a/contrib/notmuch-mutt/notmuch-mutt b/contrib/notmuch-mutt/notmuch-mutt index 1e12038c..b38258f5 100755 --- a/contrib/notmuch-mutt/notmuch-mutt +++ b/contrib/notmuch-mutt/notmuch-mutt @@ -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() {