[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gnus-search-engine set to gnus-search-notmuch and refer threads
From: |
Jose A. Ortega Ruiz |
Subject: |
Re: gnus-search-engine set to gnus-search-notmuch and refer threads |
Date: |
Thu, 23 Dec 2021 03:34:32 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
On Wed, Dec 22 2021, Eric Abrahamsen wrote:
[...]
> 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.
i fear you'll have to install it. the naive fixes below
(properly set a query with (query . "thread:xxxxxxxxx") rather than the
raw string, and eliminating --duplicate for thread searches) end up
performing the query in nnselect group, rather than moving to the parent
group.
cheers,
jao
(cl-defmethod gnus-search-run-search :around ((engine gnus-search-notmuch)
server query groups)
"Handle notmuch's thread-search routine."
;; Notmuch allows for searching threads, but only using its own
;; thread ids. That means a thread search is a \"double-bounce\":
;; once to find the relevant thread ids, and again to find the
;; actual messages. This method performs the first \"bounce\".
(if (alist-get 'thread query)
(with-slots (program proc-buffer) engine
(let* ((qstring
(gnus-search-make-query-string engine query))
(cp-list (gnus-search-indexed-search-command
engine qstring query groups))
thread-ids proc)
(set-buffer proc-buffer)
(erase-buffer)
(setq proc (apply #'start-process (format "search-%s" server)
proc-buffer program cp-list))
(while (process-live-p proc)
(accept-process-output proc))
(goto-char (point-min))
(while (re-search-forward "^thread:\\([^\n ]+\\)" (point-max) t)
(push (match-string 0) thread-ids))
(cl-call-next-method
engine server
;; Completely replace the query with our new thread-based one.
`((query . ,(mapconcat 'identity thread-ids " or ")))
;;;;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
nil)))
(cl-call-next-method engine server query groups)))
(cl-defmethod gnus-search-indexed-search-command ((engine gnus-search-notmuch)
(qstring string)
query &optional _groups)
;; Theoretically we could use the GROUPS parameter to pass a
;; --folder switch to notmuch, but I'm not confident of getting the
;; format right.
(let ((limit (alist-get 'limit query))
(thread (alist-get 'thread query)))
(with-slots (switches config-file) engine
`(,(format "--config=%s" config-file)
"search"
,(if thread
"--output=threads"
"--output=files")
,@(unless thread '("--duplicate=1"))
; I have found this necessary, I don't
know why.
;;;;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
,@switches
,(if limit (format "--limit=%d" limit) "")
,qstring
))))
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, dal-blazej, 2021/12/14
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Eric Abrahamsen, 2021/12/15
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Andrew Cohen, 2021/12/21
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Jose A. Ortega Ruiz, 2021/12/22
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Eric Abrahamsen, 2021/12/23
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Jose A. Ortega Ruiz, 2021/12/23
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Jose A. Ortega Ruiz, 2021/12/27
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Eric Abrahamsen, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Andrew Cohen, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Eric Abrahamsen, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Andrew Cohen, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Eric Abrahamsen, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, Jose A. Ortega Ruiz, 2021/12/30
- Re: gnus-search-engine set to gnus-search-notmuch and refer threads, jao, 2021/12/30