# HG changeset patch # User Glenn Morris # Date 1206928715 0 # Node ID 6a9bd546f9c75c9e90870cd6ef03c8d54a1f9ee1 # Parent a6d8268a0da6ba2a9528f6311c174ae3c7df3668 (holiday-julian): Fix a a problem with holidays in the last fortnight in Julian October. diff -r a6d8268a0da6 -r 6a9bd546f9c7 lisp/calendar/cal-julian.el --- a/lisp/calendar/cal-julian.el Mon Mar 31 01:49:57 2008 +0000 +++ b/lisp/calendar/cal-julian.el Mon Mar 31 01:58:35 2008 +0000 @@ -136,16 +136,20 @@ (defvar displayed-month) (defvar displayed-year) +;; FIXME same as hebrew ;;;###holiday-autoload (defun holiday-julian (month day string) "Holiday on MONTH, DAY (Julian) called STRING. If MONTH, DAY (Julian) is visible, the value returned is corresponding Gregorian date in the form of the list (((month day year) STRING)). Returns nil if it is not visible in the current calendar window." + ;; We need to choose the Julian year associated with month and day + ;; that might make them visible. (let* ((m1 displayed-month) (y1 displayed-year) (m2 displayed-month) (y2 displayed-year) + ;; Absolute date of first/last dates in calendar window. (start-date (progn (increment-calendar-month m1 y1 -1) (calendar-absolute-from-gregorian (list m1 1 y1)))) @@ -153,11 +157,21 @@ (increment-calendar-month m2 y2 1) (calendar-absolute-from-gregorian (list m2 (calendar-last-day-of-month m2 y2) y2)))) + ;; Julian date of first/last date in calendar window. (julian-start (calendar-julian-from-absolute start-date)) (julian-end (calendar-julian-from-absolute end-date)) + ;; Julian year of first/last dates. + ;; Can only differ if displayed-month = 12, 1, 2. (julian-y1 (extract-calendar-year julian-start)) (julian-y2 (extract-calendar-year julian-end)) - (year (if (< 10 month) julian-y1 julian-y2)) + ;; Choose which year might be visible in the window. + ;; Obviously it only matters when y1 and y2 differ, ie + ;; when the _Julian_ new year is visible. + ;; In the Gregorian case, we'd use y1 (the lower year) + ;; when month >= 11. In the Julian case, there is an offset + ;; of two weeks (ie 1 Nov Greg = 19 Oct Julian). So we use + ;; month >= 10, since it can't cause any problems. + (year (if (> month 9) julian-y1 julian-y2)) (date (calendar-gregorian-from-absolute (calendar-absolute-from-julian (list month day year))))) (if (calendar-date-is-visible-p date)