emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Chris Maier <christopher.maier@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Last workday of the month
Date: Sat, 30 Oct 2010 14:55:57 -0400	[thread overview]
Message-ID: <AANLkTim4RGcj9XNCrvZme_Qv7PA3EppUgEGHc=sohTH_@mail.gmail.com> (raw)

I'm trying to come up with a sexp diary entry that shows my payday,
which is the last weekday of the month, in my Org agenda.  I've tried
to adapt the example given in the Emacs manual and this is what I came
up with:

%%(let ((month (car date))
        (day (cadr date))
        (dayname (calendar-day-of-week date)))
    (or
     ;; months with 31 days
     (and (memq month '(1 3 5 7 8 10 12))
             (or (and (= day 31)
                      (memq dayname '(1 2 3 4 5)))
                 (and (memq day '(29 30))
                      (= dayname 5))))
     ;; months with 30 days
     (and (memq month '(4 6 9 11))
          (or (and (= day 30)
                   (memq dayname '(1 2 3 4 5)))
              (and (memq day '(28 29))
                   (= dayname 5))))
     ;; February (the weird one)
     (and (= month 2)
          (or (and (memq day '(28 29))
                   (memq dayname '(1 2 3 4 5)))
              (and (memq day '(26 27 28))
                   (= dayname 5)))))) Chris' Paycheck Deposited

It appears to work so far.  However, I'm certain there's got to be a
more concise way of coding this, but I can't seem to find any
pre-existing calendar functions that might help.  Am I missing
something?

To make this even better, is there some way to consult another file of
diary entries containing all the holidays at my workplace, so the
diary entry would show up on the last weekday of the month that is not
a company holiday?

Thanks!

Chris

             reply	other threads:[~2010-10-30 18:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-30 18:55 Chris Maier [this message]
2010-10-30 20:19 ` Last workday of the month Nick Dokos
2010-10-31  0:03   ` Chris Maier
2010-10-31  1:36     ` Chris Maier

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='AANLkTim4RGcj9XNCrvZme_Qv7PA3EppUgEGHc=sohTH_@mail.gmail.com' \
    --to=christopher.maier@gmail.com \
    --cc=emacs-orgmode@gnu.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).