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: Sun, 3 Jan 2010 14:17:53 +0100 [thread overview]
Message-ID: <A79EECAB-AD61-4A9E-A02C-BAF5731C2BA0@gmail.com> (raw)
In-Reply-To: <6ac505ad0912281309v53e8a923v6490c2f780c73a64@mail.gmail.com>
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 <carsten.dominik@gmail.com>
> 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 <carsten.dominik@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
>
>
>
>
>
> - Carsten
>
>
>
>
- Carsten
next prev parent reply other threads:[~2010-01-03 13:18 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
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 [this message]
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=A79EECAB-AD61-4A9E-A02C-BAF5731C2BA0@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).