- (list
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 43)))
- "Shabbat Shekalim")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 30)))
- "Shabbat Zachor")
- (list (calendar-gregorian-from-absolute
- (if (= (% abs-p 7) 2) (- abs-p 33) (- abs-p 31)))
- "Fast of Esther")
- (list (calendar-gregorian-from-absolute (- abs-p 31))
- "Erev Purim")
- (list (calendar-gregorian-from-absolute (- abs-p 30))
- "Purim")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% abs-p 7)) (- abs-p 28) (- abs-p 29)))
- "Shushan Purim")
- (list (calendar-gregorian-from-absolute
- (- (calendar-dayname-on-or-before 6 (- abs-p 14)) 7))
- "Shabbat Parah")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 14)))
- "Shabbat HaHodesh")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (1- abs-p)))
- "Shabbat HaGadol")
- (list (calendar-gregorian-from-absolute (1- abs-p))
- "Erev Passover")
- (list (calendar-gregorian-from-absolute (1+ abs-p))
- "Passover (second day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 2))
- "Hol Hamoed Passover (first day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 3))
- "Hol Hamoed Passover (second day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 4))
- "Hol Hamoed Passover (third day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 5))
- "Hol Hamoed Passover (fourth day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 6))
- "Passover (seventh day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 7))
- "Passover (eighth day)")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% (+ abs-p 12) 7))
- (+ abs-p 13)
- (+ abs-p 12)))
- "Yom HaShoah")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% abs-p 7))
- (+ abs-p 18)
- (if (= (% abs-p 7) 6)
- (+ abs-p 19)
- (+ abs-p 20))))
- "Yom HaAtzma'ut")
- (list (calendar-gregorian-from-absolute (+ abs-p 33))
- "Lag BaOmer")
- (list (calendar-gregorian-from-absolute (+ abs-p 43))
- "Yom Yerushalaim")
- (list (calendar-gregorian-from-absolute (+ abs-p 49))
- "Erev Shavuot")
- (list (calendar-gregorian-from-absolute (+ abs-p 51))
- "Shavuot (second day)"))))))))
+ (let ((wday (% abs-p 7)))
+ (list
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 43)))
+ "Shabbat Shekalim")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 30)))
+ "Shabbat Zachor")
+ (list (calendar-gregorian-from-absolute
+ (- abs-p (if (= wday 2) 33 31)))
+ "Fast of Esther")
+ (list (calendar-gregorian-from-absolute (- abs-p 31))
+ "Erev Purim")
+ (list (calendar-gregorian-from-absolute (- abs-p 30))
+ "Purim")
+ (list (calendar-gregorian-from-absolute
+ (- abs-p (if (zerop wday) 28 29)))
+ "Shushan Purim")
+ (list (calendar-gregorian-from-absolute
+ (- (calendar-dayname-on-or-before 6 (- abs-p 14)) 7))
+ "Shabbat Parah")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 14)))
+ "Shabbat HaHodesh")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (1- abs-p)))
+ "Shabbat HaGadol")
+ (list (calendar-gregorian-from-absolute (1- abs-p))
+ "Erev Passover")
+ (list (calendar-gregorian-from-absolute (1+ abs-p))
+ "Passover (second day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 2))
+ "Hol Hamoed Passover (first day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 3))
+ "Hol Hamoed Passover (second day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 4))
+ "Hol Hamoed Passover (third day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 5))
+ "Hol Hamoed Passover (fourth day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 6))
+ "Passover (seventh day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 7))
+ "Passover (eighth day)")
+ (list (calendar-gregorian-from-absolute
+ (+ abs-p (if (zerop (% (+ abs-p 12) 7))
+ 13
+ 12)))
+ "Yom HaShoah")
+ (list (calendar-gregorian-from-absolute
+ (+ abs-p
+ ;; If falls on Sat or Fri, moves to preceding Thurs.
+ ;; If falls on Mon, moves to Tues (since 2004).
+ (cond ((zerop wday) 18) ; Sat
+ ((= wday 6) 19) ; Fri
+ ((= wday 2) 21) ; Mon
+ (t 20))))
+ "Yom HaAtzma'ut")
+ (list (calendar-gregorian-from-absolute (+ abs-p 33))
+ "Lag BaOmer")
+ (list (calendar-gregorian-from-absolute (+ abs-p 43))
+ "Yom Yerushalaim")
+ (list (calendar-gregorian-from-absolute (+ abs-p 49))
+ "Erev Shavuot")
+ (list (calendar-gregorian-from-absolute (+ abs-p 51))
+ "Shavuot (second day)")))))))))