;;; holidays.el --- holiday functions for the calendar package
-;; Copyright (C) 1989-1990, 1992-1994, 1997, 2001-2012
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1989-1990, 1992-1994, 1997, 2001-2015 Free Software
+;; Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Maintainer: Glenn Morris <rgm@gnu.org>
;; are used to using them to set calendar-holidays without having to
;; explicitly load this file.
-;;;###autoload
-(define-obsolete-variable-alias 'general-holidays
- 'holiday-general-holidays "23.1")
;;;###autoload
(defcustom holiday-general-holidays
(mapcar 'purecopy
;;;###autoload
(put 'holiday-general-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'oriental-holidays
- 'holiday-oriental-holidays "23.1")
;;;###autoload
(defcustom holiday-oriental-holidays
(mapcar 'purecopy
;;;###autoload
(put 'holiday-oriental-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'local-holidays 'holiday-local-holidays "23.1")
;;;###autoload
(defcustom holiday-local-holidays nil
"Local holidays.
;;;###autoload
(put 'holiday-local-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'other-holidays 'holiday-other-holidays "23.1")
;;;###autoload
(defcustom holiday-other-holidays nil
"User defined holidays.
;;;###autoload
(put 'holiday-other-holidays 'risky-local-variable t)
-;;;###autoload
-(defvar hebrew-holidays-1
- (mapcar 'purecopy
- '((holiday-hebrew-rosh-hashanah)
- (if calendar-hebrew-all-holidays-flag
- (holiday-julian
- 11
- (let ((m displayed-month)
- (y displayed-year)
- year)
- (calendar-increment-month m y -1)
- (setq year (calendar-extract-year
- (calendar-julian-from-absolute
- (calendar-absolute-from-gregorian (list m 1 y)))))
- (if (zerop (% (1+ year) 4))
- 22
- 21)) "\"Tal Umatar\" (evening)"))))
- "Component of the old default value of `holiday-hebrew-holidays'.")
-;;;###autoload
-(put 'hebrew-holidays-1 'risky-local-variable t)
-(make-obsolete-variable 'hebrew-holidays-1 'hebrew-holidays "23.1")
-
-;;;###autoload
-(defvar hebrew-holidays-2
- (mapcar 'purecopy
- '((holiday-hebrew-hanukkah) ; respects calendar-hebrew-all-holidays-flag
- (if calendar-hebrew-all-holidays-flag
- (holiday-hebrew
- 10
- (let ((h-year (calendar-extract-year
- (calendar-hebrew-from-absolute
- (calendar-absolute-from-gregorian
- (list displayed-month 28 displayed-year))))))
- (if (= 6 (% (calendar-hebrew-to-absolute (list 10 10 h-year))
- 7))
- 11 10))
- "Tzom Teveth"))
- (if calendar-hebrew-all-holidays-flag
- (holiday-hebrew 11 15 "Tu B'Shevat"))))
- "Component of the old default value of `holiday-hebrew-holidays'.")
-;;;###autoload
-(put 'hebrew-holidays-2 'risky-local-variable t)
-(make-obsolete-variable 'hebrew-holidays-2 'hebrew-holidays "23.1")
-
-;;;###autoload
-(defvar hebrew-holidays-3
- (mapcar 'purecopy
- '((if calendar-hebrew-all-holidays-flag
- (holiday-hebrew
- 11
- (let* ((m displayed-month)
- (y displayed-year)
- (h-year (progn
- (calendar-increment-month m y 1)
- (calendar-extract-year
- (calendar-hebrew-from-absolute
- (calendar-absolute-from-gregorian
- (list m (calendar-last-day-of-month m y) y))))))
- (s-s
- (calendar-hebrew-from-absolute
- (if (= 6
- (% (calendar-hebrew-to-absolute
- (list 7 1 h-year))
- 7))
- (calendar-dayname-on-or-before
- 6 (calendar-hebrew-to-absolute
- (list 11 17 h-year)))
- (calendar-dayname-on-or-before
- 6 (calendar-hebrew-to-absolute
- (list 11 16 h-year))))))
- (day (calendar-extract-day s-s)))
- day)
- "Shabbat Shirah"))))
- "Component of the old default value of `holiday-hebrew-holidays'.")
-;;;###autoload
-(put 'hebrew-holidays-3 'risky-local-variable t)
-(make-obsolete-variable 'hebrew-holidays-3 'hebrew-holidays "23.1")
-
-;;;###autoload
-(defvar hebrew-holidays-4
- (mapcar 'purecopy
- '((holiday-hebrew-passover)
- (and calendar-hebrew-all-holidays-flag
- (let* ((m displayed-month)
- (y displayed-year)
- (year (progn
- (calendar-increment-month m y -1)
- (calendar-extract-year
- (calendar-julian-from-absolute
- (calendar-absolute-from-gregorian (list m 1 y)))))))
- (= 21 (% year 28)))
- (holiday-julian 3 26 "Kiddush HaHamah"))
- (if calendar-hebrew-all-holidays-flag
- (holiday-hebrew-tisha-b-av))))
- "Component of the old default value of `holiday-hebrew-holidays'.")
-;;;###autoload
-(put 'hebrew-holidays-4 'risky-local-variable t)
-(make-obsolete-variable 'hebrew-holidays-4 'hebrew-holidays "23.1")
-
-;;;###autoload
-(define-obsolete-variable-alias 'hebrew-holidays
- 'holiday-hebrew-holidays "23.1")
;;;###autoload
(defcustom holiday-hebrew-holidays
(mapcar 'purecopy
;;;###autoload
(put 'holiday-hebrew-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'christian-holidays
- 'holiday-christian-holidays "23.1")
;;;###autoload
(defcustom holiday-christian-holidays
(mapcar 'purecopy
(if calendar-christian-all-holidays-flag
(append
(holiday-fixed 1 6 "Epiphany")
- (holiday-julian 12 25 "Eastern Orthodox Christmas")
+ (holiday-julian 12 25 "Christmas (Julian calendar)")
(holiday-greek-orthodox-easter)
(holiday-fixed 8 15 "Assumption")
(holiday-advent 0 "Advent")))))
;;;###autoload
(put 'holiday-christian-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'islamic-holidays
- 'holiday-islamic-holidays "23.1")
;;;###autoload
(defcustom holiday-islamic-holidays
(mapcar 'purecopy
;;;###autoload
(put 'holiday-islamic-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'bahai-holidays 'holiday-bahai-holidays "23.1")
;;;###autoload
(defcustom holiday-bahai-holidays
(mapcar 'purecopy
;;;###autoload
(put 'holiday-bahai-holidays 'risky-local-variable t)
-;;;###autoload
-(define-obsolete-variable-alias 'solar-holidays 'holiday-solar-holidays "23.1")
;;;###autoload
(defcustom holiday-solar-holidays
(mapcar 'purecopy
"List of notable days for the command \\[holidays].
Additional holidays are easy to add to the list, just put them in the
-list `holiday-other-holidays' in your .emacs file. Similarly, by setting
+list `holiday-other-holidays' in your init file. Similarly, by setting
any of `holiday-general-holidays', `holiday-local-holidays',
`holiday-christian-holidays', `holiday-hebrew-holidays',
`holiday-islamic-holidays', `holiday-bahai-holidays',
`holiday-oriental-holidays', or `holiday-solar-holidays' to nil in your
-.emacs file, you can eliminate unwanted categories of holidays.
+init file, you can eliminate unwanted categories of holidays.
The aforementioned variables control the holiday choices offered
by the function `holiday-list' when it is called interactively.
(defun calendar-holiday-list ()
"Form the list of holidays that occur on dates in the calendar window.
The holidays are those in the list `calendar-holidays'."
- (let (res h)
+ (let (res h err)
(sort
(dolist (p calendar-holidays res)
(if (setq h (if calendar-debug-sexp
(let ((debug-on-error t))
(eval p))
- (condition-case nil
+ (condition-case err
(eval p)
- (error (beep)
- (message "Bad holiday list item: %s" p)
- (sleep-for 2)))))
+ (error
+ (display-warning
+ :error
+ (format "Bad holiday list item: %s\nError: %s\n"
+ p err))
+ nil))))
(setq res (append h res))))
'calendar-date-compare)))
(message "Looking up holidays...done"))
holiday-list)))
-(define-obsolete-function-alias
- 'list-calendar-holidays 'calendar-list-holidays "23.1")
-
;;;###autoload
(defun holidays (&optional arg)
"Display the holidays for last month, this month, and next month.
If called with an optional prefix argument ARG, prompts for month and year.
-This function is suitable for execution in a .emacs file."
+This function is suitable for execution in a init file."
(interactive "P")
(save-excursion
(let* ((completion-ignore-case t)
"Check the list of holidays for any that occur on DATE.
DATE is a list (month day year). This function considers the
holidays from the list `calendar-holidays', and returns a list of
-strings describing those holidays that apply on DATE."
+strings describing those holidays that apply on DATE, or nil if none do."
(let ((displayed-month (calendar-extract-month date))
(displayed-year (calendar-extract-year date))
holiday-list)
(if (calendar-date-equal date (car h))
(setq holiday-list (append holiday-list (cdr h)))))))
-(define-obsolete-function-alias
- 'check-calendar-holidays 'calendar-check-holidays "23.1")
+
+;; Formerly cal-tex-list-holidays.
+(defun holiday-in-range (d1 d2)
+ "Generate a list of all holidays in range from absolute date D1 to D2."
+ (let* ((start (calendar-gregorian-from-absolute d1))
+ (displayed-month (calendar-extract-month start))
+ (displayed-year (calendar-extract-year start))
+ (end (calendar-gregorian-from-absolute d2))
+ (end-month (calendar-extract-month end))
+ (end-year (calendar-extract-year end))
+ (number-of-intervals
+ (1+ (/ (calendar-interval displayed-month displayed-year
+ end-month end-year)
+ 3)))
+ holidays in-range a)
+ (calendar-increment-month displayed-month displayed-year 1)
+ (dotimes (_idummy number-of-intervals)
+ (setq holidays (append holidays (calendar-holiday-list)))
+ (calendar-increment-month displayed-month displayed-year 3))
+ (dolist (hol holidays)
+ (and (car hol)
+ (setq a (calendar-absolute-from-gregorian (car hol)))
+ (and (<= d1 a) (<= a d2))
+ (setq in-range (append (list hol) in-range))))
+ in-range))
+
(declare-function x-popup-menu "menu.c" (position menu))
(calendar-mark-visible-date (car holiday) calendar-holiday-marker))
(message "Marking holidays...done")))
-(define-obsolete-function-alias
- 'mark-calendar-holidays 'calendar-mark-holidays "23.1")
-
;; Below are the functions that calculate the dates of holidays; these
;; are eval'ed in the function calendar-holiday-list. If you
;; write other such functions, be sure to imitate the style used below.
(and (car p) (calendar-date-is-visible-p (car p)) p))
hlist)))
-(define-obsolete-function-alias
- 'filter-visible-calendar-holidays 'holiday-filter-visible-calendar "23.1")
-
(defun holiday-sexp (sexp string)
"Sexp holiday for dates in the calendar window.
SEXP is an expression in variable `year' that is evaluated to