Mercurial > emacs
changeset 93448:9d52e0832665
Comment.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Mon, 31 Mar 2008 07:08:38 +0000 |
parents | 61387f2ed475 |
children | 64521597b7dd |
files | lisp/calendar/cal-hebrew.el |
diffstat | 1 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calendar/cal-hebrew.el Mon Mar 31 07:08:23 2008 +0000 +++ b/lisp/calendar/cal-hebrew.el Mon Mar 31 07:08:38 2008 +0000 @@ -278,12 +278,37 @@ nil if it is not visible in the current calendar window." ;; This test is only to speed things up a bit; it works fine without it. (if (memq displayed-month + ;; What this is doing is equivalent to +1,2,3,4,5 modulo 12, ie: + ;; (mapcar (lambda (n) (let ((x (mod n 12))) + ;; (if (zerop x) 12 + ;; x))) + ;; (number-sequence (1+ month) (+ 5 month))) + ;; Ie it makes a list: + ;; 2 3 4 5 6 when month = 1 + ;; 3 4 5 6 7 when month = 2 + ;; ... + ;; 8 9 10 11 12 when month = 7 + ;; 9 10 11 12 1 when month = 8 + ;; ... + ;; 12 1 2 3 4 when month = 11 + ;; 1 2 3 4 5 when month = 12 + ;; This implies that hebrew month N cannot occur outside + ;; Gregorian months N:N+6 (the calendar shows + ;; displayed-month +/- 1 at any time). + ;; So to put it another way: + ;; (calendar-interval month 1 displayed-month + ;; (if (> month displayed-month) 2 1)) + ;; must be >= 1 and <= 5. This could be expanded to: + ;; (if (> month displayed-month) (+ 12 (- displayed-month month)) + ;; (- displayed-month month) (list (if (< 11 month) (- month 11) (+ month 1)) (if (< 10 month) (- month 10) (+ month 2)) (if (< 9 month) (- month 9) (+ month 3)) (if (< 8 month) (- month 8) (+ month 4)) (if (< 7 month) (- month 7) (+ month 5)))) + ;; This is the same as holiday-julian, except the test of which + ;; year to use is different. (let* ((m1 displayed-month) (y1 displayed-year) (m2 displayed-month) @@ -299,6 +324,8 @@ (hebrew-end (calendar-hebrew-from-absolute end-date)) (hebrew-y1 (extract-calendar-year hebrew-start)) (hebrew-y2 (extract-calendar-year hebrew-end)) + ;; Hebrew new year is start of month 7. + ;; If hmonth >= 7, choose the higher year, y2. (year (if (< 6 month) hebrew-y2 hebrew-y1)) (date (calendar-gregorian-from-absolute (calendar-absolute-from-hebrew (list month day year)))))