Subject: Re: bug#31057: 27.0.50; Gnus: Make configurable what to show when selecting a group

From: Michael Heerdegen <[email-masked]>
Date: Thu, 12 Apr 2018 14:26:12 +0200

Lars Ingebrigtsen <[email-masked]> writes:

> Well, you're not supposed to advice
> `gnus-alter-articles-to-read-function', but instead set it to a
> function that returns a new list of articles (based on the list that's
> passed in).

No, the doc clearly says

| [...] Use `add-function' to set one or more custom filter functions.

That's what I did:

#+begin_src emacs-lisp
(add-function :around gnus-alter-articles-to-read-function
              (defun my-gnus-auto-show-registry-marked (f group-name article-list)
                (cl-union
                 (delq nil
                       (mapcar (lambda (id) (cdr (gnus-request-head id group-name)))
                               (cl-loop for key being the hash-keys of (oref gnus-registry-db data)
                                        using (hash-values v)
                                        when (assoc 'mark v)
                                        collect key)))
                 (funcall f group-name article-list))))
#+end_src

AFAIR Eric Abrahamsen and I decided that we want the thing to be
customizable like that, because it's then possible that different modes
can `add-function' stuff onto the variable to control things in
different ways.

> And as far as I can tell from reading the code, the list returned is
> the list of articles Gnus will fetch from the server

Yes.

> (And then display, depending on whether you have other filters in
> place).

Hmm, the additional articles (articles with attached custom marks in my
case) are not displayed for me.  AFAICT I have no filters enabled at
all.  When the registry marked articles are "old" they are just not
shown AFAICT.

Michael.