;; Hebrew calendar, Islamic calendar, ISO calendar, Julian day number,
;; diary, holidays
-(defun calendar-version ()
- (interactive)
- (message "Version 5.3, January 25, 1994"))
-
;; This file is part of GNU Emacs.
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY. No author or distributor
-;; accepts responsibility to anyone for the consequences of using it
-;; or for whether it serves any particular purpose or works at all,
-;; unless he says so in writing. Refer to the GNU Emacs General Public
-;; License for full details.
-
-;; Everyone is granted permission to copy, modify and redistribute
-;; GNU Emacs, but only under the conditions described in the
-;; GNU Emacs General Public License. A copy of this license is
-;; supposed to have been given to you along with GNU Emacs so you
-;; can know your rights and responsibilities. It should be in a
-;; file named COPYING. Among other things, the copyright notice
-;; and this notice must be preserved on all copies.
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
;;; Commentary:
;;; Code:
+(defun calendar-version ()
+ (interactive)
+ (message "Version 5.3, January 25, 1994"))
+
;;;###autoload
(defvar calendar-week-start-day 0
"*The day of the week on which a week in the calendar begins.
;;;###autoload
(defvar view-diary-entries-initially nil
- "*If t, the diary entries for the current date will be displayed on entry.
+ "*Non-nil means display current date's diary entries on entry.
The diary is displayed in another window when the calendar is first displayed,
if the current date is visible. The number of days of diary entries displayed
is governed by the variable `number-of-diary-entries'.")
or if the value of the variable `view-diary-entries-initially' is t. For
example, if the default value 1 is used, then only the current day's diary
entries will be displayed. If the value 2 is used, then both the current
-day's and the next day's entries will be displayed. The value can also be
-a vector such as [0 2 2 2 2 4 1]; this value will cause no diary entries to
-be displayed on Sunday, the current date's and the next day's diary entries
-to be displayed Monday through Thursday, Friday through Monday's entries to
-be displayed on Friday, and only Saturday's entries to be displayed on
-Saturday. This variable does not affect the diary display with the `d'
-command from the calendar; in that case, the prefix argument controls the
+day's and the next day's entries will be displayed.
+
+The value can also be a vector such as [0 2 2 2 2 4 1]; this value
+says to display no diary entries on Sunday, the display the entries
+for the current date and the day after on Monday through Thursday,
+display Friday through Monday's entries on Friday, and display only
+Saturday's entries on Saturday.
+
+This variable does not affect the diary display with the `d' command
+from the calendar; in that case, the prefix argument controls the
number of days of diary entries displayed.")
;;;###autoload
(defvar mark-diary-entries-in-calendar nil
- "*If t, dates with diary entries will be marked in the calendar window.
+ "*Non-nil means mark dates with diary entries, in the calendar window.
The marking symbol is specified by the variable `diary-entry-marker'.")
(defvar diary-entry-marker
;;;###autoload
(defvar view-calendar-holidays-initially nil
- "*If t, holidays for current three month period will be displayed on entry.
+ "*Non-nil means display holidays for current three month period on entry.
The holidays are displayed in another window when the calendar is first
displayed.")
;;;###autoload
(defvar mark-holidays-in-calendar nil
- "*If t, dates of holidays will be marked in the calendar window.
+ "*Non-nil means mark dates of holidays in the calendar window.
The marking symbol is specified by the variable `calendar-holiday-marker'.")
;;;###autoload
(defvar all-hebrew-calendar-holidays nil
"*If nil, show only major holidays from the Hebrew calendar.
+This means only those Jewish holidays that appear on secular calendars.
-If nil, the only holidays from the Hebrew calendar shown will be those days of
-such major interest as to appear on secular calendars.
-
-If t, the holidays shown in the calendar will include all special days that
-would be shown on a complete Hebrew calendar.")
+If t, show all the holidays that would appear in a complete Hebrew calendar.")
;;;###autoload
(defvar all-christian-calendar-holidays nil
"*If nil, show only major holidays from the Christian calendar.
+This means only those Christian holidays that appear on secular calendars.
-If nil, the only holidays from the Christian calendar shown will be those days
-of such major interest as to appear on secular calendars.
-
-If t, the holidays shown in the calendar will include all special days that
-would be shown on a complete Christian calendar.")
+If t, show all the holidays that would appear in a complete Christian
+calendar.")
;;;###autoload
(defvar all-islamic-calendar-holidays nil
"*If nil, show only major holidays from the Islamic calendar.
+This means only those Islamic holidays that appear on secular calendars.
-If nil, the only holidays from the Islamic calendar shown will be those days
-of such major interest as to appear on secular calendars.
-
-If t, the holidays shown in the calendar will include all special days that
-would be shown on a complete Islamic calendar.")
+If t, show all the holidays that would appear in a complete Islamic
+calendar.")
;;;###autoload
(defvar calendar-load-hook nil
"*List of functions to be called after the calendar is first loaded.
-This is the place to add key bindings to calendar-mode-map.")
+This is the place to add key bindings to `calendar-mode-map'.")
;;;###autoload
(defvar initial-calendar-window-hook nil
This can be used, for example, to replace today's date with asterisks; a
function `calendar-star-date' is included for this purpose:
(setq today-visible-calendar-hook 'calendar-star-date)
-It can also be used to mark the current date with calendar-today-marker;
+It can also be used to mark the current date with `calendar-today-marker';
a function is also provided for this:
(setq today-visible-calendar-hook 'calendar-mark-today)
To revert to the default American style from the European style, execute
`american-calendar' in the calendar.
-A diary entry can be preceded by a diary-nonmarking-symbol (ordinarily `&')
-to make that entry nonmarking--that is, it will not be marked on dates in
-the calendar window but will appear in a diary window.
+A diary entry can be preceded by the character
+`diary-nonmarking-symbol' (ordinarily `&') to make that entry
+nonmarking--that is, it will not be marked on dates in the calendar
+window but will appear in a diary window.
Multiline diary entries are made by indenting lines after the first with
either a TAB or one or more spaces.
&* 15 time cards due.
If the first line of a diary entry consists only of the date or day name with
-no trailing blanks or punctuation, then that line will not be displayed in the
-diary window; only the continuation lines will be shown. For example, the
+no trailing blanks or punctuation, then that line is not displayed in the
+diary window; only the continuation lines is shown. For example, the
single diary entry
02/11/1989
(monthname " *" day ", *" year "[^0-9]")
(dayname "\\W"))
"*List of pseudo-patterns describing the American patterns of date used.
-See the documentation of diary-date-forms for an explanation.")
+See the documentation of `diary-date-forms' for an explanation.")
;;;###autoload
(defvar european-date-diary-pattern
(day " *" monthname " *" year "[^0-9]")
(dayname "\\W"))
"*List of pseudo-patterns describing the European patterns of date used.
-See the documentation of diary-date-forms for an explanation.")
+See the documentation of `diary-date-forms' for an explanation.")
(defvar diary-date-forms
(if european-calendar-style
(defvar american-calendar-display-form
'((if dayname (concat dayname ", ")) monthname " " day ", " year)
"*Pseudo-pattern governing the way a date appears in the American style.
-See the documentation of calendar-date-display-form for an explanation.")
+See the documentation of `calendar-date-display-form' for an explanation.")
(defvar calendar-date-display-form
(if european-calendar-style
A function `include-other-diary-files' is provided for use as the value of
this hook. This function enables you to use shared diary files together
-with your own. The files included are specified in the diary-file by lines
+with your own. The files included are specified in the diary file by lines
of the form
#include \"filename\"
obeyed. You can change the \"#include\" to some other string by changing
the variable `diary-include-string'. When you use `include-other-diary-files'
as part of the list-diary-entries-hook, you will probably also want to use the
-function `mark-included-diary-files' as part of the mark-diary-entries-hook.
+function `mark-included-diary-files' as part of `mark-diary-entries-hook'.
For example, you could use
'(include-other-diary-files sort-diary-entries))
(setq diary-display-hook 'fancy-diary-display)
-in your .emacs file to cause the fancy diary buffer to be displayed with
+in your `.emacs' file to cause the fancy diary buffer to be displayed with
diary entries from various included files, each day's entries sorted into
lexicographic order.")
;;;###autoload
(defvar diary-display-hook nil
"*List of functions that handle the display of the diary.
-If nil (the default), `simple-diary-display' will be used. Use `ignore' for no
+If nil (the default), `simple-diary-display' is used. Use `ignore' for no
diary display.
Ordinarily, this just displays the diary buffer (with holidays indicated in
A function `mark-included-diary-files' is also provided for use as the
mark-diary-entries-hook; it enables you to use shared diary files together
-with your own. The files included are specified in the diary-file by lines
+with your own. The files included are specified in the diary file by lines
of the form
#include \"filename\"
This is recursive; that is, #include directives in files thus included are
obeyed. You can change the \"#include\" to some other string by changing the
variable `diary-include-string'. When you use `mark-included-diary-files' as
part of the mark-diary-entries-hook, you will probably also want to use the
-function `include-other-diary-files' as part of the list-diary-entries-hook.")
+function `include-other-diary-files' as part of `list-diary-entries-hook'.")
;;;###autoload
(defvar nongregorian-diary-marking-hook nil
;;;###autoload
(defvar holidays-in-diary-buffer t
- "*If t, the holidays will be indicated in the diary display.
-The holidays will be given in the mode line of the diary buffer, or in the
+ "*Non-nil means include holidays in the diary display.
+The holidays appear in the mode line of the diary buffer, or in the
fancy diary buffer next to the date. This slows down the diary functions
-somewhat; setting it to nil will make the diary display faster.")
+somewhat; setting it to nil makes the diary display faster.")
(defvar calendar-mark-ring nil)
+;;;###autoload
+(put 'general-holidays 'risky-local-variable t)
;;;###autoload
(defvar general-holidays
'((holiday-fixed 1 1 "New Year's Day")
"*General holidays. Default value is for the United States.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'local-holidays 'risky-local-variable t)
;;;###autoload
(defvar local-holidays nil
"*Local holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'other-holidays 'risky-local-variable t)
;;;###autoload
(defvar other-holidays nil
"*User defined holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'hebrew-holidays-1 'risky-local-variable t)
;;;###autoload
(defvar hebrew-holidays-1
'((holiday-rosh-hashanah-etc)
22
21))) "\"Tal Umatar\" (evening)"))))
+;;;###autoload
+(put 'hebrew-holidays-2 'risky-local-variable t)
;;;###autoload
(defvar hebrew-holidays-2
'((if all-hebrew-calendar-holidays
(if all-hebrew-calendar-holidays
(holiday-hebrew 11 15 "Tu B'Shevat"))))
+;;;###autoload
+(put 'hebrew-holidays-3 'risky-local-variable t)
;;;###autoload
(defvar hebrew-holidays-3
'((if all-hebrew-calendar-holidays
day))
"Shabbat Shirah"))))
+;;;###autoload
+(put 'hebrew-holidays-4 'risky-local-variable t)
;;;###autoload
(defvar hebrew-holidays-4
'((holiday-passover-etc)
(if all-hebrew-calendar-holidays
(holiday-tisha-b-av-etc))))
+;;;###autoload
+(put 'hebrew-holidays 'risky-local-variable t)
;;;###autoload
(defvar hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2
hebrew-holidays-3 hebrew-holidays-4)
"*Jewish holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'christian-holidays 'risky-local-variable t)
;;;###autoload
(defvar christian-holidays
'((if all-christian-calendar-holidays
"*Christian holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'islamic-holidays 'risky-local-variable t)
;;;###autoload
(defvar islamic-holidays
'((holiday-islamic
"*Islamic holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'solar-holidays 'risky-local-variable t)
;;;###autoload
(defvar solar-holidays
'((if (fboundp 'atan)
"*Sun-related holidays.
See the documentation for `calendar-holidays' for details.")
+;;;###autoload
+(put 'calendar-holidays 'risky-local-variable t)
(defvar calendar-holidays
(append general-holidays local-holidays other-holidays
christian-holidays hebrew-holidays islamic-holidays
(autoload 'view-diary-entries "diary"
"Prepare and display a buffer with diary entries.
-Searches the file diary-file for entries that match ARG days starting with
+Searches your diary file for entries that match ARG days starting with
the date indicated by the cursor position in the displayed three-month
calendar."
t)
t)
(autoload 'show-all-diary-entries "diary"
- "Show all of the diary entries in the diary-file.
-This function gets rid of the selective display of the diary-file so that
+ "Show all of the diary entries in the diary file.
+This function gets rid of the selective display of the diary file so that
all entries, not just some, are visible. If there is no diary buffer, one
is created."
t)
(autoload 'mark-diary-entries "diary"
"Mark days in the calendar window that have diary entries.
-Each entry in diary-file visible in the calendar window is marked."
+Each entry in diary file visible in the calendar window is marked."
t)
(autoload 'insert-diary-entry "diary-ins"
;; Put in the days of the month
(calendar-for-loop i from 1 to last do
(insert (format "%2d " i))
- (put-text-property (- (point) (if (< i 10) 2 3)) (1- (point))
- 'mouse-face 'highlight)
+ (put-text-property (- (point) 3) (1- (point)) 'mouse-face 'highlight)
(and (zerop (calendar-mod (+ i blank-days) 7))
(/= i last)
(calendar-insert-indented "" 0 t) ;; Force onto following line
(if window-system (require 'cal-menu))
(calendar-for-loop i from 0 to 9 do
(define-key calendar-mode-map (int-to-string i) 'digit-argument))
+ ;; kill-region and copy-region-as-kill are omitted from this list
+ ;; because they cause an ugly second pane in the Edit menu.
(let ((l (list 'narrow-to-region 'mark-word 'mark-sexp 'mark-paragraph
- 'mark-defun 'mark-whole-buffer 'mark-page 'kill-region
- 'copy-region-as-kill 'downcase-region 'upcase-region
+ 'mark-defun 'mark-whole-buffer 'mark-page
+ 'downcase-region 'upcase-region
'capitalize-region 'write-region)))
- (while (car l)
- (let ((k (where-is-internal (car l) '(keymap))))
- (while (car k)
- (define-key calendar-mode-map (car k) 'calendar-not-implemented)
- (setq k (cdr k)))
- (setq l (cdr l)))))
+
+ (while l
+ (substitute-key-definition (car l) 'calendar-not-implemented
+ calendar-mode-map global-map)
+ (setq l (cdr l))))
(define-key calendar-mode-map "-" 'negative-argument)
(define-key calendar-mode-map "\C-x>" 'scroll-calendar-right)
(define-key calendar-mode-map [prior] 'scroll-calendar-right-three-months)
\\[view-diary-entries] display diary entries \\[show-all-diary-entries] show all diary entries
\\[print-diary-entries] print diary entries
-Displaying the diary entries causes the diary entries from the diary-file
+Displaying the diary entries causes the diary entries from the diary file
\(for the date indicated by the cursor in the calendar window) to be
displayed in another window. This function takes an integer argument that
specifies the number of days of calendar entries to be displayed, starting
governed by number-of-diary-entries.
The format of the entries in the diary file is described in the
-documentation string for the variable diary-file.
+documentation string for the variable `diary-file'.
When diary entries are in view in the window, they can be edited. It is
important to keep in mind that the buffer displayed contains the entire
\\[calendar-sunrise-sunset] show times of sunrise and sunset
\\[calendar-phases-of-moon] show times of quarters of the moon
-The times given will be for location `calendar-location-name' at latitude
+The times given apply to location `calendar-location-name' at latitude
`calendar-latitude', longitude `calendar-longitude'; set these variables for
your location. The following variables are also consulted, and you must set
them if your system does not initialize them properly: `calendar-time-zone',
\\[exit-calendar] exit from calendar
-The variable `view-diary-entries-initially', whose default is nil, can be
-set to to t cause diary entries for the current date will be displayed in
+Set `view-diary-entries-initially' to a non-nil value to display
+diary entries for the current date in
another window when the calendar is first displayed, if the current date is
visible. The variable `number-of-diary-entries' controls number of days of
-diary entries that will be displayed initially or with the command M-x
-diary. For example, if the default value 1 is used, then only the current
-day's diary entries will be displayed. If the value 2 is used, both the
-current day's and the next day's entries will be displayed. The value can
-also be a vector: If the value is [0 2 2 2 2 4 1] then no diary entries
-will be displayed on Sunday, the current date's and the next day's diary
-entries will be displayed Monday through Thursday, Friday through Monday's
-entries will be displayed on Friday, while on Saturday only that day's
-entries will be displayed.
-
-The variable `view-calendar-holidays-initially' can be set to t to cause the
-holidays for the current three month period will be displayed on entry to the
-calendar. The holidays are displayed in another window.
-
-The variable `mark-diary-entries-in-calendar' can be set to t to cause any
-dates visible with calendar entries to be marked with the symbol specified by
-the variable `diary-entry-marker'.
+diary entries that to display initially or with the command M-x
+diary. For example, the default value 1 says to display only the current
+day's diary entries. The value 2 says to display both the
+current day's and the next day's entries.
+
+The value can also be a vector such as [0 2 2 2 2 4 1]; this value
+says to display no diary entries on Sunday, the display the entries
+for the current date and the day after on Monday through Thursday,
+display Friday through Monday's entries on Friday, and display only
+Saturday's entries on Saturday.
+
+Set `view-calendar-holidays-initially' to a non-nil value to display
+holidays for the current three month period on entry to the calendar.
+
+Set `mark-diary-entries-in-calendar' to a non-nil value to mark in the
+calendar all the dates that have diary entries. The variable
+`diary-entry-marker' controls how to mark them.
The variable `calendar-load-hook', whose default value is nil, is list of
functions to be called when the calendar is first loaded.
(list month
(string-to-int (buffer-substring (1+ (point)) (+ 4 (point))))
year))
- (if (and (looking-at "\\*")
- (save-excursion
- (re-search-backward "[^*]")
- (looking-at ".\\*\\*")))
- (list month starred-day year)
- (if error (error "Cursor is not on a date!"))))))
+ (if (looking-at "\\*")
+ (save-excursion
+ (re-search-backward "[^*]")
+ (if (looking-at ".\\*\\*")
+ (list month calendar-starred-day year)
+ (if error (error "Not on a date!"))))
+ (if error (error "Not on a date!"))))))
(defun calendar-cursor-to-nearest-date ()
"Move the cursor to the closest date.
This function can be used with the today-visible-calendar-hook run after the
calendar window has been prepared."
(let ((buffer-read-only nil))
- (make-variable-buffer-local 'starred-day)
+ (make-variable-buffer-local 'calendar-starred-day)
(forward-char 1)
- (setq starred-day
+ (setq calendar-starred-day
(string-to-int
(buffer-substring (point) (- (point) 2))))
(delete-char -2)
(or date (calendar-current-date))))
(day (% d 7))
(iso-date (calendar-iso-from-absolute d)))
- (format "Day %s of week %d of %d."
+ (format "Day %s of week %d of %d"
(if (zerop day) 7 day)
(extract-calendar-month iso-date)
(extract-calendar-year iso-date))))