Hi Nick,
Lisp tends to bring out my inner dyslexic, but is it possible to use a
"while" or other construct instead of "mapcar" and then make the "if"
construction inside of the lambda check for the :omitted symbol and return
it as nil? And it would need to break out of the loop as soon as it
encountered a date equal or greater to the present.
Philosophically, the way I think the calendar should work for recurring
events is that they only occur until the last event in the calendar UNLESS
an argument has been given to specify how far out the calendar is to be
drawn OR there is a global end-date / end-range variable.
Mark
--- On Tue, 3/22/11, Nick Dokos <nicholas.do...@hp.com> wrote:
From: Nick Dokos <nicholas.do...@hp.com>
Subject: Re: [O] Bug: Recurring items NEVER show up in timeline
unaccompanied
To: throa...@yahoo.com
Cc: nicholas.do...@hp.com, emacs-orgmode@gnu.org
Date: Tuesday, March 22, 2011, 1:10 PM
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