Carsten Dominik <carsten.domi...@gmail.com> wrote: > Dear all, > > Maybe I can add the following background information to Nick's > amazing analysis.
I wouldn't call it "amazing", but thanks for the kind words! > > - The timeline was the first agenda-like view I implemented, > it used to be (many years ago) the only way to see what was > coming up. That is why it only listed the future, and included > the past when used with e prefix argument (I believe). > > - Since then the agenda view came along, with vastly better > properties for being used as a planning tool for the coming > day an d week. It also included the possibility to look > at several files, which made the timelines view of a single > file look poor. Since then, the timeline has been a more > or less orphaned feature, and this is why it does not > work well with stuff like repeaters (repeaters where added > MUCH later). > > - So the use-case of the timeline view became slowly redefined > as a way to look at the milestones and events of a single > project. One consequence was to always include the past. > > - For historic reasons, the timeline uses the same mechanics > as the agenda: Pick a date, find everything that is going > on on that date, move on to the next date. Lather, rinse, > repeat. However, when looking at a project that may have > dates spread over potentially many years, this mechanics > is not very practical. First, there will be many empty > days where nothing is going on. This will make the view > look very boring and will make it hard to find useful > dates. Second, constructing the view in this way > takes forever because of the inefficient pick-a-day, > scan-entire-file-to-see-what-fits-strategy. > > - To makes things more efficient, the timeline starts by > first making a list of relevant days in the project by > looking at all explicit dates, and at ranges. Here is > where the repeaters go wrong - they should return a whole > list of dates where they are important - but they only > add one, the starting date. With this list of dates, > it knows how to skip ranges of dates where nothing is > happening. > A very interesting history lesson: thanks very much for that. > Solutions for this problem are (these are alternatives) > > 1. Be satisfied with the way things are, just realize that > repeaters only show up on the first date when the > event happens for the first time. > > 2. Use the agenda, restricted to a single file, for a time > range you specify. This has the advantage that also > diary sexps will work properly - the timeline currently > has no way to deal with these. > > 3. Change the section of the timeline code that produces > the list of interesting dates. One strategy could be > to first make a list of explicit dates, in order to > define an overall range. Then find all repeaters and > add dates this repeater targets, restricted to > the range of explicit dates in the file. If done > like this, you could always put a target date > for conclusion of the project into the file, and that > far-into-the-future date would define the range of > the repeaters automatically. > > 4. Define a variable that will make the timeline always > look at *every* date in the range covered by the > file. And live with the fact that constructing the > view might take long. Maybe it will not even to > terribly long if you really use this view for single > projects. This would be easy to implement. > > 5. Rebuilt the entire timeline view to not use the > agendas mechanics of picking a date, scanning the file, > picking a date etc. Instead, do a single pass over the > file and build a list of dates with events in this way > and then format and display the list. Disadvantage > here would be that many things which now work easily, > like log view to include logging dates, would have to > be thought over and reimplemented specially for the > timeline. > And a very clear analysis of the situation. In these possibilities, there is the underlying assumption that the timeline is kept as a feature. What about the additional possibility of actually declaring it obsolete and getting rid of it? Can the agenda (possibly with some extension) cover the need of Mark S for omitting days where nothing happens? Is there anything else that the timeline offers? > Hope this helps. Extremely helpful, thanks! Nick