emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] Re: Organizing a students live


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Organizing a students live
Date: Sat, 26 Dec 2009 12:33:42 +0100

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 <address@hidden>:
Daniel Martins <address@hidden> 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







reply via email to

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