unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: help-gnu-emacs@gnu.org
Subject: Re: Gnus: Thread notes?
Date: Wed, 13 Dec 2017 10:03:06 -0800	[thread overview]
Message-ID: <87po7io691.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 87o9n27q9z.fsf@web.de

[-- Attachment #1: Type: text/plain, Size: 2225 bytes --]

Michael Heerdegen <michael_heerdegen@web.de> writes:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> > `gnus-alter-articles-to-read-function' [...]
>>
>> Interesting! I'd never looked at that option before. I'd still like to
>> keep the manual command, for those who don't want this to happen
>> automatically, but yes, it wouldn't be hard to refactor.
>
> Yes, I agree we should keep it.
>
>> It would also require some sort of internal caching first -- right now
>> it's too slow to have it running each time you enter a group.
>
> In my tests, I didn't see a delay.  It probably depends on how much you
> used the registry.

I use it pretty heavily! I'll implement this and test, and see how it
shakes out. A big slow-down comes in doing the
message-id-->article-number lookup each time. In the past I saved
article numbers to the registry, before realizing that was a bad idea,
but I've been considering re-introducing a per-Gnus-session cache, which
would be almost as helpful.

>> > (1) I think `gnus-alter-articles-to-read-function' should better
>> >  default to a function (lambda (_group-name article-list)
>> > article-list), not to nil, so that one could use `add-function' on
>> > it.
>>
>> Or the code could coerce the value to a list, and map all the functions.
>> Maybe that would be more intuitive than `add-function'?
>
> But for a list, you can't control how the functions are combined.  It is
> always the same, e.g., all the return values are appended.  Then it is
> impossible to use the thing for limiting shown articles.  That's quite a
> limitation.  With `add-function', there would not be such a restriction
> - and one could use priorities (aka advice depth) to control the order
> of processing.
>
> But I know some people refrain from using `add-function'.  We could
> support both mechanisms at the same time: If
> `gnus-alter-articles-to-read-function' is `functionp', call it as a
> function, else, treat it as a list (of functions).

Right, that's what I was thinking of. I do think it's bad in principle
to expect uses of `add-function'.

The following feels awkward to me, but I can't find any sort of "reverse
reduce" function in the libs. Is there a sexier way of doing this?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: alter-articles.diff --]
[-- Type: text/x-patch, Size: 693 bytes --]

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 4dee306c81..eae0ebf130 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -5917,8 +5917,12 @@ gnus-articles-to-read
       (when gnus-alter-articles-to-read-function
 	(setq articles
 	      (sort
-	       (funcall gnus-alter-articles-to-read-function
-			gnus-newsgroup-name articles)
+	       (if (functionp gnus-alter-articles-to-read-function)
+		   (funcall gnus-alter-articles-to-read-function
+			    gnus-newsgroup-name articles)
+		 (let ((ret articles))
+		   (dolist (f gnus-alter-articles-to-read-function)
+		     (setq ret (funcall f gnus-newsgroup-name ret)))))
 	       '<)))
       articles)))
 

[-- Attachment #3: Type: text/plain, Size: 6 bytes --]


Eric

  reply	other threads:[~2017-12-13 18:03 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-12 12:44 Gnus: Thread notes? Michael Heerdegen
2017-10-12 12:56 ` Danny YUE
2017-10-12 16:36 ` Göktuğ Kayaalp
2017-10-12 19:25   ` Robert Pluim
2017-10-13  2:21 ` Eric Abrahamsen
2017-10-16 19:33   ` Michael Heerdegen
2017-10-16 20:14     ` Eric Abrahamsen
2017-10-18 12:18       ` Michael Heerdegen
2017-10-18 14:53         ` Eric Abrahamsen
2017-11-25  2:42       ` Michael Heerdegen
2017-11-25  6:35         ` Eric Abrahamsen
2017-11-26  5:30           ` Michael Heerdegen
2017-11-28  2:19             ` Eric Abrahamsen
2017-11-28  6:02               ` Michael Heerdegen
2017-11-28 16:44                 ` Eric Abrahamsen
2017-11-29  8:10                   ` Michael Heerdegen
2017-11-29 17:43                     ` Eric Abrahamsen
2017-12-12 12:26                   ` Michael Heerdegen
2017-12-12 17:17                     ` Eric Abrahamsen
2017-12-13 12:42                       ` Michael Heerdegen
2017-12-13 18:03                         ` Eric Abrahamsen [this message]
2017-12-14 11:31                           ` Michael Heerdegen
2017-12-14 23:41                             ` Eric Abrahamsen
2017-12-15 11:38                               ` Michael Heerdegen
2017-12-15 17:58                                 ` Eric Abrahamsen
2017-12-15 19:54                                   ` Michael Heerdegen
2017-12-16  6:10                                     ` Eric Abrahamsen
2017-12-28 20:30                                       ` Eric Abrahamsen
2017-12-14 15:30                           ` Michael Heerdegen
2017-12-14 16:05                             ` Michael Heerdegen
2017-12-14 16:59                               ` Eric Abrahamsen
2017-12-14 17:25                                 ` Michael Heerdegen
2017-12-14 17:54                                   ` Eric Abrahamsen
2017-12-16 12:21                       ` Michael Heerdegen
2017-12-16 21:08                         ` Eric Abrahamsen
2017-12-18 11:40                           ` Michael Heerdegen
2017-12-18 19:04                             ` Eric Abrahamsen
2017-12-19 14:27                               ` Michael Heerdegen
2017-12-19 16:14                                 ` Eric Abrahamsen
2017-11-28  7:44               ` Michael Heerdegen
2017-11-26  5:49           ` Michael Heerdegen
2017-10-15 15:43 ` Narendra Joshi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87po7io691.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).