[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gnus: Thread notes?
From: |
Eric Abrahamsen |
Subject: |
Re: Gnus: Thread notes? |
Date: |
Wed, 13 Dec 2017 10:03:06 -0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
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?
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)))
Eric
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/12
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/12
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/13
- Re: Gnus: Thread notes?,
Eric Abrahamsen <=
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/14
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/14
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/15
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/15
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/15
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/16
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/28
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/14
- Re: Gnus: Thread notes?, Michael Heerdegen, 2017/12/14
- Re: Gnus: Thread notes?, Eric Abrahamsen, 2017/12/14