emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [bug] org-agenda-write does not handle date stamps without day o


From: Carsten Dominik
Subject: Re: [O] [bug] org-agenda-write does not handle date stamps without day of week
Date: Mon, 19 Mar 2012 10:12:01 +0100

On 17.3.2012, at 07:45, Nick Dokos wrote:

> Karl Voit <address@hidden> wrote:
> 
>> * Nick Dokos <address@hidden> wrote:
>>> Karl Voit <address@hidden> wrote:
>>> 
>>> For me, it was a "no time to work on org - stash it"...
>> 
>> OK. I just wanted to make sure that it *is* on someone's todo list
>> :-)
>> 
>>>> * Karl Voit <address@hidden> wrote:
>>>>> 
>>>>> * <2012-03-05 08:00-09:00> Wrong: ends up as full day event
>>> 
>>> org-agenda-write calls org-export-icalendar which calls 
>>> org-print-icalendar-entries
>>> which loops over all the entries and parses them, decomposing them into 
>>> timestamps.
>>> Each timestamp is then passed to org-parse-time-string. It's this one that 
>>> cannot
>>> handle non-standard formats: it uses a regexp and assumes that all the 
>>> matched parts
>>> are going to be in fixed places:
>>> 
>>> As to how to fix it, there are several possibilities:
>>> 
>>> 1. fix your scripts that produce time stamps to include day-of-week.
>> 
>> Sorry, deriving DOW from an arbitrary timestamps from arbitrary data
>> sources is either pretty time consuming (calendar calculations) or
>> simply hard to calculate.
>> 
>> Outside Org-mode, DOW is seldom part of time-stamp data :-(
>> 
>>> 2. change the callers of org-parse-time-string to make sure that DOW is 
>>> included.
>>> There are roughly three dozen callers, so 2. is possible but a pain.
>> 
>> Ack.
>> 
>>> 3. change just one caller: org-print-icalendar-entries to make sure that 
>>> DOW is included.
>>> 3. is simple but ugly as sin, 
>> 
>> Ouch, ack :-)
>> 
>>> 4. change org-parse-time-string to handle a missing DOW.
>>> 4. is the best way to handle it within org.
>> 
>> Full ack.
>> 
>>> I vote for 1. where *you* have to do all the work ;-)
>> 
>> YMMD :-)
>> 
>> If my brain would be compatible to ELISP, I'd send a patch.
>> Promised.
>> 
>> But I'll take my chance and wait for someone else (you?)
>> implementing 4. to resolve this issue for everybody. I really
>> appreciate every second you guys invest in maintaining Org-mode!
>> 
> 
> I don't know about you, but whenever I engage in hand-to-hand combat
> with a complicated regexp, I come out bruised, muddied and a lot worse
> for wear. In any case, I'm attaching an org file with my investigations.
> It contains a description and a code block for testing.
> 
> I hope that the attachment will come through unscathed: it contains
> regexps, and munging a regexp that looks like hen scratchings in the
> first place through uncooperative mailers is not something to be
> relished.
> 
> BTW, I'm not advocating a change: I'll leave it to Karl to do that if he
> really wants to and to the maintainers to decide whether it's worth
> doing. But it can be done (more or less). And maybe somebody will come
> up with a better way than the proof-of-concept that I'm attaching here.

Hi Nick and Karl,

since we did make a change to Org a while ago to allow date stamps
without the name of the day, I think it is only consequent to also do
it for this case.  Must have slipped our attention back then.
The only thing we must ensure is that this regexp matches fast
as it is used a lot.

Nick's proposal works, except for the fact that is also matches when
the time is directly attached to day name.  Maybe it is cleaner to
not match in this case.

If we are going to make the day name optional, then it is better to
include matching of the whitespace after the date into the day-name
part of the regexp.

I am attaching Nick's file again, with a third proposal for an
updated regexp.

As far as speed is concerned, this regexp will, if there is name
and time, match directly and straight.  If the date name is
missing, it will notice on the first digit belonging to
the time and switch without backtracking (well, minimal
backtracking when there are multiple spaces) to the regexp
section for the time of day.  Rematching the spaces after the
date will be the only overhead.

Cheers

- Carsten

Attachment: reproducer.org
Description: Binary data




> 
> Nick
> 
> PS. BTW, if you look at the attachment, it helps if you have a wide window,
>    something like 165 characters wide.
> 
> <reproducer.org>


reply via email to

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