From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Re: Organizing a students live Date: Mon, 28 Dec 2009 19:47:11 +0100 Message-ID: <7261F3CD-8614-462A-A47E-5C2B16374A51@gmail.com> References: <877hskh81j.fsf@uni-mainz.de> <4B2C9A00.4000101@jboecker.de> <87oclv2osr.fsf@uni-mainz.de> <6ac505ad0912201454r1a9a951wbe4607adfa824376@mail.gmail.com> <6ac505ad0912210754x72a4e37cx674d3bf0af5cb4d6@mail.gmail.com> <0B9ABBC1-4CE1-4F14-B056-8BEBFCB5B0F0@gmail.com> <6ac505ad0912261651v553e4701y8299e3cd0ad0fdb9@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=WINDOWS-1252; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NPKcm-0003uT-E8 for emacs-orgmode@gnu.org; Mon, 28 Dec 2009 13:47:24 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NPKch-0003qA-EE for Emacs-orgmode@gnu.org; Mon, 28 Dec 2009 13:47:23 -0500 Received: from [199.232.76.173] (port=49062 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NPKch-0003q0-6g for Emacs-orgmode@gnu.org; Mon, 28 Dec 2009 13:47:19 -0500 Received: from mail-fx0-f228.google.com ([209.85.220.228]:34460) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NPKcg-0000Zc-ND for Emacs-orgmode@gnu.org; Mon, 28 Dec 2009 13:47:19 -0500 Received: by fxm28 with SMTP id 28so1930318fxm.26 for ; Mon, 28 Dec 2009 10:47:16 -0800 (PST) In-Reply-To: <6ac505ad0912261651v553e4701y8299e3cd0ad0fdb9@mail.gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Daniel Martins Cc: Matt Lundin , Emacs-orgmode@gnu.org 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 =20= 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-=20= >> 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 >> (<=3D date1 d) >> (<=3D d date2) >> (=3D (calendar-day-of-week date) dayname) >> (or (not skip-weeks) >> (progn >> (require 'cal-iso) >> (not (member (car (calendar-iso-from-absolute d)) skip-=20 >> 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 (=3D 1 (calendar-day-of-week date)) (diary-block 2 16 2009 4 = =20 >>> 20 >>> 2009))> >>> >>> is not an example of simplicity and visibility for a quite common =20= >>> feature! >>> >>> Maybe as a suggestion we could encapsulate such a huge expression =20= >>> 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 =20 >>> org-mode >>> >>> >>> ------------------------------------ >>> Schedule >>> >>> If you want to write a schedule for school or university, you need =20= >>> to >>> define a block (it=92s derived from diary-block) between two dates =20= >>> and a >>> weekday. The following function also recognizes holidays and won=92t >>> send you to school on those days=85 :) >>> >>> (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 =20 >>> 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 >>> (<=3D date1 d) >>> (<=3D d date2) >>> (=3D (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 =20= >>>>> 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