# HG changeset patch # User Richard M. Stallman # Date 1027351873 0 # Node ID 5d2941da3ed11ec4618d290afe614ce767228ccf # Parent 6edefbc65dc48e833e86fde85bdb79ffc1d1019a (diary-omer, diary-yahrzeit, diary-rosh-hodesh, diary-parasha, diary-parasha): Add optional MARK parameter, specifying what face or character to use in the calendar display. These will now return (MARK . ENTRY). diff -r 6edefbc65dc4 -r 5d2941da3ed1 lisp/calendar/cal-hebrew.el --- a/lisp/calendar/cal-hebrew.el Mon Jul 22 15:30:43 2002 +0000 +++ b/lisp/calendar/cal-hebrew.el Mon Jul 22 15:31:13 2002 +0000 @@ -896,9 +896,12 @@ "Hebrew calendar equivalent of date diary entry." (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date))) -(defun diary-omer () +(defun diary-omer (&optional mark) "Omer count diary entry. -Entry applies if date is within 50 days after Passover." +Entry applies if date is within 50 days after Passover. + +An optional parameter MARK specifies a face or single-character string to +use when highlighting the day in the calendar." (let* ((passover (calendar-absolute-from-hebrew (list 1 15 (+ (extract-calendar-year date) 3760)))) @@ -906,30 +909,34 @@ (week (/ omer 7)) (day (% omer 7))) (if (and (> omer 0) (< omer 50)) - (format "Day %d%s of the omer (until sunset)" - omer - (if (zerop week) - "" - (format ", that is, %d week%s%s" - week - (if (= week 1) "" "s") - (if (zerop day) - "" - (format " and %d day%s" - day (if (= day 1) "" "s"))))))))) + (cons mark + (format "Day %d%s of the omer (until sunset)" + omer + (if (zerop week) + "" + (format ", that is, %d week%s%s" + week + (if (= week 1) "" "s") + (if (zerop day) + "" + (format " and %d day%s" + day (if (= day 1) "" "s")))))))))) -(defun diary-yahrzeit (death-month death-day death-year) +(defun diary-yahrzeit (death-month death-day death-year &optional mark) "Yahrzeit diary entry--entry applies if date is yahrzeit or the day before. Parameters are DEATH-MONTH, DEATH-DAY, DEATH-YEAR; the diary entry is assumed to be the name of the person. Date of death is on the *civil* calendar; although the date of death is specified by the civil calendar, the proper Hebrew calendar yahrzeit is determined. If `european-calendar-style' is t, the -order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR." +order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR. + +An optional parameter MARK specifies a face or single-character string to +use when highlighting the day in the calendar." (let* ((h-date (calendar-hebrew-from-absolute (calendar-absolute-from-gregorian (if european-calendar-style (list death-day death-month death-year) - (list death-month death-day death-year))))) + (list death-month death-day death-year))))) (h-month (extract-calendar-month h-date)) (h-day (extract-calendar-day h-date)) (h-year (extract-calendar-year h-date)) @@ -938,18 +945,22 @@ (diff (- yr h-year)) (y (hebrew-calendar-yahrzeit h-date yr))) (if (and (> diff 0) (or (= y d) (= y (1+ d)))) - (format "Yahrzeit of %s%s: %d%s anniversary" - entry - (if (= y d) "" " (evening)") - diff - (cond ((= (% diff 10) 1) "st") - ((= (% diff 10) 2) "nd") - ((= (% diff 10) 3) "rd") - (t "th")))))) + (cons mark + (format "Yahrzeit of %s%s: %d%s anniversary" + entry + (if (= y d) "" " (evening)") + diff + (cond ((= (% diff 10) 1) "st") + ((= (% diff 10) 2) "nd") + ((= (% diff 10) 3) "rd") + (t "th"))))))) -(defun diary-rosh-hodesh () +(defun diary-rosh-hodesh (&optional mark) "Rosh Hodesh diary entry. -Entry applies if date is Rosh Hodesh, the day before, or the Saturday before." +Entry applies if date is Rosh Hodesh, the day before, or the Saturday before. + +An optional parameter MARK specifies a face or single-character string to +use when highlighting the day in the calendar." (let* ((d (calendar-absolute-from-gregorian date)) (h-date (calendar-hebrew-from-absolute d)) (h-month (extract-calendar-month h-date)) @@ -965,47 +976,52 @@ (h-yesterday (extract-calendar-day (calendar-hebrew-from-absolute (1- d))))) (if (or (= h-day 30) (and (= h-day 1) (/= h-month 7))) - (format - "Rosh Hodesh %s" - (if (= h-day 30) - (format - "%s (first day)" - ;; next month must be in the same year since this - ;; month can't be the last month of the year since - ;; it has 30 days - (aref h-month-names h-month)) - (if (= h-yesterday 30) - (format "%s (second day)" this-month) - this-month))) - (if (= (% d 7) 6);; Saturday--check for Shabbat Mevarchim - (cond ((and (> h-day 22) (/= h-month 6) (= 29 last-day)) - (format "Mevarchim Rosh Hodesh %s (%s)" - (aref h-month-names - (if (= h-month - (hebrew-calendar-last-month-of-year - h-year)) - 0 h-month)) - (aref calendar-day-name-array (- 29 h-day)))) - ((and (< h-day 30) (> h-day 22) (= 30 last-day)) - (format "Mevarchim Rosh Hodesh %s (%s-%s)" - (aref h-month-names h-month) - (if (= h-day 29) - "tomorrow" - (aref calendar-day-name-array (- 29 h-day))) - (aref calendar-day-name-array - (% (- 30 h-day) 7))))) + (cons mark + (format + "Rosh Hodesh %s" + (if (= h-day 30) + (format + "%s (first day)" + ;; next month must be in the same year since this + ;; month can't be the last month of the year since + ;; it has 30 days + (aref h-month-names h-month)) + (if (= h-yesterday 30) + (format "%s (second day)" this-month) + this-month)))) + (if (= (% d 7) 6) ;; Saturday--check for Shabbat Mevarchim + (cons mark + (cond ((and (> h-day 22) (/= h-month 6) (= 29 last-day)) + (format "Mevarchim Rosh Hodesh %s (%s)" + (aref h-month-names + (if (= h-month + (hebrew-calendar-last-month-of-year + h-year)) + 0 h-month)) + (aref calendar-day-name-array (- 29 h-day)))) + ((and (< h-day 30) (> h-day 22) (= 30 last-day)) + (format "Mevarchim Rosh Hodesh %s (%s-%s)" + (aref h-month-names h-month) + (if (= h-day 29) + "tomorrow" + (aref calendar-day-name-array (- 29 h-day))) + (aref calendar-day-name-array + (% (- 30 h-day) 7)))))) (if (and (= h-day 29) (/= h-month 6)) - (format "Erev Rosh Hodesh %s" - (aref h-month-names - (if (= h-month - (hebrew-calendar-last-month-of-year - h-year)) - 0 h-month)))))))) + (cons (format "Erev Rosh Hodesh %s" + (aref h-month-names + (if (= h-month + (hebrew-calendar-last-month-of-year + h-year)) + 0 h-month))))))))) -(defun diary-parasha () - "Parasha diary entry--entry applies if date is a Saturday." +(defun diary-parasha (&optional mark) + "Parasha diary entry--entry applies if date is a Saturday. + +An optional parameter MARK specifies a face or single-character string to +use when highlighting the day in the calendar." (let ((d (calendar-absolute-from-gregorian date))) - (if (= (% d 7) 6);; Saturday + (if (= (% d 7) 6) ;; Saturday (let* ((h-year (extract-calendar-year (calendar-hebrew-from-absolute d))) @@ -1024,24 +1040,25 @@ (t "regular"))) (year-format (symbol-value - (intern (format "hebrew-calendar-year-%s-%s-%s";; keviah + (intern (format "hebrew-calendar-year-%s-%s-%s" ;; keviah rosh-hashanah-day type passover-day)))) - (first-saturday;; of Hebrew year + (first-saturday ;; of Hebrew year (calendar-dayname-on-or-before 6 (+ 6 rosh-hashanah))) - (saturday;; which Saturday of the Hebrew year + (saturday ;; which Saturday of the Hebrew year (/ (- d first-saturday) 7)) (parasha (aref year-format saturday))) (if parasha - (format - "Parashat %s" - (if (listp parasha);; Israel differs from diaspora - (if (car parasha) - (format "%s (diaspora), %s (Israel)" - (hebrew-calendar-parasha-name (car parasha)) - (hebrew-calendar-parasha-name (cdr parasha))) - (format "%s (Israel)" - (hebrew-calendar-parasha-name (cdr parasha)))) - (hebrew-calendar-parasha-name parasha)))))))) + (cons mark + (format + "Parashat %s" + (if (listp parasha) ;; Israel differs from diaspora + (if (car parasha) + (format "%s (diaspora), %s (Israel)" + (hebrew-calendar-parasha-name (car parasha)) + (hebrew-calendar-parasha-name (cdr parasha))) + (format "%s (Israel)" + (hebrew-calendar-parasha-name (cdr parasha)))) + (hebrew-calendar-parasha-name parasha))))))))) (defvar hebrew-calendar-parashiot-names ["Bereshith" "Noah" "Lech L'cha" "Vayera" "Hayei Sarah" "Toledoth"