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
next prev parent 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).