bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#66885: 29.1; gnus search with mu always returns empty


From: Eric Abrahamsen
Subject: bug#66885: 29.1; gnus search with mu always returns empty
Date: Sun, 31 Dec 2023 18:53:28 -0800
User-agent: Gnus/5.13 (Gnus v5.13)

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> Britt Anderson <britt@uwaterloo.ca> writes:
>
>> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>>
>>> Your configuration looks correct (your configuration also reveals an
>>> annoying redundancy in gnus-search, which is that most nnmail
>>> backends have a "directory" value that can and should be used as the
>>> value of remove-prefix).
>>>
>>> Basically, if you're seeing "a maildir "y2023" that lives in archives"
>>> as a Gnus group, then this is just a bug in gnus-search's mu handling,
>>> plain and simple.
>>
>> I think the bug starts on line 1952 of gnus-search.el.gz (when opened in
>> emacs). It is in the definition of the method for
>
> (Thank you for continuing to bug-hunt, this looks promising, I've just
> gotten back from traveling and will set this up to test soon...)

Hi Britt, I'm finally getting around to testing this. I set up mu with a
local maildir, and so far I'm not able to reproduce the problem. I mark
two maildir groups and search for unread messages with "mark:unread".

The search arguments constructed by gnus-search look like:

("find" "--nocolor" "--muhome=/home/eric/.cache/mu" "" "" "flag:unread"
"and" "(" "maildir:/mails" "or" "maildir:/Welcome" ")" "--format=plain"
"--fields=l")

Putting that on the command line and running it gives 17 results, and I
see the same 17 results within the Gnus search buffer. With the search
engine's `remove-prefix` set to the full system file path up to the main
directory of the nnmaildir backend (under which the groups appear as
top-level directories) the results are shown correctly within Gnus.

The group handling code you noticed is necessary, the
`(concat "maildir:/" x)` code is mu-specific.

I'm not sure what else to try! Even if mu is returning results from
other Gnus backends, that shouldn't cause a failure. Though mu has the
"path:" key we can use with remove-prefix...

The last things to try would be: setting `gnus-verbose' to 10, trying
the search, and telling me what you find in *Message*, and...

eval'ing this version of the mu command method, that includes the
"path:" key. Does this fix the problem?

(cl-defmethod gnus-search-indexed-search-command ((engine gnus-search-mu)
                                                  (qstring string)
                                                  query &optional groups)
  (let ((limit (alist-get 'limit query))
        (thread (alist-get 'thread query)))
    (with-slots (switches config-directory remove-prefix) engine
      `("find"                  ; command must come first
        "--nocolor"             ; mu will always give colored output otherwise
        ,(format "--muhome=%s" config-directory)
        ,@switches
        ,(if thread "-r" "")
        ,(if limit (format "--maxnum=%d" limit) "")
        ,qstring
        ,@(if groups
              `("and" "("
                ,@(nbutlast (mapcan (lambda (x)
                                      (list (concat "maildir:/" x) "or"))
                                    groups))
                ")")
            "")
        ,(format "path:%s" (file-name-as-directory
                    (expand-file-name remove-prefix "/")))
        "--format=plain"
        "--fields=l"))))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]