emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Daniel Martins <danielemc@gmail.com>
Cc: Matt Lundin <mdl@imapmail.org>, Emacs-orgmode@gnu.org
Subject: Re: Re: Organizing a students live
Date: Sat, 26 Dec 2009 12:33:42 +0100	[thread overview]
Message-ID: <0B9ABBC1-4CE1-4F14-B056-8BEBFCB5B0F0@gmail.com> (raw)
In-Reply-To: <6ac505ad0912210754x72a4e37cx674d3bf0af5cb4d6@mail.gmail.com>

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 <mdl@imapmail.org>:
>> Daniel Martins <danielemc@gmail.com> 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
>>
>

  parent reply	other threads:[~2009-12-26 11:33 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-18 10:48 Organizing a students live Thomas Bach
2009-12-18 13:31 ` Giovanni Ridolfi
2009-12-18 14:41 ` Darlan Cavalcante Moreira
2009-12-19  9:16 ` Jan Böcker
2009-12-19 11:20   ` Thomas Bach
2009-12-20 22:54     ` Daniel Martins
2009-12-20 23:52       ` Matt Lundin
2009-12-21 15:54         ` Daniel Martins
2009-12-22 15:30           ` Matthew Lundin
2009-12-26 11:33           ` Carsten Dominik [this message]
2009-12-27  0:51             ` Daniel Martins
2009-12-28 18:47               ` Carsten Dominik
2009-12-28 21:09                 ` Daniel Martins
2010-01-03 13:17                   ` Carsten Dominik
2010-02-10 19:02                     ` Daniel Martins
     [not found]                       ` <m3pr4chpee.fsf@buster.johnrakestraw.com>
2010-02-10 19:23                         ` Daniel Martins
2010-02-10 19:45                           ` Stephan Schmitt
2010-02-10 21:57                             ` Daniel Martins
2010-02-10 22:20                           ` Nick Dokos
2010-02-10 22:31                             ` Carsten Dominik
2010-02-10 22:48                               ` Daniel Martins
2009-12-21 17:23     ` Jan Böcker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0B9ABBC1-4CE1-4F14-B056-8BEBFCB5B0F0@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=Emacs-orgmode@gnu.org \
    --cc=danielemc@gmail.com \
    --cc=mdl@imapmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).