annotate lisp/calendar/cal-hebrew.el @ 24206:d3649b38bb37

(w32_wnd_proc): Fix bug introduced by previous change; the lwindow, rwindow and apps keys could not be used as function keys, because they were being passed to TranslateMessage which ignores them. Also, key was being changed to SPC.
author Andrew Innes <andrewi@gnu.org>
date Wed, 27 Jan 1999 21:53:27 +0000
parents cc07d0f935d4
children 7a94f1c588c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13052
71be832cf34a New file.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 13051
diff changeset
1 ;;; cal-hebrew.el --- calendar functions for the Hebrew calendar.
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
2
20462
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20267
diff changeset
3 ;; Copyright (C) 1995, 1997 Free Software Foundation, Inc.
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
4
13051
0351b3061992 *** empty log message ***
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 13050
diff changeset
5 ;; Author: Nachum Dershowitz <nachum@cs.uiuc.edu>
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
6 ;; Edward M. Reingold <reingold@cs.uiuc.edu>
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
7 ;; Keywords: calendar
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
8 ;; Human-Keywords: Hebrew calendar, calendar, diary
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
9
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
11
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
15 ;; any later version.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
16
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
20 ;; GNU General Public License for more details.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
21
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13674
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13674
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13674
diff changeset
25 ;; Boston, MA 02111-1307, USA.
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
26
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
27 ;;; Commentary:
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
28
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
29 ;; This collection of functions implements the features of calendar.el and
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
30 ;; diary.el that deal with the Hebrew calendar.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
31
20462
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20267
diff changeset
32 ;; Technical details of all the calendrical calculations can be found in
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20267
diff changeset
33 ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20267
diff changeset
34 ;; Cambridge University Press (1997).
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20267
diff changeset
35
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
36 ;; Comments, corrections, and improvements should be sent to
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
37 ;; Edward M. Reingold Department of Computer Science
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
38 ;; (217) 333-6733 University of Illinois at Urbana-Champaign
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
39 ;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
40 ;; Urbana, Illinois 61801
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
41
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
42 ;;; Code:
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
43
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
44 (require 'calendar)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
45
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
46 (defun calendar-hebrew-from-absolute (date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
47 "Compute the Hebrew date (month day year) corresponding to absolute DATE.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
48 The absolute date is the number of days elapsed since the (imaginary)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
49 Gregorian date Sunday, December 31, 1 BC."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
50 (let* ((greg-date (calendar-gregorian-from-absolute date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
51 (month (aref [9 10 11 12 1 2 3 4 7 7 7 8]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
52 (1- (extract-calendar-month greg-date))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
53 (day)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
54 (year (+ 3760 (extract-calendar-year greg-date))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
55 (while (>= date (calendar-absolute-from-hebrew (list 7 1 (1+ year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
56 (setq year (1+ year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
57 (let ((length (hebrew-calendar-last-month-of-year year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
58 (while (> date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
59 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
60 (list month
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
61 (hebrew-calendar-last-day-of-month month year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
62 year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
63 (setq month (1+ (% month length)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
64 (setq day (1+
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
65 (- date (calendar-absolute-from-hebrew (list month 1 year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
66 (list month day year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
67
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
68 (defun hebrew-calendar-leap-year-p (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
69 "t if YEAR is a Hebrew calendar leap year."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
70 (< (% (1+ (* 7 year)) 19) 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
71
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
72 (defun hebrew-calendar-last-month-of-year (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
73 "The last month of the Hebrew calendar YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
74 (if (hebrew-calendar-leap-year-p year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
75 13
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
76 12))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
77
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
78 (defun hebrew-calendar-last-day-of-month (month year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
79 "The last day of MONTH in YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
80 (if (or (memq month (list 2 4 6 10 13))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
81 (and (= month 12) (not (hebrew-calendar-leap-year-p year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
82 (and (= month 8) (not (hebrew-calendar-long-heshvan-p year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
83 (and (= month 9) (hebrew-calendar-short-kislev-p year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
84 29
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
85 30))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
86
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
87 (defun hebrew-calendar-elapsed-days (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
88 "Days from Sun. prior to start of Hebrew calendar to mean conjunction of Tishri of Hebrew YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
89 (let* ((months-elapsed
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
90 (+ (* 235 (/ (1- year) 19));; Months in complete cycles so far.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
91 (* 12 (% (1- year) 19)) ;; Regular months in this cycle
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
92 (/ (1+ (* 7 (% (1- year) 19))) 19)));; Leap months this cycle
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
93 (parts-elapsed (+ 204 (* 793 (% months-elapsed 1080))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
94 (hours-elapsed (+ 5
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
95 (* 12 months-elapsed)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
96 (* 793 (/ months-elapsed 1080))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
97 (/ parts-elapsed 1080)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
98 (parts ;; Conjunction parts
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
99 (+ (* 1080 (% hours-elapsed 24)) (% parts-elapsed 1080)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
100 (day ;; Conjunction day
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
101 (+ 1 (* 29 months-elapsed) (/ hours-elapsed 24)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
102 (alternative-day
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
103 (if (or (>= parts 19440) ;; If the new moon is at or after midday,
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
104 (and (= (% day 7) 2);; ...or is on a Tuesday...
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
105 (>= parts 9924) ;; at 9 hours, 204 parts or later...
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
106 (not (hebrew-calendar-leap-year-p year)));; of a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
107 ;; common year,
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
108 (and (= (% day 7) 1);; ...or is on a Monday...
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
109 (>= parts 16789) ;; at 15 hours, 589 parts or later...
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
110 (hebrew-calendar-leap-year-p (1- year))));; at the end
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
111 ;; of a leap year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
112 ;; Then postpone Rosh HaShanah one day
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
113 (1+ day)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
114 ;; Else
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
115 day)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
116 (if ;; If Rosh HaShanah would occur on Sunday, Wednesday, or Friday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
117 (memq (% alternative-day 7) (list 0 3 5))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
118 ;; Then postpone it one (more) day and return
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
119 (1+ alternative-day)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
120 ;; Else return
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
121 alternative-day)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
122
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
123 (defun hebrew-calendar-days-in-year (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
124 "Number of days in Hebrew YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
125 (- (hebrew-calendar-elapsed-days (1+ year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
126 (hebrew-calendar-elapsed-days year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
127
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
128 (defun hebrew-calendar-long-heshvan-p (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
129 "t if Heshvan is long in Hebrew YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
130 (= (% (hebrew-calendar-days-in-year year) 10) 5))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
131
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
132 (defun hebrew-calendar-short-kislev-p (year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
133 "t if Kislev is short in Hebrew YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
134 (= (% (hebrew-calendar-days-in-year year) 10) 3))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
135
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
136 (defun calendar-absolute-from-hebrew (date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
137 "Absolute date of Hebrew DATE.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
138 The absolute date is the number of days elapsed since the (imaginary)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
139 Gregorian date Sunday, December 31, 1 BC."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
140 (let* ((month (extract-calendar-month date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
141 (day (extract-calendar-day date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
142 (year (extract-calendar-year date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
143 (+ day ;; Days so far this month.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
144 (if (< month 7);; before Tishri
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
145 ;; Then add days in prior months this year before and after Nisan
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
146 (+ (calendar-sum
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
147 m 7 (<= m (hebrew-calendar-last-month-of-year year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
148 (hebrew-calendar-last-day-of-month m year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
149 (calendar-sum
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
150 m 1 (< m month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
151 (hebrew-calendar-last-day-of-month m year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
152 ;; Else add days in prior months this year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
153 (calendar-sum
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
154 m 7 (< m month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
155 (hebrew-calendar-last-day-of-month m year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
156 (hebrew-calendar-elapsed-days year);; Days in prior years.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
157 -1373429))) ;; Days elapsed before absolute date 1.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
158
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
159 (defvar calendar-hebrew-month-name-array-common-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
160 ["Nisan" "Iyar" "Sivan" "Tammuz" "Av" "Elul" "Tishri"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
161 "Heshvan" "Kislev" "Teveth" "Shevat" "Adar"])
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
162
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
163 (defvar calendar-hebrew-month-name-array-leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
164 ["Nisan" "Iyar" "Sivan" "Tammuz" "Av" "Elul" "Tishri"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
165 "Heshvan" "Kislev" "Teveth" "Shevat" "Adar I" "Adar II"])
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
166
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
167 (defun calendar-hebrew-date-string (&optional date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
168 "String of Hebrew date before sunset of Gregorian DATE.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
169 Defaults to today's date if DATE is not given.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
170 Driven by the variable `calendar-date-display-form'."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
171 (let* ((hebrew-date (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
172 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
173 (or date (calendar-current-date)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
174 (calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
175 (if (hebrew-calendar-leap-year-p (extract-calendar-year hebrew-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
176 calendar-hebrew-month-name-array-leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
177 calendar-hebrew-month-name-array-common-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
178 (calendar-date-string hebrew-date nil t)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
179
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
180 (defun calendar-print-hebrew-date ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
181 "Show the Hebrew calendar equivalent of the date under the cursor."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
182 (interactive)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
183 (message "Hebrew date (until sunset): %s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
184 (calendar-hebrew-date-string (calendar-cursor-to-date t))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
185
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
186 (defun hebrew-calendar-yahrzeit (death-date year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
187 "Absolute date of the anniversary of Hebrew DEATH-DATE in Hebrew YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
188 (let* ((death-day (extract-calendar-day death-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
189 (death-month (extract-calendar-month death-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
190 (death-year (extract-calendar-year death-date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
191 (cond
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
192 ;; If it's Heshvan 30 it depends on the first anniversary; if
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
193 ;; that was not Heshvan 30, use the day before Kislev 1.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
194 ((and (= death-month 8)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
195 (= death-day 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
196 (not (hebrew-calendar-long-heshvan-p (1+ death-year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
197 (1- (calendar-absolute-from-hebrew (list 9 1 year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
198 ;; If it's Kislev 30 it depends on the first anniversary; if
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
199 ;; that was not Kislev 30, use the day before Teveth 1.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
200 ((and (= death-month 9)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
201 (= death-day 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
202 (hebrew-calendar-short-kislev-p (1+ death-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
203 (1- (calendar-absolute-from-hebrew (list 10 1 year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
204 ;; If it's Adar II, use the same day in last month of
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
205 ;; year (Adar or Adar II).
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
206 ((= death-month 13)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
207 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
208 (list (hebrew-calendar-last-month-of-year year) death-day year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
209 ;; If it's the 30th in Adar I and year is not a leap year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
210 ;; (so Adar has only 29 days), use the last day in Shevat.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
211 ((and (= death-day 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
212 (= death-month 12)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
213 (not (hebrew-calendar-leap-year-p year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
214 (calendar-absolute-from-hebrew (list 11 30 year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
215 ;; In all other cases, use the normal anniversary of the date of death.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
216 (t (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
217 (list death-month death-day year))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
218
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
219 (defun calendar-goto-hebrew-date (date &optional noecho)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
220 "Move cursor to Hebrew DATE; echo Hebrew date unless NOECHO is t."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
221 (interactive
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
222 (let* ((today (calendar-current-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
223 (year (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
224 "Hebrew calendar year (>3760): "
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
225 '(lambda (x) (> x 3760))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
226 (int-to-string
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
227 (extract-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
228 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
229 (calendar-absolute-from-gregorian today))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
230 (month-array (if (hebrew-calendar-leap-year-p year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
231 calendar-hebrew-month-name-array-leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
232 calendar-hebrew-month-name-array-common-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
233 (completion-ignore-case t)
24187
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
234 (month (cdr (assoc-ignore-case
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
235 (completing-read
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
236 "Hebrew calendar month name: "
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
237 (mapcar 'list (append month-array nil))
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
238 (if (= year 3761)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
239 '(lambda (x)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
240 (let ((m (cdr
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
241 (assoc-ignore-case
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
242 (car x)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
243 (calendar-make-alist
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
244 month-array)))))
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
245 (< 0
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
246 (calendar-absolute-from-hebrew
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
247 (list m
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
248 (hebrew-calendar-last-day-of-month
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
249 m year)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
250 year))))))
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
251 t)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
252 (calendar-make-alist month-array 1))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
253 (last (hebrew-calendar-last-day-of-month month year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
254 (first (if (and (= year 3761) (= month 10))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
255 18 1))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
256 (day (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
257 (format "Hebrew calendar day (%d-%d): "
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
258 first last)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
259 '(lambda (x) (and (<= first x) (<= x last))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
260 (list (list month day year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
261 (calendar-goto-date (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
262 (calendar-absolute-from-hebrew date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
263 (or noecho (calendar-print-hebrew-date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
264
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
265 (defun holiday-hebrew (month day string)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
266 "Holiday on MONTH, DAY (Hebrew) called STRING.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
267 If MONTH, DAY (Hebrew) is visible, the value returned is corresponding
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
268 Gregorian date in the form of the list (((month day year) STRING)). Returns
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
269 nil if it is not visible in the current calendar window."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
270 (if (memq displayed-month;; This test is only to speed things up a bit;
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
271 (list ;; it works fine without the test too.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
272 (if (< 11 month) (- month 11) (+ month 1))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
273 (if (< 10 month) (- month 10) (+ month 2))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
274 (if (< 9 month) (- month 9) (+ month 3))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
275 (if (< 8 month) (- month 8) (+ month 4))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
276 (if (< 7 month) (- month 7) (+ month 5))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
277 (let ((m1 displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
278 (y1 displayed-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
279 (m2 displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
280 (y2 displayed-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
281 (year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
282 (increment-calendar-month m1 y1 -1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
283 (increment-calendar-month m2 y2 1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
284 (let* ((start-date (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
285 (list m1 1 y1)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
286 (end-date (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
287 (list m2 (calendar-last-day-of-month m2 y2) y2)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
288 (hebrew-start (calendar-hebrew-from-absolute start-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
289 (hebrew-end (calendar-hebrew-from-absolute end-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
290 (hebrew-y1 (extract-calendar-year hebrew-start))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
291 (hebrew-y2 (extract-calendar-year hebrew-end)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
292 (setq year (if (< 6 month) hebrew-y2 hebrew-y1))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
293 (let ((date (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
294 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
295 (list month day year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
296 (if (calendar-date-is-visible-p date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
297 (list (list date string))))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
298
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
299 (defun holiday-rosh-hashanah-etc ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
300 "List of dates related to Rosh Hashanah, as visible in calendar window."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
301 (if (or (< displayed-month 8)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
302 (> displayed-month 11))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
303 nil;; None of the dates is visible
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
304 (let* ((abs-r-h (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
305 (list 7 1 (+ displayed-year 3761))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
306 (mandatory
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
307 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
308 (list (calendar-gregorian-from-absolute abs-r-h)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
309 (format "Rosh HaShanah %d" (+ 3761 displayed-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
310 (list (calendar-gregorian-from-absolute (+ abs-r-h 9))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
311 "Yom Kippur")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
312 (list (calendar-gregorian-from-absolute (+ abs-r-h 14))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
313 "Sukkot")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
314 (list (calendar-gregorian-from-absolute (+ abs-r-h 21))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
315 "Shemini Atzeret")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
316 (list (calendar-gregorian-from-absolute (+ abs-r-h 22))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
317 "Simchat Torah")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
318 (optional
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
319 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
320 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
321 (calendar-dayname-on-or-before 6 (- abs-r-h 4)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
322 "Selichot (night)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
323 (list (calendar-gregorian-from-absolute (1- abs-r-h))
13674
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
324 "Erev Rosh HaShanah")
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
325 (list (calendar-gregorian-from-absolute (1+ abs-r-h))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
326 "Rosh HaShanah (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
327 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
328 (if (= (% abs-r-h 7) 4) (+ abs-r-h 3) (+ abs-r-h 2)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
329 "Tzom Gedaliah")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
330 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
331 (calendar-dayname-on-or-before 6 (+ 7 abs-r-h)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
332 "Shabbat Shuvah")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
333 (list (calendar-gregorian-from-absolute (+ abs-r-h 8))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
334 "Erev Yom Kippur")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
335 (list (calendar-gregorian-from-absolute (+ abs-r-h 13))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
336 "Erev Sukkot")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
337 (list (calendar-gregorian-from-absolute (+ abs-r-h 15))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
338 "Sukkot (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
339 (list (calendar-gregorian-from-absolute (+ abs-r-h 16))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
340 "Hol Hamoed Sukkot (first day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
341 (list (calendar-gregorian-from-absolute (+ abs-r-h 17))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
342 "Hol Hamoed Sukkot (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
343 (list (calendar-gregorian-from-absolute (+ abs-r-h 18))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
344 "Hol Hamoed Sukkot (third day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
345 (list (calendar-gregorian-from-absolute (+ abs-r-h 19))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
346 "Hol Hamoed Sukkot (fourth day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
347 (list (calendar-gregorian-from-absolute (+ abs-r-h 20))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
348 "Hoshannah Rabbah")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
349 (output-list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
350 (filter-visible-calendar-holidays mandatory)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
351 (if all-hebrew-calendar-holidays
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
352 (setq output-list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
353 (append
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
354 (filter-visible-calendar-holidays optional)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
355 output-list)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
356 output-list)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
357
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
358 (defun holiday-hanukkah ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
359 "List of dates related to Hanukkah, as visible in calendar window."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
360 (if (memq displayed-month;; This test is only to speed things up a bit;
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
361 '(10 11 12 1 2));; it works fine without the test too.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
362 (let ((m displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
363 (y displayed-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
364 (increment-calendar-month m y 1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
365 (let* ((h-y (extract-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
366 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
367 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
368 (list m (calendar-last-day-of-month m y) y)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
369 (abs-h (calendar-absolute-from-hebrew (list 9 25 h-y))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
370 (filter-visible-calendar-holidays
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
371 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
372 (list (calendar-gregorian-from-absolute (1- abs-h))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
373 "Erev Hanukkah")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
374 (list (calendar-gregorian-from-absolute abs-h)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
375 "Hanukkah (first day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
376 (list (calendar-gregorian-from-absolute (1+ abs-h))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
377 "Hanukkah (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
378 (list (calendar-gregorian-from-absolute (+ abs-h 2))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
379 "Hanukkah (third day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
380 (list (calendar-gregorian-from-absolute (+ abs-h 3))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
381 "Hanukkah (fourth day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
382 (list (calendar-gregorian-from-absolute (+ abs-h 4))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
383 "Hanukkah (fifth day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
384 (list (calendar-gregorian-from-absolute (+ abs-h 5))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
385 "Hanukkah (sixth day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
386 (list (calendar-gregorian-from-absolute (+ abs-h 6))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
387 "Hanukkah (seventh day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
388 (list (calendar-gregorian-from-absolute (+ abs-h 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
389 "Hanukkah (eighth day)")))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
390
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
391 (defun holiday-passover-etc ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
392 "List of dates related to Passover, as visible in calendar window."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
393 (if (< 7 displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
394 nil;; None of the dates is visible
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
395 (let* ((abs-p (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
396 (list 1 15 (+ displayed-year 3760))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
397 (mandatory
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
398 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
399 (list (calendar-gregorian-from-absolute abs-p)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
400 "Passover")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
401 (list (calendar-gregorian-from-absolute (+ abs-p 50))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
402 "Shavuot")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
403 (optional
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
404 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
405 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
406 (calendar-dayname-on-or-before 6 (- abs-p 43)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
407 "Shabbat Shekalim")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
408 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
409 (calendar-dayname-on-or-before 6 (- abs-p 30)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
410 "Shabbat Zachor")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
411 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
412 (if (= (% abs-p 7) 2) (- abs-p 33) (- abs-p 31)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
413 "Fast of Esther")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
414 (list (calendar-gregorian-from-absolute (- abs-p 31))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
415 "Erev Purim")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
416 (list (calendar-gregorian-from-absolute (- abs-p 30))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
417 "Purim")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
418 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
419 (if (zerop (% abs-p 7)) (- abs-p 28) (- abs-p 29)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
420 "Shushan Purim")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
421 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
422 (- (calendar-dayname-on-or-before 6 (- abs-p 14)) 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
423 "Shabbat Parah")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
424 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
425 (calendar-dayname-on-or-before 6 (- abs-p 14)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
426 "Shabbat HaHodesh")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
427 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
428 (calendar-dayname-on-or-before 6 (1- abs-p)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
429 "Shabbat HaGadol")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
430 (list (calendar-gregorian-from-absolute (1- abs-p))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
431 "Erev Passover")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
432 (list (calendar-gregorian-from-absolute (1+ abs-p))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
433 "Passover (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
434 (list (calendar-gregorian-from-absolute (+ abs-p 2))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
435 "Hol Hamoed Passover (first day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
436 (list (calendar-gregorian-from-absolute (+ abs-p 3))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
437 "Hol Hamoed Passover (second day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
438 (list (calendar-gregorian-from-absolute (+ abs-p 4))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
439 "Hol Hamoed Passover (third day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
440 (list (calendar-gregorian-from-absolute (+ abs-p 5))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
441 "Hol Hamoed Passover (fourth day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
442 (list (calendar-gregorian-from-absolute (+ abs-p 6))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
443 "Passover (seventh day)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
444 (list (calendar-gregorian-from-absolute (+ abs-p 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
445 "Passover (eighth day)")
17694
c9fd662941e3 (holiday-passover-etc): Postpone date of Yom
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
446 (list (calendar-gregorian-from-absolute
c9fd662941e3 (holiday-passover-etc): Postpone date of Yom
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
447 (if (zerop (% (+ abs-p 12) 7))
c9fd662941e3 (holiday-passover-etc): Postpone date of Yom
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
448 (+ abs-p 13)
c9fd662941e3 (holiday-passover-etc): Postpone date of Yom
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
449 (+ abs-p 12)))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
450 "Yom HaShoah")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
451 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
452 (if (zerop (% abs-p 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
453 (+ abs-p 18)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
454 (if (= (% abs-p 7) 6)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
455 (+ abs-p 19)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
456 (+ abs-p 20))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
457 "Yom HaAtzma'ut")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
458 (list (calendar-gregorian-from-absolute (+ abs-p 33))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
459 "Lag BaOmer")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
460 (list (calendar-gregorian-from-absolute (+ abs-p 43))
22063
bf477b03b470 Fix mispelling.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 20462
diff changeset
461 "Yom Yerushalaim")
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
462 (list (calendar-gregorian-from-absolute (+ abs-p 49))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
463 "Erev Shavuot")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
464 (list (calendar-gregorian-from-absolute (+ abs-p 51))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
465 "Shavuot (second day)")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
466 (output-list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
467 (filter-visible-calendar-holidays mandatory)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
468 (if all-hebrew-calendar-holidays
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
469 (setq output-list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
470 (append
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
471 (filter-visible-calendar-holidays optional)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
472 output-list)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
473 output-list)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
474
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
475 (defun holiday-tisha-b-av-etc ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
476 "List of dates around Tisha B'Av, as visible in calendar window."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
477 (if (or (< displayed-month 5)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
478 (> displayed-month 9))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
479 nil;; None of the dates is visible
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
480 (let* ((abs-t-a (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
481 (list 5 9 (+ displayed-year 3760)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
482
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
483 (filter-visible-calendar-holidays
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
484 (list
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
485 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
486 (if (= (% abs-t-a 7) 6) (- abs-t-a 20) (- abs-t-a 21)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
487 "Tzom Tammuz")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
488 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
489 (calendar-dayname-on-or-before 6 abs-t-a))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
490 "Shabbat Hazon")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
491 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
492 (if (= (% abs-t-a 7) 6) (1+ abs-t-a) abs-t-a))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
493 "Tisha B'Av")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
494 (list (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
495 (calendar-dayname-on-or-before 6 (+ abs-t-a 7)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
496 "Shabbat Nahamu"))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
497
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
498 (defun list-hebrew-diary-entries ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
499 "Add any Hebrew date entries from the diary file to `diary-entries-list'.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
500 Hebrew date diary entries must be prefaced by `hebrew-diary-entry-symbol'
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
501 \(normally an `H'). The same diary date forms govern the style of the Hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
502 calendar entries, except that the Hebrew month names must be spelled in full.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
503 The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
504 Adar I and 13 being Adar II; you must use `Adar I' if you want Adar of a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
505 common Hebrew year. If a Hebrew date diary entry begins with a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
506 `diary-nonmarking-symbol', the entry will appear in the diary listing, but will
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
507 not be marked in the calendar. This function is provided for use with the
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
508 `nongregorian-diary-listing-hook'."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
509 (if (< 0 number)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
510 (let ((buffer-read-only nil)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
511 (diary-modified (buffer-modified-p))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
512 (gdate original-date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
513 (mark (regexp-quote diary-nonmarking-symbol)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
514 (calendar-for-loop i from 1 to number do
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
515 (let* ((d diary-date-forms)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
516 (hdate (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
517 (calendar-absolute-from-gregorian gdate)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
518 (month (extract-calendar-month hdate))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
519 (day (extract-calendar-day hdate))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
520 (year (extract-calendar-year hdate)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
521 (while d
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
522 (let*
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
523 ((date-form (if (equal (car (car d)) 'backup)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
524 (cdr (car d))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
525 (car d)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
526 (backup (equal (car (car d)) 'backup))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
527 (dayname
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
528 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
529 (calendar-day-name gdate) "\\|"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
530 (substring (calendar-day-name gdate) 0 3) ".?"))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
531 (calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
532 calendar-hebrew-month-name-array-leap-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
533 (monthname
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
534 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
535 "\\*\\|"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
536 (calendar-month-name month)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
537 (month (concat "\\*\\|0*" (int-to-string month)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
538 (day (concat "\\*\\|0*" (int-to-string day)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
539 (year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
540 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
541 "\\*\\|0*" (int-to-string year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
542 (if abbreviated-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
543 (concat "\\|" (int-to-string (% year 100)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
544 "")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
545 (regexp
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
546 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
547 "\\(\\`\\|\^M\\|\n\\)" mark "?"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
548 (regexp-quote hebrew-diary-entry-symbol)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
549 "\\("
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
550 (mapconcat 'eval date-form "\\)\\(")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
551 "\\)"))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
552 (case-fold-search t))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
553 (goto-char (point-min))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
554 (while (re-search-forward regexp nil t)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
555 (if backup (re-search-backward "\\<" nil t))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
556 (if (and (or (char-equal (preceding-char) ?\^M)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
557 (char-equal (preceding-char) ?\n))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
558 (not (looking-at " \\|\^I")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
559 ;; Diary entry that consists only of date.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
560 (backward-char 1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
561 ;; Found a nonempty diary entry--make it visible and
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
562 ;; add it to the list.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
563 (let ((entry-start (point))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
564 (date-start))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
565 (re-search-backward "\^M\\|\n\\|\\`")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
566 (setq date-start (point))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
567 (re-search-forward "\^M\\|\n" nil t 2)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
568 (while (looking-at " \\|\^I")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
569 (re-search-forward "\^M\\|\n" nil t))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
570 (backward-char 1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
571 (subst-char-in-region date-start (point) ?\^M ?\n t)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
572 (add-to-diary-list
20267
6a9f60f7e241 (list-hebrew-diary-entries): Add the diary entry
Karl Heuer <kwzh@gnu.org>
parents: 17694
diff changeset
573 gdate
6a9f60f7e241 (list-hebrew-diary-entries): Add the diary entry
Karl Heuer <kwzh@gnu.org>
parents: 17694
diff changeset
574 (buffer-substring-no-properties entry-start (point))
6a9f60f7e241 (list-hebrew-diary-entries): Add the diary entry
Karl Heuer <kwzh@gnu.org>
parents: 17694
diff changeset
575 (buffer-substring-no-properties
6a9f60f7e241 (list-hebrew-diary-entries): Add the diary entry
Karl Heuer <kwzh@gnu.org>
parents: 17694
diff changeset
576 (1+ date-start) (1- entry-start)))))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
577 (setq d (cdr d))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
578 (setq gdate
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
579 (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
580 (1+ (calendar-absolute-from-gregorian gdate)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
581 (set-buffer-modified-p diary-modified))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
582 (goto-char (point-min))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
583
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
584 (defun mark-hebrew-diary-entries ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
585 "Mark days in the calendar window that have Hebrew date diary entries.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
586 Each entry in diary-file (or included files) visible in the calendar window
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
587 is marked. Hebrew date entries are prefaced by a hebrew-diary-entry-symbol
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
588 \(normally an `H'). The same diary-date-forms govern the style of the Hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
589 calendar entries, except that the Hebrew month names must be spelled in full.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
590 The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
591 Adar I and 13 being Adar II; you must use `Adar I' if you want Adar of a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
592 common Hebrew year. Hebrew date diary entries that begin with a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
593 diary-nonmarking symbol will not be marked in the calendar. This function
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
594 is provided for use as part of the nongregorian-diary-marking-hook."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
595 (let ((d diary-date-forms))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
596 (while d
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
597 (let*
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
598 ((date-form (if (equal (car (car d)) 'backup)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
599 (cdr (car d))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
600 (car d)));; ignore 'backup directive
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
601 (dayname (diary-name-pattern calendar-day-name-array))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
602 (monthname
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
603 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
604 (diary-name-pattern calendar-hebrew-month-name-array-leap-year t)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
605 "\\|\\*"))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
606 (month "[0-9]+\\|\\*")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
607 (day "[0-9]+\\|\\*")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
608 (year "[0-9]+\\|\\*")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
609 (l (length date-form))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
610 (d-name-pos (- l (length (memq 'dayname date-form))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
611 (d-name-pos (if (/= l d-name-pos) (+ 2 d-name-pos)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
612 (m-name-pos (- l (length (memq 'monthname date-form))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
613 (m-name-pos (if (/= l m-name-pos) (+ 2 m-name-pos)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
614 (d-pos (- l (length (memq 'day date-form))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
615 (d-pos (if (/= l d-pos) (+ 2 d-pos)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
616 (m-pos (- l (length (memq 'month date-form))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
617 (m-pos (if (/= l m-pos) (+ 2 m-pos)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
618 (y-pos (- l (length (memq 'year date-form))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
619 (y-pos (if (/= l y-pos) (+ 2 y-pos)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
620 (regexp
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
621 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
622 "\\(\\`\\|\^M\\|\n\\)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
623 (regexp-quote hebrew-diary-entry-symbol)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
624 "\\("
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
625 (mapconcat 'eval date-form "\\)\\(")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
626 "\\)"))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
627 (case-fold-search t))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
628 (goto-char (point-min))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
629 (while (re-search-forward regexp nil t)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
630 (let* ((dd-name
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
631 (if d-name-pos
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
632 (buffer-substring
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
633 (match-beginning d-name-pos)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
634 (match-end d-name-pos))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
635 (mm-name
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
636 (if m-name-pos
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
637 (buffer-substring
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
638 (match-beginning m-name-pos)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
639 (match-end m-name-pos))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
640 (mm (string-to-int
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
641 (if m-pos
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
642 (buffer-substring
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
643 (match-beginning m-pos)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
644 (match-end m-pos))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
645 "")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
646 (dd (string-to-int
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
647 (if d-pos
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
648 (buffer-substring
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
649 (match-beginning d-pos)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
650 (match-end d-pos))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
651 "")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
652 (y-str (if y-pos
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
653 (buffer-substring
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
654 (match-beginning y-pos)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
655 (match-end y-pos))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
656 (yy (if (not y-str)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
657 0
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
658 (if (and (= (length y-str) 2)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
659 abbreviated-calendar-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
660 (let* ((current-y
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
661 (extract-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
662 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
663 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
664 (calendar-current-date)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
665 (y (+ (string-to-int y-str)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
666 (* 100 (/ current-y 100)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
667 (if (> (- y current-y) 50)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
668 (- y 100)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
669 (if (> (- current-y y) 50)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
670 (+ y 100)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
671 y)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
672 (string-to-int y-str)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
673 (if dd-name
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
674 (mark-calendar-days-named
24187
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
675 (cdr (assoc-ignore-case
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
676 (substring dd-name 0 3)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
677 (calendar-make-alist
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
678 calendar-day-name-array
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
679 0
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
680 '(lambda (x) (substring x 0 3))))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
681 (if mm-name
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
682 (if (string-equal mm-name "*")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
683 (setq mm 0)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
684 (setq
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
685 mm
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
686 (cdr
24187
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
687 (assoc-ignore-case
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
688 mm-name
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
689 (calendar-make-alist
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
690 calendar-hebrew-month-name-array-leap-year))))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
691 (mark-hebrew-calendar-date-pattern mm dd yy)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
692 (setq d (cdr d)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
693
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
694 (defun mark-hebrew-calendar-date-pattern (month day year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
695 "Mark dates in calendar window that conform to Hebrew date MONTH/DAY/YEAR.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
696 A value of 0 in any position is a wildcard."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
697 (save-excursion
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
698 (set-buffer calendar-buffer)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
699 (if (and (/= 0 month) (/= 0 day))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
700 (if (/= 0 year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
701 ;; Fully specified Hebrew date.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
702 (let ((date (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
703 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
704 (list month day year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
705 (if (calendar-date-is-visible-p date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
706 (mark-visible-calendar-date date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
707 ;; Month and day in any year--this taken from the holiday stuff.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
708 (if (memq displayed-month;; This test is only to speed things up a
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
709 (list ;; bit; it works fine without the test too.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
710 (if (< 11 month) (- month 11) (+ month 1))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
711 (if (< 10 month) (- month 10) (+ month 2))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
712 (if (< 9 month) (- month 9) (+ month 3))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
713 (if (< 8 month) (- month 8) (+ month 4))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
714 (if (< 7 month) (- month 7) (+ month 5))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
715 (let ((m1 displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
716 (y1 displayed-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
717 (m2 displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
718 (y2 displayed-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
719 (year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
720 (increment-calendar-month m1 y1 -1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
721 (increment-calendar-month m2 y2 1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
722 (let* ((start-date (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
723 (list m1 1 y1)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
724 (end-date (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
725 (list m2
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
726 (calendar-last-day-of-month m2 y2)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
727 y2)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
728 (hebrew-start
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
729 (calendar-hebrew-from-absolute start-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
730 (hebrew-end (calendar-hebrew-from-absolute end-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
731 (hebrew-y1 (extract-calendar-year hebrew-start))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
732 (hebrew-y2 (extract-calendar-year hebrew-end)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
733 (setq year (if (< 6 month) hebrew-y2 hebrew-y1))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
734 (let ((date (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
735 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
736 (list month day year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
737 (if (calendar-date-is-visible-p date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
738 (mark-visible-calendar-date date)))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
739 ;; Not one of the simple cases--check all visible dates for match.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
740 ;; Actually, the following code takes care of ALL of the cases, but
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
741 ;; it's much too slow to be used for the simple (common) cases.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
742 (let ((m displayed-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
743 (y displayed-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
744 (first-date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
745 (last-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
746 (increment-calendar-month m y -1)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
747 (setq first-date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
748 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
749 (list m 1 y)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
750 (increment-calendar-month m y 2)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
751 (setq last-date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
752 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
753 (list m (calendar-last-day-of-month m y) y)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
754 (calendar-for-loop date from first-date to last-date do
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
755 (let* ((h-date (calendar-hebrew-from-absolute date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
756 (h-month (extract-calendar-month h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
757 (h-day (extract-calendar-day h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
758 (h-year (extract-calendar-year h-date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
759 (and (or (zerop month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
760 (= month h-month))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
761 (or (zerop day)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
762 (= day h-day))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
763 (or (zerop year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
764 (= year h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
765 (mark-visible-calendar-date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
766 (calendar-gregorian-from-absolute date)))))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
767
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
768 (defun insert-hebrew-diary-entry (arg)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
769 "Insert a diary entry.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
770 For the Hebrew date corresponding to the date indicated by point.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
771 Prefix arg will make the entry nonmarking."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
772 (interactive "P")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
773 (let* ((calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
774 calendar-hebrew-month-name-array-leap-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
775 (make-diary-entry
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
776 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
777 hebrew-diary-entry-symbol
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
778 (calendar-date-string
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
779 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
780 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
781 (calendar-cursor-to-date t)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
782 nil t))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
783 arg)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
784
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
785 (defun insert-monthly-hebrew-diary-entry (arg)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
786 "Insert a monthly diary entry.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
787 For the day of the Hebrew month corresponding to the date indicated by point.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
788 Prefix arg will make the entry nonmarking."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
789 (interactive "P")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
790 (let* ((calendar-date-display-form
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
791 (if european-calendar-style '(day " * ") '("* " day )))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
792 (calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
793 calendar-hebrew-month-name-array-leap-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
794 (make-diary-entry
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
795 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
796 hebrew-diary-entry-symbol
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
797 (calendar-date-string
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
798 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
799 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
800 (calendar-cursor-to-date t)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
801 arg)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
802
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
803 (defun insert-yearly-hebrew-diary-entry (arg)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
804 "Insert an annual diary entry.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
805 For the day of the Hebrew year corresponding to the date indicated by point.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
806 Prefix arg will make the entry nonmarking."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
807 (interactive "P")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
808 (let* ((calendar-date-display-form
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
809 (if european-calendar-style
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
810 '(day " " monthname)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
811 '(monthname " " day)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
812 (calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
813 calendar-hebrew-month-name-array-leap-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
814 (make-diary-entry
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
815 (concat
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
816 hebrew-diary-entry-symbol
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
817 (calendar-date-string
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
818 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
819 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
820 (calendar-cursor-to-date t)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
821 arg)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
822
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
823 ;;;###autoload
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
824 (defun list-yahrzeit-dates (death-date start-year end-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
825 "List Yahrzeit dates for *Gregorian* DEATH-DATE from START-YEAR to END-YEAR.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
826 When called interactively from the calendar window, the date of death is taken
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
827 from the cursor position."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
828 (interactive
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
829 (let* ((death-date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
830 (if (equal (current-buffer) (get-buffer calendar-buffer))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
831 (calendar-cursor-to-date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
832 (let* ((today (calendar-current-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
833 (year (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
834 "Year of death (>0): "
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
835 '(lambda (x) (> x 0))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
836 (int-to-string (extract-calendar-year today))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
837 (month-array calendar-month-name-array)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
838 (completion-ignore-case t)
24187
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
839 (month (cdr (assoc-ignore-case
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
840 (completing-read
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
841 "Month of death (name): "
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
842 (mapcar 'list (append month-array nil))
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
843 nil t)
cc07d0f935d4 (calendar-goto-hebrew-date)
Richard M. Stallman <rms@gnu.org>
parents: 22063
diff changeset
844 (calendar-make-alist month-array 1))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
845 (last (calendar-last-day-of-month month year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
846 (day (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
847 (format "Day of death (1-%d): " last)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
848 '(lambda (x) (and (< 0 x) (<= x last))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
849 (list month day year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
850 (death-year (extract-calendar-year death-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
851 (start-year (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
852 (format "Starting year of Yahrzeit table (>%d): "
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
853 death-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
854 '(lambda (x) (> x death-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
855 (int-to-string (1+ death-year))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
856 (end-year (calendar-read
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
857 (format "Ending year of Yahrzeit table (>=%d): "
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
858 start-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
859 '(lambda (x) (>= x start-year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
860 (list death-date start-year end-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
861 (message "Computing yahrzeits...")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
862 (let* ((yahrzeit-buffer "*Yahrzeits*")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
863 (h-date (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
864 (calendar-absolute-from-gregorian death-date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
865 (h-month (extract-calendar-month h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
866 (h-day (extract-calendar-day h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
867 (h-year (extract-calendar-year h-date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
868 (set-buffer (get-buffer-create yahrzeit-buffer))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
869 (setq buffer-read-only nil)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
870 (calendar-set-mode-line
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
871 (format "Yahrzeit dates for %s = %s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
872 (calendar-date-string death-date)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
873 (let ((calendar-month-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
874 (if (hebrew-calendar-leap-year-p h-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
875 calendar-hebrew-month-name-array-leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
876 calendar-hebrew-month-name-array-common-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
877 (calendar-date-string h-date nil t))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
878 (erase-buffer)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
879 (goto-char (point-min))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
880 (calendar-for-loop i from start-year to end-year do
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
881 (insert
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
882 (calendar-date-string
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
883 (calendar-gregorian-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
884 (hebrew-calendar-yahrzeit
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
885 h-date
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
886 (extract-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
887 (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
888 (calendar-absolute-from-gregorian (list 1 1 i))))))) "\n"))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
889 (goto-char (point-min))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
890 (set-buffer-modified-p nil)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
891 (setq buffer-read-only t)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
892 (display-buffer yahrzeit-buffer)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
893 (message "Computing yahrzeits...done")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
894
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
895 (defun diary-hebrew-date ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
896 "Hebrew calendar equivalent of date diary entry."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
897 (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
898
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
899 (defun diary-omer ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
900 "Omer count diary entry.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
901 Entry applies if date is within 50 days after Passover."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
902 (let* ((passover
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
903 (calendar-absolute-from-hebrew
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
904 (list 1 15 (+ (extract-calendar-year date) 3760))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
905 (omer (- (calendar-absolute-from-gregorian date) passover))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
906 (week (/ omer 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
907 (day (% omer 7)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
908 (if (and (> omer 0) (< omer 50))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
909 (format "Day %d%s of the omer (until sunset)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
910 omer
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
911 (if (zerop week)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
912 ""
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
913 (format ", that is, %d week%s%s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
914 week
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
915 (if (= week 1) "" "s")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
916 (if (zerop day)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
917 ""
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
918 (format " and %d day%s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
919 day (if (= day 1) "" "s")))))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
920
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
921 (defun diary-yahrzeit (death-month death-day death-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
922 "Yahrzeit diary entry--entry applies if date is yahrzeit or the day before.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
923 Parameters are DEATH-MONTH, DEATH-DAY, DEATH-YEAR; the diary entry is assumed
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
924 to be the name of the person. Date of death is on the *civil* calendar;
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
925 although the date of death is specified by the civil calendar, the proper
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
926 Hebrew calendar yahrzeit is determined. If `european-calendar-style' is t, the
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
927 order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
928 (let* ((h-date (calendar-hebrew-from-absolute
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
929 (calendar-absolute-from-gregorian
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
930 (if european-calendar-style
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
931 (list death-day death-month death-year)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
932 (list death-month death-day death-year)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
933 (h-month (extract-calendar-month h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
934 (h-day (extract-calendar-day h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
935 (h-year (extract-calendar-year h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
936 (d (calendar-absolute-from-gregorian date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
937 (yr (extract-calendar-year (calendar-hebrew-from-absolute d)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
938 (diff (- yr h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
939 (y (hebrew-calendar-yahrzeit h-date yr)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
940 (if (and (> diff 0) (or (= y d) (= y (1+ d))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
941 (format "Yahrzeit of %s%s: %d%s anniversary"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
942 entry
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
943 (if (= y d) "" " (evening)")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
944 diff
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
945 (cond ((= (% diff 10) 1) "st")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
946 ((= (% diff 10) 2) "nd")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
947 ((= (% diff 10) 3) "rd")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
948 (t "th"))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
949
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
950 (defun diary-rosh-hodesh ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
951 "Rosh Hodesh diary entry.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
952 Entry applies if date is Rosh Hodesh, the day before, or the Saturday before."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
953 (let* ((d (calendar-absolute-from-gregorian date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
954 (h-date (calendar-hebrew-from-absolute d))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
955 (h-month (extract-calendar-month h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
956 (h-day (extract-calendar-day h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
957 (h-year (extract-calendar-year h-date))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
958 (leap-year (hebrew-calendar-leap-year-p h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
959 (last-day (hebrew-calendar-last-day-of-month h-month h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
960 (h-month-names
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
961 (if leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
962 calendar-hebrew-month-name-array-leap-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
963 calendar-hebrew-month-name-array-common-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
964 (this-month (aref h-month-names (1- h-month)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
965 (h-yesterday (extract-calendar-day
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
966 (calendar-hebrew-from-absolute (1- d)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
967 (if (or (= h-day 30) (and (= h-day 1) (/= h-month 7)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
968 (format
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
969 "Rosh Hodesh %s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
970 (if (= h-day 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
971 (format
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
972 "%s (first day)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
973 ;; next month must be in the same year since this
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
974 ;; month can't be the last month of the year since
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
975 ;; it has 30 days
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
976 (aref h-month-names h-month))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
977 (if (= h-yesterday 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
978 (format "%s (second day)" this-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
979 this-month)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
980 (if (= (% d 7) 6);; Saturday--check for Shabbat Mevarhim
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
981 (cond ((and (> h-day 22) (/= h-month 6) (= 29 last-day))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
982 (format "Mevarhim Rosh Hodesh %s (%s)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
983 (aref h-month-names
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
984 (if (= h-month
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
985 (hebrew-calendar-last-month-of-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
986 h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
987 0 h-month))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
988 (aref calendar-day-name-array (- 29 h-day))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
989 ((and (< h-day 30) (> h-day 22) (= 30 last-day))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
990 (format "Mevarhim Rosh Hodesh %s (%s-%s)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
991 (aref h-month-names h-month)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
992 (if (= h-day 29)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
993 "tomorrow"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
994 (aref calendar-day-name-array (- 29 h-day)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
995 (aref calendar-day-name-array
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
996 (% (- 30 h-day) 7)))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
997 (if (and (= h-day 29) (/= h-month 6))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
998 (format "Erev Rosh Hodesh %s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
999 (aref h-month-names
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1000 (if (= h-month
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1001 (hebrew-calendar-last-month-of-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1002 h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1003 0 h-month))))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1004
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1005 (defun diary-parasha ()
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1006 "Parasha diary entry--entry applies if date is a Saturday."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1007 (let ((d (calendar-absolute-from-gregorian date)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1008 (if (= (% d 7) 6);; Saturday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1009 (let*
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1010 ((h-year (extract-calendar-year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1011 (calendar-hebrew-from-absolute d)))
13674
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
1012 (rosh-hashanah
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1013 (calendar-absolute-from-hebrew (list 7 1 h-year)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1014 (passover
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1015 (calendar-absolute-from-hebrew (list 1 15 h-year)))
13674
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
1016 (rosh-hashanah-day
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
1017 (aref calendar-day-name-array (% rosh-hashanah 7)))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1018 (passover-day
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1019 (aref calendar-day-name-array (% passover 7)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1020 (long-h (hebrew-calendar-long-heshvan-p h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1021 (short-k (hebrew-calendar-short-kislev-p h-year))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1022 (type (cond ((and long-h (not short-k)) "complete")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1023 ((and (not long-h) short-k) "incomplete")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1024 (t "regular")))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1025 (year-format
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1026 (symbol-value
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1027 (intern (format "hebrew-calendar-year-%s-%s-%s";; keviah
13674
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
1028 rosh-hashanah-day type passover-day))))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1029 (first-saturday;; of Hebrew year
13674
67da41b74267 (holiday-rosh-hashanah-etc): Fix misspelled var.
Paul Eggert <eggert@twinsun.com>
parents: 13052
diff changeset
1030 (calendar-dayname-on-or-before 6 (+ 6 rosh-hashanah)))
13050
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1031 (saturday;; which Saturday of the Hebrew year
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1032 (/ (- d first-saturday) 7))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1033 (parasha (aref year-format saturday)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1034 (if parasha
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1035 (format
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1036 "Parashat %s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1037 (if (listp parasha);; Israel differs from diaspora
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1038 (if (car parasha)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1039 (format "%s (diaspora), %s (Israel)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1040 (hebrew-calendar-parasha-name (car parasha))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1041 (hebrew-calendar-parasha-name (cdr parasha)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1042 (format "%s (Israel)"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1043 (hebrew-calendar-parasha-name (cdr parasha))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1044 (hebrew-calendar-parasha-name parasha))))))))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1045
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1046 (defvar hebrew-calendar-parashiot-names
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1047 ["Bereshith" "Noah" "Lech L'cha" "Vayera" "Hayei Sarah" "Toledoth"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1048 "Vayetze" "Vayishlah" "Vayeshev" "Mikketz" "Vayiggash" "Vayhi"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1049 "Shemoth" "Vaera" "Bo" "Beshallah" "Yithro" "Mishpatim"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1050 "Terumah" "Tetzavveh" "Ki Tissa" "Vayakhel" "Pekudei" "Vayikra"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1051 "Tzav" "Shemini" "Tazria" "Metzora" "Aharei Moth" "Kedoshim"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1052 "Emor" "Behar" "Behukkotai" "Bemidbar" "Naso" "Behaalot'cha"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1053 "Shelah L'cha" "Korah" "Hukkath" "Balak" "Pinhas" "Mattoth"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1054 "Masei" "Devarim" "Vaethanan" "Ekev" "Reeh" "Shofetim"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1055 "Ki Tetze" "Ki Tavo" "Nitzavim" "Vayelech" "Haazinu"]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1056 "The names of the parashiot in the Torah.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1057
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1058 ;; The seven ordinary year types (keviot)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1059
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1060 (defconst hebrew-calendar-year-Saturday-incomplete-Sunday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1061 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1062 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1063 43 44 45 46 47 48 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1064 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1065 Hebrew year starts on Saturday, is `incomplete' (Heshvan and Kislev each have
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1066 29 days), and has Passover start on Sunday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1067
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1068 (defconst hebrew-calendar-year-Saturday-complete-Tuesday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1069 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1070 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1071 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1072 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1073 Hebrew year that starts on Saturday, is `complete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1074 have 30 days), and has Passover start on Tuesday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1075
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1076 (defconst hebrew-calendar-year-Monday-incomplete-Tuesday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1077 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1078 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1079 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1080 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1081 Hebrew year that starts on Monday, is `incomplete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1082 have 29 days), and has Passover start on Tuesday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1083
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1084 (defconst hebrew-calendar-year-Monday-complete-Thursday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1085 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1086 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 (nil . 34) (34 . 35) (35 . 36)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1087 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1088 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1089 Hebrew year that starts on Monday, is `complete' (Heshvan and Kislev each have
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1090 30 days), and has Passover start on Thursday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1091
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1092 (defconst hebrew-calendar-year-Tuesday-regular-Thursday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1093 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1094 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 (nil . 34) (34 . 35) (35 . 36)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1095 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1096 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1097 Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29 days and
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1098 Kislev has 30 days), and has Passover start on Thursday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1099
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1100 (defconst hebrew-calendar-year-Thursday-regular-Saturday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1101 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22] 23
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1102 24 nil (nil . 25) (25 . [26 27]) ([26 27] . [28 29]) ([28 29] . 30)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1103 (30 . 31) ([31 32] . 32) 33 34 35 36 37 38 39 40 [41 42] 43 44 45 46 47 48
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1104 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1105 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1106 Hebrew year that starts on Thursday, is `regular' (Heshvan has 29 days and
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1107 Kislev has 30 days), and has Passover start on Saturday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1108
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1109 (defconst hebrew-calendar-year-Thursday-complete-Sunday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1110 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1111 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1112 43 44 45 46 47 48 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1113 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1114 Hebrew year that starts on Thursday, is `complete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1115 have 30 days), and has Passover start on Sunday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1116
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1117 ;; The seven leap year types (keviot)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1118
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1119 (defconst hebrew-calendar-year-Saturday-incomplete-Tuesday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1120 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1121 23 24 25 26 27 nil 28 29 30 31 32 33 34 35 36 37 38 39 40 [41 42]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1122 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1123 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1124 Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1125 have 29 days), and has Passover start on Tuesday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1126
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1127 (defconst hebrew-calendar-year-Saturday-complete-Thursday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1128 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1129 23 24 25 26 27 nil 28 29 30 31 32 33 (nil . 34) (34 . 35) (35 . 36)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1130 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1131 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1132 Hebrew year that starts on Saturday, is `complete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1133 have 30 days), and has Passover start on Thursday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1134
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1135 (defconst hebrew-calendar-year-Monday-incomplete-Thursday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1136 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1137 23 24 25 26 27 nil 28 29 30 31 32 33 (nil . 34) (34 . 35) (35 . 36)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1138 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1139 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1140 Hebrew year that starts on Monday, is `incomplete' (Heshvan and Kislev each
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1141 have 29 days), and has Passover start on Thursday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1142
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1143 (defconst hebrew-calendar-year-Monday-complete-Saturday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1144 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1145 23 24 25 26 27 nil (nil . 28) (28 . 29) (29 . 30) (30 . 31) (31 . 32)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1146 (32 . 33) (33 . 34) (34 . 35) (35 . 36) (36 . 37) (37 . 38) (38 . 39)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1147 (39 . 40) (40 . 41) ([41 42] . 42) 43 44 45 46 47 48 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1148 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1149 Hebrew year that starts on Monday, is `complete' (Heshvan and Kislev each have
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1150 30 days), and has Passover start on Saturday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1151
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1152 (defconst hebrew-calendar-year-Tuesday-regular-Saturday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1153 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1154 23 24 25 26 27 nil (nil . 28) (28 . 29) (29 . 30) (30 . 31) (31 . 32)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1155 (32 . 33) (33 . 34) (34 . 35) (35 . 36) (36 . 37) (37 . 38) (38 . 39)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1156 (39 . 40) (40 . 41) ([41 42] . 42) 43 44 45 46 47 48 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1157 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1158 Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29 days and
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1159 Kislev has 30 days), and has Passover start on Saturday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1160
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1161 (defconst hebrew-calendar-year-Thursday-incomplete-Sunday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1162 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1163 23 24 25 26 27 28 nil 29 30 31 32 33 34 35 36 37 38 39 40 41 42
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1164 43 44 45 46 47 48 49 50]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1165 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1166 Hebrew year that starts on Thursday, is `incomplete' (Heshvan and Kislev both
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1167 have 29 days), and has Passover start on Sunday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1168
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1169 (defconst hebrew-calendar-year-Thursday-complete-Tuesday
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1170 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1171 23 24 25 26 27 28 nil 29 30 31 32 33 34 35 36 37 38 39 40 41 42
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1172 43 44 45 46 47 48 49 [50 51]]
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1173 "The structure of the parashiot.
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1174 Hebrew year that starts on Thursday, is `complete' (Heshvan and Kislev both
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1175 have 30 days), and has Passover start on Tuesday.")
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1176
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1177 (defun hebrew-calendar-parasha-name (p)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1178 "Name(s) corresponding to parasha P."
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1179 (if (arrayp p);; combined parasha
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1180 (format "%s/%s"
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1181 (aref hebrew-calendar-parashiot-names (aref p 0))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1182 (aref hebrew-calendar-parashiot-names (aref p 1)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1183 (aref hebrew-calendar-parashiot-names p)))
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1184
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1185 (provide 'cal-hebrew)
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1186
477ab7ada6ee Initial revision
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
diff changeset
1187 ;;; cal-hebrew.el ends here