"Jose A. Ortega Ruiz" <j...@gnu.org> writes: > On Wed, Dec 22 2021, Eric Abrahamsen wrote: > > [...] > >> My guess is that we need to go to point-min right here. >> >>> (while (re-search-forward "^thread:\\([^ ]+\\)" (point-max) t) >>> (push (match-string 1) thread-ids)) >>> (cl-call-next-method >>> engine server >>> ;; Completely replace the query with our new thread-based one. >>> (mapconcat (lambda (thrd) (concat "thread:" thrd)) >>> thread-ids " or ") >>> nil))) >>> (cl-call-next-method engine server query groups))) > > it's not enough. before that, there's a problem with invoking the > search for threads, because notmuch is passed the flag --duplicate=1, > and that's not accepted for format thread: > > Error: --duplicate=N is only supported with --output=files and > --output=messages. > > funny thing is that that flag is added for no apparent reason in line > 1633 of gnus-search.el: > > "--duplicate=1" ; I have found this necessary, I don't know why.
Hmm, I inherited this code, and didn't know why it was necessary either, so I didn't take it out. I think notmuch can return multiple search results if the same message exists in multiple folders, but since we're filtering folders to begin with, maybe we don't need this. > i don't know why either because searches seem to work without it :). > if one eliminates that flag and adds your suggested (goto-char > (point-min)) we are not out the woods yet: the thread id is read, but > including an eol, so one needs > > (while (re-search-forward "^thread:\\([^\n ]+\\)" (point-max) t) > ^^^^ Obviously I was hoping this would Just Work⢠without me having to actually install notmuch and test it. > and then, we still fail, because that leads, somehow to an error of the > form: > > Debugger entered--Lisp error: (wrong-type-argument listp > "thread:000000000001a830") > alist-get(parsed-query "thread:000000000001a830") > #f(compiled-function (engine query-spec) #<bytecode > 0x1fd1b560df8c2360>)(#<gnus-search-notmuch gnus-search-notmuch-157d5a02af62> > "thread:000000000001a830") > apply(#f(compiled-function (engine query-spec) #<bytecode > 0x1fd1b560df8c2360>) #<gnus-search-notmuch gnus-search-notmuch-157d5a02af62> > "thread:000000000001a830") > gnus-search-make-query-string(#<gnus-search-notmuch > gnus-search-notmuch-157d5a02af62> "thread:000000000001a830") > > which indicates that the notmuch method for > gnus-search-make-query-string is buggy: it doesn't know how to parse > "thread:000000000001a830" queries... and here i ran out of steam, but > the fix seems nearby :) You have done heroic work, and I hope it may yet be unnecessary for me to install and configure notmuch. Telling notmuch what to do with "thread:xxx" queries is not difficult, and I should have a solution for this in the next day or so. Thanks for the extensive debugging, Eric