From b532875a6021cd1715321dda932b187522840944 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 13 Aug 2015 12:16:25 -0700 Subject: [PATCH] Optional args for holiday-greek-orthodox-easter MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * etc/NEWS: Document this. * lisp/calendar/holidays.el (holiday-greek-orthodox-easter): Add optional args N and STRING, mimicking the API and code of ‘holiday-easter-etc’. From suggestion by Foivos S. Zakkak (Bug#21256). --- etc/NEWS | 3 +++ lisp/calendar/holidays.el | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 0a33a6ef3ee..3ec16f54458 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -551,6 +551,9 @@ which means to do nothing special with the mode line in calendars. The option customizes which day headers receive the `calendar-weekend-header' face. +--- +*** New optional args N and STRING for ‘holiday-greek-orthodox-easter’. + --- *** Many items obsolete since at least version 23.1 have been removed. The majority were function/variable/face aliases, too numerous to list here. diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el index 8085c1cf119..6d7cea6b8c5 100644 --- a/lisp/calendar/holidays.el +++ b/lisp/calendar/holidays.el @@ -791,8 +791,16 @@ is non-nil)." ;; Prior call to calendar-julian-from-absolute will autoload cal-julian. (declare-function calendar-julian-to-absolute "cal-julian" (date)) -(defun holiday-greek-orthodox-easter () - "Date of Easter according to the rule of the Council of Nicaea." +(defun holiday-greek-orthodox-easter (&optional n string) + "Date of Nth day after Easter (named STRING), if visible in calendar window. +It is calculated according to the rule of the Council of Nicaea. +Negative values of N are interpreted as days before Easter. +STRING is used purely for display purposes. The return value has +the form ((MONTH DAY YEAR) STRING), where the date is that of the +Nth day before or after Easter. + +For backwards compatibility, if this function is called with no +arguments, it returns the date of Pascha (Greek Orthodox Easter)." (let* ((m displayed-month) (y displayed-year) (julian-year (progn @@ -808,11 +816,10 @@ is non-nil)." (paschal-moon ; day after full moon on or after March 21 (- (calendar-julian-to-absolute (list 4 19 julian-year)) shifted-epact)) - (nicaean-easter ; Sunday following the Paschal moon - (calendar-gregorian-from-absolute - (calendar-dayname-on-or-before 0 (+ paschal-moon 7))))) - (if (calendar-date-is-visible-p nicaean-easter) - (list (list nicaean-easter "Pascha (Greek Orthodox Easter)"))))) + (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7))) + (greg (calendar-gregorian-from-absolute (+ abs-easter (or n 0))))) + (if (calendar-date-is-visible-p greg) + (list (list greg (or string "Pascha (Greek Orthodox Easter)")))))) (provide 'holidays) -- 2.39.2