Someone could send me an example of the use of the org-diary-class ?? Daniel 2010/1/3 Carsten Dominik > > On Dec 28, 2009, at 10:09 PM, Daniel Martins wrote: > > > Interesting. But too complex for now - and I actually do prefer local >> control. >> >> I know it is complex. >> >> I thought about the first steps >> >> I was thinking about a variable (list?) with predefined holidays >> >> or better omit-holidays >> >> such as org-omit-holidays >> >> we could add the omit dates in any place >> (add-to-list 'org-omit-holidays "25 Dec") >> (add-to-list 'org-omit-holidays "1 Jan") >> (add-to-list 'org-omit-holidays "1 May") >> etc. >> >> > Hmm, this is a possibility - but I don't have the time now to implement it. > And then the question remains: What exactly should be omitted on these > days? > Everything? - probably not. So I don't see how this leads to useful > control, unless > we have a really fine-grained control for each entry. > > > >> Then we could change (adapt) the >> >> function calendar-check-holydays from holidays.el >> >> >> I did a search-replace to something like this: >> >> (defun org-check-calendar-omit-holidays (date) >> "Check the list of org-omit-holidays for any that occur on DATE. >> The value returned is a list of strings of relevant org-omit-holiday >> descriptions. >> The org-omit-holidays are those in the list `org-omit-holidays'." >> (let ((displayed-month (extract-calendar-month date)) >> (displayed-year (extract-calendar-year date)) >> (org-omit-holiday-list)) >> (dolist (h (calendar-org-omit-holiday-list)) >> (if (calendar-date-equal date (car h)) >> (setq org-omit-holiday-list (append org-omit-holiday-list (cdr >> h))))) >> org-omit-holiday-list)) >> >> with these adaptation we could use a slighly changed version of the >> "diary-schedule" function I sent before. >> >> I did not go further nor tested it. >> >> Thinking again now: I think it is better to avoid holidays than week >> numbers. The problem is that we have to decide which holidays are "really" >> holidays and not rely on the holidays variables that come with Emacs. >> > > > I do not agree. Lectures are not only skipped on holidays, but also on > other > days, so a more general approach is needed. > > > >> >> Daniel >> >> 2009/12/28 Carsten Dominik >> Hi Daniel, >> >> >> On Dec 27, 2009, at 1:51 AM, Daniel Martins wrote: >> >> I liked the idea of org-diary-class! >> >> I have added the function now to org-agenda.el >> >> >> >> About avoiding holidays and certain weeks: >> >> I used remind and wyrd for a while and they are a quite good software >> for dealing with such appts. >> >> There we have the OMIT function where we determine holidays and other >> non-working days including Sat and Sundays >> >> >> Normally we have an OMIT list at the beginning of file >> >> Some functions simply omit those dates >> >> Other expressions use another keyword AFTER (or BEFORE) to change >> OMIT behaviour >> >> like >> 23 Mar AFTER OMIT "Bank payment" >> >> eg If 23 Mar is in Saturday it will appear in Monday >> >> This preamble is just to say 2 things: >> >> 1) remind/wyrd could be used as a benchmark for some of the calendar >> isuues we have >> >> 2) I do not know if the week number in a year is a practical way of >> setting exceptions to org-diary-class >> >> Daniel >> >> PS Wyrd page is >> >> http://pessimization.com/software/wyrd/ >> >> Interesting. But too complex for now - and I actually do prefer local >> control. >> >> - Carsten >> >> >> >> >> >> >> >> 2009/12/26 Carsten Dominik : >> Hi Daniel, >> >> I think it is a good idea to add such a function to org-mode. But I >> am not sure if skipping holidays is the best, because Universities >> also have lecture-free weeks etc. >> >> So I am more thinking about a function like this (untested) >> >> (defun org-diary-class (m1 d1 y1 m2 d2 y2 dayname &rest skip-weeks) >> "Entry applies if date is between dates on DAYNAME, but skips SKIP-WEEKS. >> Order of the parameters is M1, D1, Y1, M2, D2, Y2 if >> `european-calendar-style' is nil, and D1, M1, Y1, D2, M2, Y2 if >> `european-calendar-style' is t. The weeks are ISO week numbers where >> the item should not apply." >> (let* ((date1 (calendar-absolute-from-gregorian >> (if european-calendar-style >> (list d1 m1 y1) >> (list m1 d1 y1)))) >> (date2 (calendar-absolute-from-gregorian >> (if european-calendar-style >> (list d2 m2 y2) >> (list m2 d2 y2)))) >> (d (calendar-absolute-from-gregorian date))) >> (and >> (<= date1 d) >> (<= d date2) >> (= (calendar-day-of-week date) dayname) >> (or (not skip-weeks) >> (progn >> (require 'cal-iso) >> (not (member (car (calendar-iso-from-absolute d)) skip-weeks)))) >> entry))) >> >> >> What do you think? >> >> - Carsten >> >> On Dec 21, 2009, at 4:54 PM, Daniel Martins wrote: >> >> In fact, it helps! Thanks >> >> However a sentence like this: >> >> >> +# a class that meets every Monday evening between February 16 and >> April 20, 2009 >> ** Class 7:00pm-9:00pm >> <%%(and (= 1 (calendar-day-of-week date)) (diary-block 2 16 2009 4 20 >> 2009))> >> >> is not an example of simplicity and visibility for a quite common feature! >> >> Maybe as a suggestion we could encapsulate such a huge expression in a >> simpler org-mode function ? >> >> Daniel >> >> >> PS In >> >> http://www.emacswiki.org/cgi-bin/wiki/DiaryMode#toc12 >> >> I found another suggestion which I do not know how to include in org-mode >> >> >> ------------------------------------ >> Schedule >> >> If you want to write a schedule for school or university, you need to >> define a block (it’s derived from diary-block) between two dates and a >> weekday. The following function also recognizes holidays and won’t >> send you to school on those days… :) >> >> (defun diary-schedule (m1 d1 y1 m2 d2 y2 dayname) >> "Entry applies if date is between dates on DAYNAME. >> Order of the parameters is M1, D1, Y1, M2, D2, Y2 if >> `european-calendar-style' is nil, and D1, M1, Y1, D2, M2, Y2 if >> `european-calendar-style' is t. Entry does not apply on a history." >> (let ((date1 (calendar-absolute-from-gregorian >> (if european-calendar-style >> (list d1 m1 y1) >> (list m1 d1 y1)))) >> (date2 (calendar-absolute-from-gregorian >> (if european-calendar-style >> (list d2 m2 y2) >> (list m2 d2 y2)))) >> (d (calendar-absolute-from-gregorian date))) >> (if (and >> (<= date1 d) >> (<= d date2) >> (= (calendar-day-of-week date) dayname) >> (not (check-calendar-holidays date)) >> ) >> entry))) >> >> Then: "&%%(diary-schedule 22 4 2003 1 8 2003 2) 18:00 History" >> >> >> ------------------------------------ >> >> >> >> 2009/12/20 Matt Lundin : >> >> Daniel Martins writes: >> >> All academics here present (including of course Carsten) suffer from >> the same problem, I think >> >> >> *** Math classes >> <2009-12-10 Thu 11:00-14:00 +1w> >> >> >> will repeat forever and ever... >> >> We need to create a schedule for a period. >> >> The package "remind" (and its simple interface "wyrd") do this job >> wonderfully but I do not know how to deal with this problem in Org >> mode >> >> The following FAQ should help: >> >> http://orgmode.org/worg/org-faq.php#diary-sexp-in-org-files >> >> - Matt >> >> >> >> >> >> - Carsten >> >> >> >> >> > - Carsten > > > >