emacs-devel
[Top][All Lists]
Advanced

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

Pushing the `gnus-range-*' functions down into the C layer


From: Lars Magne Ingebrigtsen
Subject: Pushing the `gnus-range-*' functions down into the C layer
Date: Thu, 09 Sep 2010 17:16:56 +0200
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (gnu/linux)

Would anyone mind if I implemented the `gnus-range-*' functions in C for
Emacs 24?  Gnus spends significant time on group entry/exit doing range
handling/compressing/etc, and I think the functions are (slightly)
generally useful.

Gnus addresses articles by their number, so you have things like the
"marked" list of articles that looks like

(3 4 5 6 7 11 14 15 16 17 18)

(or something).  To save loading/saving time, these are stored in the
.newsrc.eld file as range structures, which look like this:

((3 . 7) 11 (14 . 18))

To handle this, Gnus has a set of functions for computing
intersections/differences/etc on the range structures.  However, Emacs
Lisp isn't really fast at doing this, so if you exit from a group that
needs lots (I mean *lots*) of range handling, you get an annoying wait
while it sits there computing.

So I'm proposing implementing a set of useful functions in C, like
`range-memq', `range-add', `range-intersection' and stuff.

Thoughts?

-- 
(domestic pets only, the antidote for overdose, milk.)
  address@hidden * Lars Magne Ingebrigtsen




reply via email to

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