From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Re: Organizing a students live Date: Sat, 26 Dec 2009 12:33:42 +0100 Message-ID: <0B9ABBC1-4CE1-4F14-B056-8BEBFCB5B0F0@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> 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 1NOUu8-0004A9-Rv for emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:33:52 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NOUu4-00047H-3A for Emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:33:52 -0500 Received: from [199.232.76.173] (port=43569 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NOUu3-000471-Ua for Emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:33:47 -0500 Received: from mail-fx0-f228.google.com ([209.85.220.228]:42586) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NOUu3-0002FB-MI for Emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:33:47 -0500 Received: by fxm28 with SMTP id 28so597697fxm.26 for ; Sat, 26 Dec 2009 03:33:46 -0800 (PST) In-Reply-To: <6ac505ad0912210754x72a4e37cx674d3bf0af5cb4d6@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, 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-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 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-=20= > mode > > > ------------------------------------ > Schedule > > If you want to write a schedule for school or university, you need to > define a block (it=92s derived from diary-block) between two dates 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 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 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 >> >