Some more comments and another bug in org-timeline:
o a repeater always gets reported on its initial date - it only gets reported
on subsequent instances iff it coincides with some other entry that will be
reported on that date.
o the initial comment of org-timeline says "Only entries with a time
stamp of today or later will be listed." However, in the let*, we have
(let* ((dopast t)
...
so by default we get past dates as well.
o [the additional bug] if dopast is set to nil in the let*, then we run the
following code to get rid of past dates:
(if (not dopast)
;; Remove past dates from the list of dates.
(setq day-numbers (delq nil (mapcar (lambda(x)
(if (>= x today) x nil))
day-numbers))))
But day-numbers isn't just numbers: it's a list of day numbers
interspersed with gap information:
(733451 (:omitted . 28) 733479 (:omitted . 5) 733484 (:omitted . 21) 733505
(:omitted . 15) 733520 ...)
and the mapcar function chokes when it has to deal with a gap argument.
Since there is no way to set dopast from the outside, perhaps the thing
to do is to remove both it and the above code (as well as one additional
instance of the variable) and declare that org-timeline will always do
both past and future. Or, given some global option variable, it can be
set to that value, in which case the code above needs to be fixed to
deal with the gaps.
Also, some stopping point will need to be provided. Right now, that is
the last explicit date in the file, but in the presence of repeaters
(and assuming that org-timeline gets modified to deal with them), that
natural stopping point gets pushed all the way to infinity, so some
other way will need to be provided to stop the enumeration.
Comments?
Nick