annotate lisp/calendar/calendar.el @ 112453:06719a229a46 default tip

* calc/calc.el (calc-default-power-reference-level) (calc-default-field-reference-level): New variables. * calc/calc-units.el (math-standard-units): Add dB and Np. (math-logunits): New variable. (math-extract-logunits, math-logcombine, calcFunc-luplus) (calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level) (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level): New functions. (math-find-base-units-rec): Add entry for ln(10). * calc/calc-help.el (calc-u-prefix-help): Add logarithmic help. (calc-ul-prefix-help): New function. * calc/calc-ext.el (calc-init-extensions): Autoload new units functions. Add keybindings for new units functions.
author Jay Belanger <jay.p.belanger@gmail.com>
date Sun, 23 Jan 2011 23:08:04 -0600
parents 376148b31b5e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38088
diff changeset
1 ;;; calendar.el --- calendar functions
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
2
39785
5c56451d877f (calendar-mode-line-format): do not use #' on undefined functions
Sam Steingold <sds@gnu.org>
parents: 39523
diff changeset
3 ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
112218
376148b31b5e Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents: 111606
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
86493
93da3d3f787e Re-fill copyright years.
Glenn Morris <rgm@gnu.org>
parents: 84593
diff changeset
5 ;; Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
6
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
7 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
65919
5c09efcfc1d9 Update maintainer email address.
Glenn Morris <rgm@gnu.org>
parents: 65620
diff changeset
8 ;; Maintainer: Glenn Morris <rgm@gnu.org>
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2211
diff changeset
9 ;; Keywords: calendar
13193
a25a4f1246c0 Added key definitions and autoloads for cal-tex.el (a new file).
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 13042
diff changeset
10 ;; Human-Keywords: calendar, Gregorian calendar, diary, holidays
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
11
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
94653
e49abd957e81 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94454
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
6737
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
94653
e49abd957e81 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94454
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
e49abd957e81 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94454
diff changeset
17 ;; (at your option) any later version.
6737
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
18
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
6737
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
22 ;; GNU General Public License for more details.
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
23
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
24 ;; You should have received a copy of the GNU General Public License
94653
e49abd957e81 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94454
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
27 ;;; Commentary:
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
28
55431
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
29 ;; This collection of functions implements a calendar window. It
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
30 ;; generates a calendar for the current month, together with the
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
31 ;; previous and coming months, or for any other three-month period.
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
32 ;; The calendar can be scrolled forward and backward in the window to
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
33 ;; show months in the past or future; the cursor can move forward and
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
34 ;; backward by days, weeks, or months, making it possible, for
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
35 ;; instance, to jump to the date a specified number of days, weeks, or
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
36 ;; months from the date under the cursor. The user can display a list
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
37 ;; of holidays and other notable days for the period shown; the
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
38 ;; notable days can be marked on the calendar, if desired. The user
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
39 ;; can also specify that dates having corresponding diary entries (in
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
40 ;; a file that the user specifies) be marked; the diary entries for
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
41 ;; any date can be viewed in a separate window. The diary and the
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
42 ;; notable days can be viewed independently of the calendar. Dates
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
43 ;; can be translated from the (usual) Gregorian calendar to the day of
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
44 ;; the year/days remaining in year, to the ISO commercial calendar, to
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
45 ;; the Julian (old style) calendar, to the Hebrew calendar, to the
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
46 ;; Islamic calendar, to the Baha'i calendar, to the French
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
47 ;; Revolutionary calendar, to the Mayan calendar, to the Chinese
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
48 ;; calendar, to the Coptic calendar, to the Ethiopic calendar, and to
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
49 ;; the astronomical (Julian) day number. Times of sunrise/sunset can
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
50 ;; be displayed, as can the phases of the moon. Appointment
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
51 ;; notification for diary entries is available. Calendar printing via
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
52 ;; LaTeX is available.
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
53
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
54 ;; The following files are part of the calendar/diary code:
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
55
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
56 ;; appt.el Appointment notification
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
57 ;; cal-bahai.el Baha'i calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
58 ;; cal-china.el Chinese calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
59 ;; cal-coptic.el Coptic/Ethiopic calendars
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
60 ;; cal-dst.el Daylight saving time rules
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
61 ;; cal-french.el French revolutionary calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
62 ;; cal-hebrew.el Hebrew calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
63 ;; cal-html.el Calendars in HTML
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
64 ;; cal-islam.el Islamic calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
65 ;; cal-iso.el ISO calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
66 ;; cal-julian.el Julian/astronomical calendars
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
67 ;; cal-mayan.el Mayan calendars
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
68 ;; cal-menu.el Menu support
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
69 ;; cal-move.el Movement in the calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
70 ;; cal-persia.el Persian calendar
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
71 ;; cal-tex.el Calendars in LaTeX
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
72 ;; cal-x.el Dedicated frame functions
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
73 ;; calendar.el This file
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
74 ;; diary-lib.el Diary functions
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
75 ;; holidays.el Holiday functions
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
76 ;; lunar.el Phases of the moon
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
77 ;; solar.el Sunrise/sunset, equinoxes/solstices
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78
20462
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20429
diff changeset
79 ;; Technical details of all the calendrical calculations can be found in
61148
7f7db25577d9 Update reference to "Calendrical Calculations" book; there's a new edition.
Paul Eggert <eggert@twinsun.com>
parents: 60922
diff changeset
80 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
7f7db25577d9 Update reference to "Calendrical Calculations" book; there's a new edition.
Paul Eggert <eggert@twinsun.com>
parents: 60922
diff changeset
81 ;; and Nachum Dershowitz, Cambridge University Press (2001).
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
20462
d179de7ad92e Add reference to new Calendrical Calculations book.
Paul Eggert <eggert@twinsun.com>
parents: 20429
diff changeset
83 ;; An earlier version of the technical details appeared in
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; Software--Practice and Experience, Volume 20, Number 9 (September, 1990),
61148
7f7db25577d9 Update reference to "Calendrical Calculations" book; there's a new edition.
Paul Eggert <eggert@twinsun.com>
parents: 60922
diff changeset
86 ;; pages 899-928, and in ``Calendrical Calculations, Part II: Three Historical
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
87 ;; Calendars'' by E. M. Reingold, N. Dershowitz, and S. M. Clamen,
2640
fc7b8160bcc9 * calendar.el: Update reference to the papers in S-P&E.
Jim Blandy <jimb@redhat.com>
parents: 2347
diff changeset
88 ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993),
fc7b8160bcc9 * calendar.el: Update reference to the papers in S-P&E.
Jim Blandy <jimb@redhat.com>
parents: 2347
diff changeset
89 ;; pages 383-404.
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
90
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
91 ;; Hard copies of these two papers can be obtained by sending email to
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
92 ;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
93 ;; the message BODY containing your mailing address (snail).
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
95
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
96 ;; A note on free variables:
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
97
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
98 ;; The calendar passes around a few dynamically bound variables, which
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
99 ;; unfortunately have rather common names. They are meant to be
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
100 ;; available for external functions, so the names can't be changed.
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
101
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
102 ;; displayed-month, displayed-year: bound in calendar-generate, the
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
103 ;; central month of the 3 month calendar window
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
104 ;; original-date, number: bound in diary-list-entries, the arguments
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
105 ;; with which that function was called.
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
106 ;; date, entry: bound in diary-list-sexp-entries (qv)
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
107
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
108 ;; Bound in diary-list-entries:
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
109 ;; diary-entries-list: use in d-l, appt.el, and by diary-add-to-list
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
110 ;; diary-saved-point: only used in diary-lib.el, passed to the display func
92988
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
111 ;; date-string: only used in diary-lib.el
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
112 ;; list-only: don't modify the diary-buffer, just return a list of entries
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
113 ;; file-glob-attrs: yuck
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
114
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
115 ;;; Code:
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
105933
8f110099da5c Update x-popup-menu declaration.
Glenn Morris <rgm@gnu.org>
parents: 105844
diff changeset
117 (load "cal-loaddefs" nil t)
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
118
93714
6b2af597432a Require loaddef file rather than loading it.
Glenn Morris <rgm@gnu.org>
parents: 93647
diff changeset
119 ;; Avoid recursive load of calendar when loading cal-menu. Yuck.
93227
940127da5863 Provide calendar before requiring cal-menu.
Glenn Morris <rgm@gnu.org>
parents: 93187
diff changeset
120 (provide 'calendar)
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
121 (require 'cal-menu)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
122
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
123 (defgroup calendar nil
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
124 "Calendar and time management support."
93947
6819f30b721b (calendar, diary): Add :prefix.
Glenn Morris <rgm@gnu.org>
parents: 93900
diff changeset
125 :prefix "calendar-"
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
126 :group 'applications)
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
127
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
128 (defgroup calendar-hooks nil
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
129 "Calendar hooks."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
130 :prefix "calendar-"
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
131 :group 'calendar)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
132
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
133 (defgroup calendar-faces nil
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
134 "Calendar faces."
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
135 :prefix "calendar-"
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
136 :group 'calendar)
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
137
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
138 (defcustom calendar-offset 0
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
139 "The offset of the principal month from the center of the calendar window.
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
140 0 means the principal month is in the center (default), -1 means on the left,
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
141 +1 means on the right. Larger (or smaller) values push the principal month off
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
142 the screen."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
143 :type 'integer
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
144 :group 'calendar)
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
145
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
146 (defcustom calendar-setup nil
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
147 "The frame setup of the calendar.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
148 The choices are: `one-frame' (calendar and diary together in one separate,
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
149 dedicated frame); `two-frames' (calendar and diary in separate, dedicated
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
150 frames); `calendar-only' (calendar in a separate, dedicated frame); with
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
151 any other value the current frame is used. Using any of the first
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
152 three options overrides the value of `calendar-view-diary-initially-flag'."
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
153 :type '(choice
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
154 (const :tag "calendar and diary in separate frame" one-frame)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
155 (const :tag "calendar and diary each in own frame" two-frames)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
156 (const :tag "calendar in separate frame" calendar-only)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
157 (const :tag "use current frame" nil))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
158 :group 'calendar)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
159
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
160 (defcustom calendar-minimum-window-height 8
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
161 "Minimum height `calendar-generate-window' should use for calendar window."
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
162 :type 'integer
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
163 :version "22.1"
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
164 :group 'calendar)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
165
105539
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
166 ;; See discussion in bug#1806.
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
167 (defcustom calendar-split-width-threshold nil
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
168 "Value to use for `split-width-threshold' when creating a calendar.
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
169 This only affects frames wider than the default value of
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
170 `split-width-threshold'."
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
171 :type '(choice (const nil)
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
172 (integer))
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
173 :version "23.2"
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
174 :group 'calendar)
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
175
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
176 (defcustom calendar-week-start-day 0
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
177 "The day of the week on which a week in the calendar begins.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
178 0 means Sunday (default), 1 means Monday, and so on.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
179
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
180 If you change this variable directly (without using customize)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
181 after starting `calendar', you should call `calendar-redraw' to
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
182 update the calendar display to reflect the change, otherwise
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
183 movement commands will not work correctly."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
184 :type 'integer
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
185 ;; Change the initialize so that if you reload calendar.el, it will not
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
186 ;; cause a redraw (which may fail, e.g. with "invalid byte-code in
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
187 ;; calendar.elc" because of the "byte-compile-dynamic").
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
188 :initialize 'custom-initialize-default
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
189 :set (lambda (sym val)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
190 (set sym val)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
191 (calendar-redraw))
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
192 :group 'calendar)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
193
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
194 (define-obsolete-variable-alias 'view-diary-entries-initially
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
195 'calendar-view-diary-initially-flag "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
196
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
197 (defcustom calendar-view-diary-initially-flag nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
198 "Non-nil means display current date's diary entries on entry to calendar.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 The diary is displayed in another window when the calendar is first displayed,
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 if the current date is visible. The number of days of diary entries displayed
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
201 is governed by the variable `diary-number-of-entries'. This variable can
53559
ba8b837c072c Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 52723
diff changeset
202 be overridden by the value of `calendar-setup'."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
203 :type 'boolean
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
204 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
206 (define-obsolete-variable-alias 'mark-diary-entries-in-calendar
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
207 'calendar-mark-diary-entries-flag "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
208
101899
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
209 ;; FIXME :set
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
210 (defcustom calendar-mark-diary-entries-flag nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
211 "Non-nil means mark dates with diary entries, in the calendar window.
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
212 The marking symbol is specified by the variable `diary-entry-marker'."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
213 :type 'boolean
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
214 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
216 (defcustom calendar-remove-frame-by-deleting t
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
217 "Determine how the calendar mode removes a frame no longer needed.
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
218 If nil, make an icon of the frame. If non-nil, delete the frame."
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
219 :type 'boolean
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
220 :version "23.1" ; changed from nil to t
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
221 :group 'view
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
222 :group 'calendar)
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
223
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
224 (defface calendar-today
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
225 '((t (:underline t)))
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
226 "Face for indicating today's date in the calendar.
104754
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
227 See the variable `calendar-today-marker'."
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
228 :group 'calendar-faces)
104754
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
229
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
230 (define-obsolete-face-alias 'calendar-today-face 'calendar-today "22.1")
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
231
63221
6e968f79cfbc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385
Miles Bader <miles@gnu.org>
parents: 62779
diff changeset
232 (defface diary
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61148
diff changeset
233 '((((min-colors 88) (class color) (background light))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61148
diff changeset
234 :foreground "red1")
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61148
diff changeset
235 (((class color) (background light))
33208
4360c704c17f Revoke the change.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents: 33205
diff changeset
236 :foreground "red")
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61148
diff changeset
237 (((min-colors 88) (class color) (background dark))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61148
diff changeset
238 :foreground "yellow1")
33160
8006eaf2db42 (diary-face, calendar-today-face, holiday-face):
Miles Bader <miles@gnu.org>
parents: 33114
diff changeset
239 (((class color) (background dark))
33208
4360c704c17f Revoke the change.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents: 33205
diff changeset
240 :foreground "yellow")
33160
8006eaf2db42 (diary-face, calendar-today-face, holiday-face):
Miles Bader <miles@gnu.org>
parents: 33114
diff changeset
241 (t
42456
8a4077ab418c (various face definitions): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 41577
diff changeset
242 :weight bold))
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
243 "Face for highlighting diary entries.
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
244 Used to mark diary entries in the calendar (see `diary-entry-marker'),
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
245 and to highlight the date header in the fancy diary."
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
246 :group 'calendar-faces)
104754
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
247
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
248 (define-obsolete-face-alias 'diary-face 'diary "22.1")
63221
6e968f79cfbc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385
Miles Bader <miles@gnu.org>
parents: 62779
diff changeset
249
6e968f79cfbc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385
Miles Bader <miles@gnu.org>
parents: 62779
diff changeset
250 (defface holiday
33160
8006eaf2db42 (diary-face, calendar-today-face, holiday-face):
Miles Bader <miles@gnu.org>
parents: 33114
diff changeset
251 '((((class color) (background light))
33208
4360c704c17f Revoke the change.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents: 33205
diff changeset
252 :background "pink")
33160
8006eaf2db42 (diary-face, calendar-today-face, holiday-face):
Miles Bader <miles@gnu.org>
parents: 33114
diff changeset
253 (((class color) (background dark))
33208
4360c704c17f Revoke the change.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents: 33205
diff changeset
254 :background "chocolate4")
33160
8006eaf2db42 (diary-face, calendar-today-face, holiday-face):
Miles Bader <miles@gnu.org>
parents: 33114
diff changeset
255 (t
33208
4360c704c17f Revoke the change.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents: 33205
diff changeset
256 :inverse-video t))
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
257 "Face for indicating in the calendar dates that have holidays.
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
258 See `calendar-holiday-marker'."
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
259 :group 'calendar-faces)
104754
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
260
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
261 (define-obsolete-face-alias 'holiday-face 'holiday "22.1")
19059
06cb7a02a079 (diary-face, calendar-today-face, holiday-face):
Richard M. Stallman <rms@gnu.org>
parents: 18940
diff changeset
262
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
263 ;; These briefly checked font-lock-mode, but that is broken, since it
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
264 ;; is a buffer-local variable, and which buffer happens to be current
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
265 ;; when this file is loaded shouldn't make a difference. One could
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
266 ;; perhaps check global-font-lock-mode, or font-lock-global-modes; but
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
267 ;; this feature doesn't use font-lock, so there's no real reason it
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
268 ;; should respect those either. See bug#2199.
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
269 ;; They also used to check display-color-p, but that is a problem if
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
270 ;; loaded from --daemon. Since BW displays are rare now, this was
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
271 ;; also taken out. The way to keep it would be to have nil mean do a
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
272 ;; runtime check whenever this variable is used.
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
273 (defcustom diary-entry-marker 'diary
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
274 "How to mark dates that have diary entries.
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
275 The value can be either a single-character string (e.g. \"+\") or a face."
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
276 :type '(choice (string :tag "Single character string") face)
101910
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
277 :group 'diary
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
278 :version "23.1")
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
279
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
280 (defcustom calendar-today-marker 'calendar-today
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
281 "How to mark today's date in the calendar.
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
282 The value can be either a single-character string (e.g. \"=\") or a face.
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
283 Used by `calendar-mark-today'."
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
284 :type '(choice (string :tag "Single character string") face)
101910
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
285 :group 'calendar
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
286 :version "23.1")
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
287
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
288 (defcustom calendar-holiday-marker 'holiday
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
289 "How to mark notable dates in the calendar.
101908
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
290 The value can be either a single-character string (e.g. \"*\") or a face."
2f90d8471cb7 (diary-entry-marker, calendar-today-marker)
Glenn Morris <rgm@gnu.org>
parents: 101899
diff changeset
291 :type '(choice (string :tag "Single character string") face)
101910
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
292 :group 'holidays
3d527c23c151 Add :version tags for previous change.
Glenn Morris <rgm@gnu.org>
parents: 101908
diff changeset
293 :version "23.1")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
295 (define-obsolete-variable-alias 'view-calendar-holidays-initially
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
296 'calendar-view-holidays-initially-flag "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
297
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
298 (defcustom calendar-view-holidays-initially-flag nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
299 "Non-nil means display holidays for current three month period on entry.
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
300 The holidays are displayed in another window when the calendar is first
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
301 displayed."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
302 :type 'boolean
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
303 :group 'holidays)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
305 (define-obsolete-variable-alias 'mark-holidays-in-calendar
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
306 'calendar-mark-holidays-flag "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
307
101899
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
308 ;; FIXME :set
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
309 (defcustom calendar-mark-holidays-flag nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
310 "Non-nil means mark dates of holidays in the calendar window.
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
311 The marking symbol is specified by the variable `calendar-holiday-marker'."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
312 :type 'boolean
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
313 :group 'holidays)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314
76752
f6dad15ba551 (calendar-mode-hook): Declare it.
Glenn Morris <rgm@gnu.org>
parents: 76641
diff changeset
315 (defcustom calendar-mode-hook nil
f6dad15ba551 (calendar-mode-hook): Declare it.
Glenn Morris <rgm@gnu.org>
parents: 76641
diff changeset
316 "Hook run when entering `calendar-mode'."
f6dad15ba551 (calendar-mode-hook): Declare it.
Glenn Morris <rgm@gnu.org>
parents: 76641
diff changeset
317 :type 'hook
f6dad15ba551 (calendar-mode-hook): Declare it.
Glenn Morris <rgm@gnu.org>
parents: 76641
diff changeset
318 :group 'calendar-hooks)
f6dad15ba551 (calendar-mode-hook): Declare it.
Glenn Morris <rgm@gnu.org>
parents: 76641
diff changeset
319
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
320 (defcustom calendar-load-hook nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
321 "List of functions to be called after the calendar is first loaded.
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
322 This is the place to add key bindings to `calendar-mode-map'."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
323 :type 'hook
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
324 :group 'calendar-hooks)
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
325
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
326 (define-obsolete-variable-alias 'initial-calendar-window-hook
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
327 'calendar-initial-window-hook "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
328
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
329 (defcustom calendar-initial-window-hook nil
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
330 "List of functions to be called when the calendar window is created.
93043
0e73f340ef25 (initial-calendar-window-hook, today-visible-calendar-hook): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 93026
diff changeset
331 Quitting the calendar and re-entering it will cause these functions
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
332 to be called again."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
333 :type 'hook
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
334 :group 'calendar-hooks)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
336 (define-obsolete-variable-alias 'today-visible-calendar-hook
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
337 'calendar-today-visible-hook "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
338
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
339 (defcustom calendar-today-visible-hook nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
340 "List of functions called whenever the current date is visible.
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
341 To mark today's date, add the function `calendar-mark-today'.
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
342 To replace the date with asterisks, add the function `calendar-star-date'.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
343 See also `calendar-today-invisible-hook'.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344
93043
0e73f340ef25 (initial-calendar-window-hook, today-visible-calendar-hook): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 93026
diff changeset
345 In general, be careful about changing characters in the calendar buffer,
0e73f340ef25 (initial-calendar-window-hook, today-visible-calendar-hook): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 93026
diff changeset
346 since it may cause the movement commands to fail."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
347 :type 'hook
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
348 :options '(calendar-mark-today calendar-star-date)
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
349 :group 'calendar-hooks)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
351 (define-obsolete-variable-alias 'today-invisible-calendar-hook
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
352 'calendar-today-invisible-hook "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
353
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
354 (defcustom calendar-today-invisible-hook nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
355 "List of functions called whenever the current date is not visible.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
356 See also `calendar-today-visible-hook'."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
357 :type 'hook
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
358 :group 'calendar-hooks)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
25410
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
360 (defcustom calendar-move-hook nil
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
361 "List of functions called whenever the cursor moves in the calendar.
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
362 For example,
25410
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
363
65477
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
364 (add-hook 'calendar-move-hook (lambda () (diary-view-entries 1)))
25410
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
365
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
366 redisplays the diary for whatever date the cursor is moved to."
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
367 :type 'hook
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
368 :options '(calendar-update-mode-line)
25410
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
369 :group 'calendar-hooks)
3ab4413f7549 (calendar-move-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents: 25154
diff changeset
370
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
371 (defcustom calendar-date-echo-text
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
372 "mouse-2: general menu\nmouse-3: menu for this date"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
373 "String displayed when the cursor is over a date in the calendar.
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
374 Can be either a fixed string, or a lisp expression that returns one.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
375 When this expression is evaluated, DAY, MONTH, and YEAR are
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
376 integers appropriate to the relevant date. For example, to
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
377 display the ISO date:
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
378
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
379 (setq calendar-date-echo-text '(format \"ISO date: %s\"
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
380 (calendar-iso-date-string
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
381 (list month day year))))
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
382 Changing this variable without using customize has no effect on
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
383 pre-existing calendar windows."
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
384 :group 'calendar
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
385 :initialize 'custom-initialize-default
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
386 :risky t
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
387 :set (lambda (sym val)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
388 (set sym val)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
389 (calendar-redraw))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
390 :type '(choice (string :tag "Fixed string")
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
391 (sexp :value
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
392 (format "ISO date: %s"
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
393 (calendar-iso-date-string
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
394 (list month day year)))))
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
395 :version "23.1")
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
396
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
397
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
398 (defvar calendar-month-digit-width nil
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
399 "Width of the region with numbers in each month in the calendar.")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
400
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
401 (defvar calendar-month-width nil
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
402 "Full width of each month in the calendar.")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
403
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
404 (defvar calendar-right-margin nil
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
405 "Right margin of the calendar.")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
406
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
407 (defvar calendar-month-edges nil
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
408 "Alist of month edge columns.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
409 Each element has the form (N LEFT FIRST LAST RIGHT), where
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
410 LEFT is the leftmost column associated with month segment N,
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
411 FIRST and LAST are the first and last columns with day digits in,
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
412 and LAST is the rightmost column.")
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
413
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
414 (defun calendar-month-edges (segment)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
415 "Compute the month edge columns for month SEGMENT.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
416 Returns a list (LEFT FIRST LAST RIGHT), where LEFT is the
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
417 leftmost column associated with a month, FIRST and LAST are the
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
418 first and last columns with day digits in, and LAST is the
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
419 rightmost column."
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
420 ;; The leftmost column with a digit in it in this month segment.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
421 (let* ((first (+ calendar-left-margin
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
422 (* segment calendar-month-width)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
423 ;; The rightmost column with a digit in it in this month segment.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
424 (last (+ first (1- calendar-month-digit-width)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
425 (left (if (eq segment 0)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
426 0
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
427 (+ calendar-left-margin
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
428 (* segment calendar-month-width)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
429 (- (/ calendar-intermonth-spacing 2)))))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
430 ;; The rightmost edge of this month segment, dividing the
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
431 ;; space between months in two.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
432 (right (+ calendar-left-margin
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
433 (* (1+ segment) calendar-month-width)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
434 (- (/ calendar-intermonth-spacing 2)))))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
435 (list left first last right)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
436
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
437 (defun calendar-recompute-layout-variables ()
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
438 "Recompute some layout-related calendar \"constants\"."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
439 (setq calendar-month-digit-width (+ (* 6 calendar-column-width)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
440 calendar-day-digit-width)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
441 calendar-month-width (+ (* 7 calendar-column-width)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
442 calendar-intermonth-spacing)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
443 calendar-right-margin (+ calendar-left-margin
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
444 (* 3 (* 7 calendar-column-width))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
445 (* 2 calendar-intermonth-spacing))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
446 calendar-month-edges nil)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
447 (dotimes (i 3)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
448 (push (cons i (calendar-month-edges i)) calendar-month-edges))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
449 (setq calendar-month-edges (reverse calendar-month-edges)))
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
450
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
451 ;; FIXME add font-lock-keywords.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
452 (defun calendar-set-layout-variable (symbol value &optional minmax)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
453 "Set SYMBOL's value to VALUE, an integer.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
454 A positive/negative MINMAX enforces a minimum/maximum value.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
455 Then redraw the calendar, if necessary."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
456 (let ((oldvalue (symbol-value symbol)))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
457 (custom-set-default symbol (if minmax
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
458 (if (< minmax 0)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
459 (min value (- minmax))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
460 (max value minmax))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
461 value))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
462 (unless (equal value oldvalue)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
463 (calendar-recompute-layout-variables)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
464 (calendar-redraw))))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
465
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
466 (defcustom calendar-left-margin 5
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
467 "Empty space to the left of the first month in the calendar."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
468 :group 'calendar
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
469 :initialize 'custom-initialize-default
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
470 :set 'calendar-set-layout-variable
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
471 :type 'integer
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
472 :version "23.1")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
473
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
474 ;; Or you can view it as columns of width 2, with 1 space, no space
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
475 ;; after the last column, and a 5 space gap between month.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
476 ;; FIXME check things work if this is odd.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
477 (defcustom calendar-intermonth-spacing 4
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
478 "Space between months in the calendar. Minimum value is 1."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
479 :group 'calendar
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
480 :initialize 'custom-initialize-default
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
481 :set (lambda (sym val)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
482 (calendar-set-layout-variable sym val 1))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
483 :type 'integer
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
484 :version "23.1")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
485
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
486 ;; FIXME calendar-month-column-width?
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
487 (defcustom calendar-column-width 3
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
488 "Width of each day column in the calendar. Minimum value is 3."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
489 :initialize 'custom-initialize-default
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
490 :set (lambda (sym val)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
491 (calendar-set-layout-variable sym val 3))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
492 :type 'integer
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
493 :version "23.1")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
494
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
495 (defcustom calendar-day-header-width 2
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
496 "Width of the day column headers in the calendar.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
497 Must be at least one less than `calendar-column-width'."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
498 :group 'calendar
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
499 :initialize 'custom-initialize-default
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
500 :set (lambda (sym val)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
501 (calendar-set-layout-variable sym val (- 1 calendar-column-width)))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
502 :type 'integer
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
503 :version "23.1")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
504
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
505 ;; FIXME a format specifier instead?
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
506 (defcustom calendar-day-digit-width 2
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
507 "Width of the day digits in the calendar. Minimum value is 2."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
508 :group 'calendar
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
509 :initialize 'custom-initialize-default
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
510 :set (lambda (sym val)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
511 (calendar-set-layout-variable sym val 2))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
512 :type 'integer
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
513 :version "23.1")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
514
96313
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
515 (defcustom calendar-intermonth-header nil
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
516 "Header text display in the space to the left of each calendar month.
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
517 See `calendar-intermonth-text'."
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
518 :group 'calendar
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
519 :initialize 'custom-initialize-default
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
520 :risky t
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
521 :set (lambda (sym val)
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
522 (set sym val)
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
523 (calendar-redraw))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
524 :type '(choice (const nil :tag "Nothing")
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
525 (string :tag "Fixed string")
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
526 (sexp :value
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
527 (propertize "WK" 'font-lock-face
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
528 'font-lock-function-name-face)))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
529 :version "23.1")
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
530
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
531 (defcustom calendar-intermonth-text nil
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
532 "Text to display in the space to the left of each calendar month.
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
533 Can be nil, a fixed string, or a lisp expression that returns a string.
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
534 When the expression is evaluated, the variables DAY, MONTH and YEAR
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
535 are integers appropriate for the first day in each week.
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
536 Will be truncated to the smaller of `calendar-left-margin' and
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
537 `calendar-intermonth-spacing'. The last character is forced to be a space.
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
538 For example, to display the ISO week numbers:
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
539
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
540 (setq calendar-week-start-day 1
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
541 calendar-intermonth-text
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
542 '(propertize
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
543 (format \"%2d\"
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
544 (car
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
545 (calendar-iso-from-absolute
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
546 (calendar-absolute-from-gregorian (list month day year)))))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
547 'font-lock-face 'font-lock-function-name-face))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
548
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
549 See also `calendar-intermonth-header'."
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
550 :group 'calendar
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
551 :initialize 'custom-initialize-default
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
552 :risky t
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
553 :set (lambda (sym val)
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
554 (set sym val)
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
555 (calendar-redraw))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
556 :type '(choice (const nil :tag "Nothing")
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
557 (string :tag "Fixed string")
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
558 (sexp :value
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
559 (propertize
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
560 (format "%2d"
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
561 (car
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
562 (calendar-iso-from-absolute
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
563 (calendar-absolute-from-gregorian
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
564 (list month day year)))))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
565 'font-lock-face 'font-lock-function-name-face)))
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
566 :version "23.1")
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
567
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
568 (defcustom diary-file "~/diary"
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
569 "Name of the file in which one's personal diary of dates is kept.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
571 The file's entries are lines beginning with any of the forms
93278
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
572 specified by the variable `diary-date-forms', which by default
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
573 uses the forms of `diary-american-date-forms':
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 MONTH/DAY
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 MONTH/DAY/YEAR
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 MONTHNAME DAY
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 MONTHNAME DAY, YEAR
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 DAYNAME
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
581 with the remainder of the line being the diary entry string for
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
582 that date. MONTH and DAY are one or two digit numbers, YEAR is a
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
583 number and may be written in full or abbreviated to the final two
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
584 digits (if `diary-abbreviated-year-flag' is non-nil). MONTHNAME
92895
379d912c3710 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 92858
diff changeset
585 and DAYNAME can be spelled in full (as specified by the variables
93278
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
586 `calendar-month-name-array' and `calendar-day-name-array'), or
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
587 abbreviated (as specified by `calendar-month-abbrev-array' and
93278
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
588 `calendar-day-abbrev-array') with or without a period. Case is
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
589 ignored. Any of DAY, MONTH, or MONTHNAME, YEAR can be `*' which
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
590 matches any day, month, or year, respectively. If the date does
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
591 not contain a year, it is generic and applies to any year. A
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
592 DAYNAME entry applies to the appropriate day of the week in every week.
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
593
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
594 You can customize `diary-date-forms' to your preferred format.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
595 Three default styles are provided: `diary-american-date-forms',
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
596 `diary-european-date-forms', and `diary-iso-date-forms'.
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
597 You can choose between these by setting `calendar-date-style' in your
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
598 .emacs file, or by using `calendar-set-date-style' when in the calendar.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599
93278
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
600 A diary entry can be preceded by the character `diary-nonmarking-symbol'
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
601 \(ordinarily `&') to make that entry nonmarking--that is, it will not be
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
602 marked on dates in the calendar window but will appear in a diary window.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 Multiline diary entries are made by indenting lines after the first with
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 either a TAB or one or more spaces.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 Lines not in one the above formats are ignored. Here are some sample diary
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 entries (in the default American style):
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 12/22/1988 Twentieth wedding anniversary!!
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 &1/1. Happy New Year!
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 10/22 Ruth's birthday.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 21: Payday
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 Tuesday--weekly meeting with grad students at 10am
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 Supowit, Shen, Bitner, and Kapoor to attend.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 1/13/89 Friday the thirteenth!!
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 &thu 4pm squash game with Lloyd.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 mar 16 Dad's birthday
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 April 15, 1989 Income tax due.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 &* 15 time cards due.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 If the first line of a diary entry consists only of the date or day name with
6737
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
623 no trailing blanks or punctuation, then that line is not displayed in the
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
624 diary window; only the continuation lines is shown. For example, the
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 single diary entry
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 02/11/1989
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 Bill Blattner visits Princeton today
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 2pm Cognitive Studies Committee meeting
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 2:30-5:30 Lizzie at Lawrenceville for `Group Initiative'
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 4:00pm Jamie Tappenden
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 7:30pm Dinner at George and Ed's for Alan Ryan
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 7:30-10:00pm dance at Stewart Country Day School
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 will appear in the diary window without the date line at the beginning. This
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 facility allows the diary window to look neater, but can cause confusion if
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 used with more than one day's entries displayed.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 Diary entries can be based on Lisp sexps. For example, the diary entry
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 %%(diary-block 11 1 1990 11 10 1990) Vacation
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642
55431
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
643 causes the diary entry \"Vacation\" to appear from November 1 through
93278
58366e03a762 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93227
diff changeset
644 November 10, 1990. See the documentation for the function
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
645 `diary-list-sexp-entries' for more details.
55431
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
646
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
647 Diary entries based on the Hebrew, the Islamic and/or the Baha'i
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
648 calendar are also possible, but because these are somewhat slow, they
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
649 are ignored unless you set the `diary-nongregorian-listing-hook' and
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
650 the `diary-nongregorian-marking-hook' appropriately. See the
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
651 documentation of these hooks for details.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 Diary files can contain directives to include the contents of other files; for
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
654 details, see the documentation for the variable `diary-list-entries-hook'."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
655 :type 'file
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
656 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
658 ;; FIXME do these have to be single characters?
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
659 (defcustom diary-nonmarking-symbol "&"
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
660 "Symbol indicating that a diary entry is not to be marked in the calendar."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
661 :type 'string
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
662 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
664 (define-obsolete-variable-alias 'hebrew-diary-entry-symbol
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
665 'diary-hebrew-entry-symbol "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
666
93730
4228779bdf81 (diary-hebrew-entry-symbol): Rename hebrew-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents: 93719
diff changeset
667 (defcustom diary-hebrew-entry-symbol "H"
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
668 "Symbol indicating a diary entry according to the Hebrew calendar."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
669 :type 'string
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
670 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
672 (define-obsolete-variable-alias 'islamic-diary-entry-symbol
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
673 'diary-islamic-entry-symbol "23.1")
93730
4228779bdf81 (diary-hebrew-entry-symbol): Rename hebrew-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents: 93719
diff changeset
674
4228779bdf81 (diary-hebrew-entry-symbol): Rename hebrew-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents: 93719
diff changeset
675 (defcustom diary-islamic-entry-symbol "I"
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
676 "Symbol indicating a diary entry according to the Islamic calendar."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
677 :type 'string
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
678 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
680 (define-obsolete-variable-alias 'bahai-diary-entry-symbol
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
681 'diary-bahai-entry-symbol "23.1")
93730
4228779bdf81 (diary-hebrew-entry-symbol): Rename hebrew-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents: 93719
diff changeset
682
4228779bdf81 (diary-hebrew-entry-symbol): Rename hebrew-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents: 93719
diff changeset
683 (defcustom diary-bahai-entry-symbol "B"
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
684 "Symbol indicating a diary entry according to the Baha'i calendar."
55431
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
685 :type 'string
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
686 :group 'diary)
b278cb498cc8 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54536
diff changeset
687
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
688 (defcustom european-calendar-style nil
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
689 "Non-nil means use the European style of dates in the diary and display.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
690 In this case, a date like 1/2/1990 would be interpreted as
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
691 February 1, 1990. See `diary-european-date-forms' for the
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
692 default European diary date styles.
73176
3dbfd59b44b5 (european-calendar-style): Call european-calendar or american-calendar
Glenn Morris <rgm@gnu.org>
parents: 71569
diff changeset
693
3dbfd59b44b5 (european-calendar-style): Call european-calendar or american-calendar
Glenn Morris <rgm@gnu.org>
parents: 71569
diff changeset
694 Setting this variable directly does not take effect (if the
3dbfd59b44b5 (european-calendar-style): Call european-calendar or american-calendar
Glenn Morris <rgm@gnu.org>
parents: 71569
diff changeset
695 calendar package is already loaded). Rather, use either
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
696 \\[customize] or the function `calendar-set-date-style'."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
697 :type 'boolean
73176
3dbfd59b44b5 (european-calendar-style): Call european-calendar or american-calendar
Glenn Morris <rgm@gnu.org>
parents: 71569
diff changeset
698 ;; Without :initialize (require 'calendar) throws an error because
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
699 ;; calendar-set-date-style is undefined at this point.
73176
3dbfd59b44b5 (european-calendar-style): Call european-calendar or american-calendar
Glenn Morris <rgm@gnu.org>
parents: 71569
diff changeset
700 :initialize 'custom-initialize-default
73181
97319c05f531 (european-calendar-style): Tweak previous fix.
Glenn Morris <rgm@gnu.org>
parents: 73176
diff changeset
701 :set (lambda (symbol value)
97319c05f531 (european-calendar-style): Tweak previous fix.
Glenn Morris <rgm@gnu.org>
parents: 73176
diff changeset
702 (if value
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
703 (calendar-set-date-style 'european)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
704 (calendar-set-date-style 'american)))
93947
6819f30b721b (calendar, diary): Add :prefix.
Glenn Morris <rgm@gnu.org>
parents: 93900
diff changeset
705 :group 'calendar)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
707 (make-obsolete-variable 'european-calendar-style 'calendar-date-style "23.1")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
708
93846
e4a7737b7ba2 (calendar-date-style): Remove autoload cookie.
Glenn Morris <rgm@gnu.org>
parents: 93844
diff changeset
709 ;; If this is autoloaded, c-d-s gets set before any customization of e-c-s.
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
710 (defcustom calendar-date-style (if european-calendar-style 'european
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
711 'american)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
712 "Your preferred style for writing dates.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
713 The options are:
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
714 `american' - month/day/year
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
715 `european' - day/month/year
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
716 `iso' - year/month/day
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
717 This affects how dates written in your diary are interpreted.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
718 It also affects date display, as well as those calendar and diary
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
719 functions that take a date as an argument, e.g. `diary-date', by
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
720 changing the order in which the arguments are interpreted.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
721
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
722 Setting this variable directly does not take effect (if the
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
723 calendar package is already loaded). Rather, use either
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
724 \\[customize] or the function `calendar-set-date-style'."
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
725 :version "23.1"
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
726 :type '(choice (const american :tag "Month/Day/Year")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
727 (const european :tag "Day/Month/Year")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
728 (const iso :tag "Year/Month/Day"))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
729 :initialize 'custom-initialize-default
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
730 :set (lambda (symbol value)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
731 (calendar-set-date-style value))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
732 :group 'calendar)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
733
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
734 ;; Next three are provided to aid in setting diary-date-forms.
93995
27365ac56ead (diary, holidays): Move custom groups to other files.
Glenn Morris <rgm@gnu.org>
parents: 93947
diff changeset
735 ;; FIXME move to diary-lib?
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
736 (defcustom diary-iso-date-forms
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
737 '((month "[-/]" day "[^-/0-9]")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
738 (year "[-/]" month "[-/]" day "[^0-9]")
111606
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
739 ;; Cannot allow [-/] as separators here, since it would also match
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
740 ;; the first element (bug#7377).
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
741 (monthname " *" day "[^-0-9]")
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
742 (year " *" monthname " *" day "[^0-9]")
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
743 (dayname "\\W"))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
744 "List of pseudo-patterns describing the ISO style of dates.
111606
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
745 The defaults are: MONTH[-/]DAY; YEAR[-/]MONTH[-/]DAY; MONTHNAME DAY;
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
746 YEAR MONTHNAME DAY; DAYNAME. Normally you should not customize this,
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
747 but `diary-date-forms' (which see)."
111606
0466e5504621 diary-iso-date-forms fix for bug#7377.
Glenn Morris <rgm@gnu.org>
parents: 109325
diff changeset
748 :version "23.3" ; bug#7377
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
749 :type '(repeat (choice (cons :tag "Backup"
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
750 :value (backup . nil)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
751 (const backup)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
752 (repeat (list :inline t :format "%v"
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
753 (symbol :tag "Keyword")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
754 (choice symbol regexp))))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
755 (repeat (list :inline t :format "%v"
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
756 (symbol :tag "Keyword")
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
757 (choice symbol regexp)))))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
758 :group 'diary)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
759
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
760 (define-obsolete-variable-alias 'american-date-diary-pattern
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
761 'diary-american-date-forms "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
762
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
763 (defcustom diary-american-date-forms
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 '((month "/" day "[^/0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (month "/" day "/" year "[^0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (monthname " *" day "[^,0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (monthname " *" day ", *" year "[^0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 (dayname "\\W"))
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
769 "List of pseudo-patterns describing the American style of dates.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
770 The defaults are: MONTH/DAY; MONTH/DAY/YEAR; MONTHNAME DAY;
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
771 MONTHNAME DAY, YEAR; DAYNAME. Normally you should not customize this,
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
772 but `diary-date-forms' (which see)."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
773 :type '(repeat (choice (cons :tag "Backup"
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
774 :value (backup . nil)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
775 (const backup)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
776 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
777 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
778 (choice symbol regexp))))
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
779 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
780 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
781 (choice symbol regexp)))))
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
782 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
784 (define-obsolete-variable-alias 'european-date-diary-pattern
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
785 'diary-european-date-forms "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
786
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
787 (defcustom diary-european-date-forms
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 '((day "/" month "[^/0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (day "/" month "/" year "[^0-9]")
25154
4c873bb645d8 (european-date-diary-pattern): Fix pattern so it
Richard M. Stallman <rms@gnu.org>
parents: 24891
diff changeset
790 (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (day " *" monthname " *" year "[^0-9]")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (dayname "\\W"))
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
793 "List of pseudo-patterns describing the European style of dates.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
794 The defaults are: DAY/MONTH; DAY/MONTH/YEAR; DAY MONTHNAME;
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
795 DAY MONTHNAME YEAR; DAYNAME. Normally you should not customize this, but
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
796 `diary-date-forms' (which see)."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
797 :type '(repeat (choice (cons :tag "Backup"
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
798 :value (backup . nil)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
799 (const backup)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
800 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
801 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
802 (choice symbol regexp))))
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
803 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
804 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
805 (choice symbol regexp)))))
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
806 :group 'diary)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807
77044
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
808 (defvar diary-font-lock-keywords)
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
809
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
810 (defcustom diary-date-forms (cond ((eq calendar-date-style 'iso)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
811 diary-iso-date-forms)
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
812 ((eq calendar-date-style 'european)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
813 diary-european-date-forms)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
814 (t diary-american-date-forms))
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
815 "List of pseudo-patterns describing the forms of date used in the diary.
44371
aefe45855309 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 44369
diff changeset
816 The patterns on the list must be MUTUALLY EXCLUSIVE and should not match
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 any portion of the diary entry itself, just the date component.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 A pseudo-pattern is a list of regular expressions and the keywords `month',
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 `day', `year', `monthname', and `dayname'. The keyword `monthname' will
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
821 match the name of the month (see `calendar-month-name-array'), capitalized
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
822 or not, or its user-specified abbreviation (see `calendar-month-abbrev-array'),
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
823 followed by a period or not; it will also match `*'. Similarly, `dayname'
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
824 will match the name of the day (see `calendar-day-name-array'), capitalized or
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
825 not, or its user-specified abbreviation (see `calendar-day-abbrev-array'),
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
826 followed by a period or not. The keywords `month', `day', and `year' will
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
827 match those numerical values, preceded by arbitrarily many zeros; they will
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
828 also match `*'.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 The matching of the diary entries with the date forms is done with the
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 standard syntax table from Fundamental mode, but with the `*' changed so
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 that it is a word constituent.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 If, to be mutually exclusive, a pseudo-pattern must match a portion of the
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 diary entry itself, the first element of the pattern MUST be `backup'. This
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
836 directive causes the date recognizer to back up to the beginning of the
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
837 current word of the diary entry, so in no case can the pattern match more than
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
838 a portion of the first word of the diary entry.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
839
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
840 For examples of three common styles, see `diary-american-date-forms',
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
841 `diary-european-date-forms', and `diary-iso-date-forms'."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
842 :type '(repeat (choice (cons :tag "Backup"
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
843 :value (backup . nil)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
844 (const backup)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
845 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
846 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
847 (choice symbol regexp))))
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
848 (repeat (list :inline t :format "%v"
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
849 (symbol :tag "Keyword")
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
850 (choice symbol regexp)))))
102354
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
851 :set-after '(calendar-date-style diary-iso-date-forms
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
852 diary-european-date-forms
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
853 diary-american-date-forms)
77044
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
854 :initialize 'custom-initialize-default
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
855 :set (lambda (symbol value)
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
856 (unless (equal value (eval symbol))
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
857 (custom-set-default symbol value)
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
858 (setq diary-font-lock-keywords (diary-font-lock-keywords))
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
859 ;; Need to redraw not just to get new font-locking, but also
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
860 ;; to pick up any newly recognized entries.
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
861 (and (diary-live-p)
e0a720fbf325 (diary-font-lock-keywords, diary-live-p): Autoload these functions.
Glenn Morris <rgm@gnu.org>
parents: 76752
diff changeset
862 (diary))))
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
863 :group 'diary)
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
864
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
865 ;; Next three are provided to aid in setting calendar-date-display-form.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
866 (defcustom calendar-iso-date-display-form '((format "%s-%.2d-%.2d" year
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
867 (string-to-number month)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
868 (string-to-number day)))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
869 "Pseudo-pattern governing the way a date appears in the ISO style.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
870 Normally you should not customize this, but `calendar-date-display-form'
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
871 \(which see)."
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
872 :type 'sexp
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
873 :version "23.1"
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
874 :group 'calendar)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
875
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
876 (define-obsolete-variable-alias 'european-calendar-display-form
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
877 'calendar-european-date-display-form "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
878
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
879 (defcustom calendar-european-date-display-form
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
880 '((if dayname (concat dayname ", ")) day " " monthname " " year)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
881 "Pseudo-pattern governing the way a date appears in the European style.
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
882 Normally you should not customize this, but `calendar-date-display-form'
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
883 \(which see)."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
884 :type 'sexp
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
885 :group 'calendar)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
887 (define-obsolete-variable-alias 'american-calendar-display-form
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
888 'calendar-american-date-display-form "23.1")
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
889
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
890 (defcustom calendar-american-date-display-form
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
891 '((if dayname (concat dayname ", ")) monthname " " day ", " year)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
892 "Pseudo-pattern governing the way a date appears in the American style.
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
893 Normally you should not customize this, but `calendar-date-display-form'
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
894 \(which see)."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
895 :type 'sexp
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
896 :group 'calendar)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
898 (defcustom calendar-date-display-form
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
899 (cond ((eq calendar-date-style 'iso)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
900 calendar-iso-date-display-form)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
901 ((eq calendar-date-style 'european)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
902 calendar-european-date-display-form)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
903 (t calendar-american-date-display-form))
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
904 "Pseudo-pattern governing the way a calendar date appears.
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
905 Used by the function `calendar-date-string' (which see), a pseudo-pattern
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
906 is a list of expressions that can involve the keywords `month', `day',
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
907 and `year' (all numbers in string form), and `monthname' and `dayname'
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
908 \(both alphabetic strings). For example, a typical American form would be
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 '(month \"/\" day \"/\" (substring year -2))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
912 whereas
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 '((format \"%9s, %9s %2s, %4s\" dayname monthname day year))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
916 would give the usual American style in fixed-length fields. The variables
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
917 `calendar-iso-date-display-form', `calendar-european-date-display-form', and
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
918 `calendar-american-date-display-form' provide some defaults for three common
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
919 styles."
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
920 :type 'sexp
102354
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
921 :set-after '(calendar-date-style calendar-iso-date-display-form
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
922 calendar-european-date-display-form
3206ad427d3c (diary-date-forms, calendar-date-display-form):
Glenn Morris <rgm@gnu.org>
parents: 101938
diff changeset
923 calendar-american-date-display-form)
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
924 :group 'calendar)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
926 (defun calendar-set-date-style (style)
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
927 "Set the style of calendar and diary dates to STYLE (a symbol).
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
928 The valid styles are described in the documentation of `calendar-date-style'."
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
929 (interactive (list (intern
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
930 (completing-read "Date style: "
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
931 '("american" "european" "iso") nil t
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
932 nil nil "american"))))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
933 (or (memq style '(american european iso))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
934 (setq style 'american))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
935 (setq calendar-date-style style
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
936 calendar-date-display-form
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
937 (symbol-value (intern-soft
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
938 (format "calendar-%s-date-display-form" style)))
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
939 diary-date-forms
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
940 (symbol-value (intern-soft (format "diary-%s-date-forms" style))))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
941 (calendar-update-mode-line))
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
942
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (defun european-calendar ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 "Set the interpretation and display of dates to the European style."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 (interactive)
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
946 (calendar-set-date-style 'european))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
947
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
948 (make-obsolete 'european-calendar 'calendar-set-date-style "23.1")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (defun american-calendar ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 "Set the interpretation and display of dates to the American style."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (interactive)
93374
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
953 (calendar-set-date-style 'american))
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
954
4e21455e4410 (diary-file, american-date-diary-pattern)
Glenn Morris <rgm@gnu.org>
parents: 93330
diff changeset
955 (make-obsolete 'american-calendar 'calendar-set-date-style "23.1")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
957 (define-obsolete-variable-alias 'holidays-in-diary-buffer
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
958 'diary-show-holidays-flag "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
959
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
960 (defcustom diary-show-holidays-flag t
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
961 "Non-nil means include holidays in the diary display.
6737
a3ef1108b7ff Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6672
diff changeset
962 The holidays appear in the mode line of the diary buffer, or in the
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
963 fancy diary buffer next to the date. This slows down the diary functions
17625
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
964 somewhat; setting it to nil makes the diary display faster."
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
965 :type 'boolean
321afd5b0bc5 Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 16099
diff changeset
966 :group 'holidays)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
968 (defcustom calendar-debug-sexp nil
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
969 "Turn debugging on when evaluating a sexp in the diary or holiday list."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
970 :type 'boolean
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
971 :group 'calendar)
3448
b7d345eaae47 (calendar-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2997
diff changeset
972
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
973 (define-obsolete-variable-alias 'all-hebrew-calendar-holidays
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
974 'calendar-hebrew-all-holidays-flag "23.1")
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
975
93630
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
976 (defcustom calendar-hebrew-all-holidays-flag nil
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
977 "If nil, show only major holidays from the Hebrew calendar.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
978 This means only those Jewish holidays that appear on secular calendars.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
979 Otherwise, show all the holidays that would appear in a complete Hebrew
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
980 calendar."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
981 :type 'boolean
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
982 :group 'holidays)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
983
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
984 (define-obsolete-variable-alias 'all-christian-calendar-holidays
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
985 'calendar-christian-all-holidays-flag "23.1")
93630
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
986
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
987 (defcustom calendar-christian-all-holidays-flag nil
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
988 "If nil, show only major holidays from the Christian calendar.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
989 This means only those Christian holidays that appear on secular calendars.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
990 Otherwise, show all the holidays that would appear in a complete Christian
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
991 calendar."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
992 :type 'boolean
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
993 :group 'holidays)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
994
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
995 (define-obsolete-variable-alias 'all-islamic-calendar-holidays
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
996 'calendar-islamic-all-holidays-flag "23.1")
93630
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
997
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
998 (defcustom calendar-islamic-all-holidays-flag nil
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
999 "If nil, show only major holidays from the Islamic calendar.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1000 This means only those Islamic holidays that appear on secular calendars.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1001 Otherwise, show all the holidays that would appear in a complete Islamic
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1002 calendar."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1003 :type 'boolean
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1004 :group 'holidays)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1005
94019
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
1006 (define-obsolete-variable-alias 'all-bahai-calendar-holidays
28144b96054e (calendar-faces): New custom group.
Glenn Morris <rgm@gnu.org>
parents: 93995
diff changeset
1007 'calendar-bahai-all-holidays-flag "23.1")
93630
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
1008
8f16c93afd23 (calendar-hebrew-all-holidays-flag):
Glenn Morris <rgm@gnu.org>
parents: 93585
diff changeset
1009 (defcustom calendar-bahai-all-holidays-flag nil
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1010 "If nil, show only major holidays from the Baha'i calendar.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1011 These are the days on which work and school must be suspended.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1012 Otherwise, show all the holidays that would appear in a complete Baha'i
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1013 calendar."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1014 :type 'boolean
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1015 :group 'holidays)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1016
94280
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1017 (defcustom calendar-chinese-all-holidays-flag nil
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1018 "If nil, show only the major holidays from the Chinese calendar."
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1019 :version "23.1"
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1020 :type 'boolean
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1021 :group 'holidays)
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
1022
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1023 ;;; End of user options.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1024
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1025 (calendar-recompute-layout-variables)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1026
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1027 (defconst calendar-first-date-row 3
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1028 "First row in the calendar with actual dates.")
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1029
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1030 (defconst calendar-buffer "*Calendar*"
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1031 "Name of the buffer used for the calendar.")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (defconst holiday-buffer "*Holidays*"
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 "Name of the buffer used for the displaying the holidays.")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1036 (defconst diary-fancy-buffer "*Fancy Diary Entries*"
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 "Name of the buffer used for the optional fancy display of the diary.")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1039 (define-obsolete-variable-alias 'fancy-diary-buffer 'diary-fancy-buffer "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1040
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1041 (defconst calendar-other-calendars-buffer "*Other Calendars*"
22261
329f546a73ec Add function to show equivalent date on all available calendars (in parallel
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22028
diff changeset
1042 "Name of the buffer used for the display of date on other calendars.")
329f546a73ec Add function to show equivalent date on all available calendars (in parallel
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22028
diff changeset
1043
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1044 (defconst lunar-phases-buffer "*Phases of Moon*"
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1045 "Name of the buffer used for the lunar phases.")
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1046
98372
dfb0ac991c30 Peter Dyballa <Peter_Dyballa at Freenet.DE>
Glenn Morris <rgm@gnu.org>
parents: 97422
diff changeset
1047 (defconst solar-sunrises-buffer "*Sunrise/Sunset Times*"
96346
775f65dc9776 (solar-sunrises-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 96315
diff changeset
1048 "Name of buffer used for sunrise/sunset times.")
775f65dc9776 (solar-sunrises-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 96315
diff changeset
1049
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1050 (defconst calendar-hebrew-yahrzeit-buffer "*Yahrzeits*"
92823
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1051 "Name of the buffer used by `list-yahrzeit-dates'.")
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1052
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1053 (defmacro calendar-increment-month (mon yr n &optional nmonths)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1054 "Increment the variables MON and YR by N months.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1055 Forward if N is positive or backward if N is negative.
93449
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
1056 A negative YR is interpreted as BC; -1 being 1 BC, and so on.
93464
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1057 Optional NMONTHS is the number of months per year (default 12)."
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1058 ;; Can view this as a form of base-nmonths arithmetic, in which "a
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1059 ;; year" = "ten", and we never bother to use hundreds.
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1060 `(let ((nmonths (or ,nmonths 12))
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1061 macro-y)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1062 (if (< ,yr 0) (setq ,yr (1+ ,yr))) ; -1 BC -> 0 AD, etc
93464
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1063 (setq macro-y (+ (* ,yr nmonths) ,mon -1 ,n)
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1064 ,mon (1+ (mod macro-y nmonths))
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1065 ,yr (/ macro-y nmonths))
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1066 ;; Alternative:
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1067 ;;; (setq macro-y (+ (* ,yr nmonths) ,mon -1 ,n)
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1068 ;;; ,yr (/ macro-y nmonths)
4d4a9542d49c (increment-calendar-month): Optionally handle systems without 12
Glenn Morris <rgm@gnu.org>
parents: 93449
diff changeset
1069 ;;; ,mon (- macro-y (* ,yr nmonths)))
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1070 (and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr)))
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1071 (if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1073 (define-obsolete-function-alias 'increment-calendar-month
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1074 'calendar-increment-month "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1075
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1076 (defvar displayed-month)
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1077 (defvar displayed-year)
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1078
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1079 (defun calendar-increment-month-cons (n &optional mon yr)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1080 "Return the Nth month after MON/YR.
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1081 The return value is a pair (MONTH . YEAR).
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1082 MON defaults to `displayed-month'. YR defaults to `displayed-year'."
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1083 (unless mon (setq mon displayed-month))
68655
3d624f4184ec (calendar-increment-month): Typo in last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68366
diff changeset
1084 (unless yr (setq yr displayed-year))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1085 (calendar-increment-month mon yr n)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1086 (cons mon yr))
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1087
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (defmacro calendar-for-loop (var from init to final do &rest body)
82086
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1089 "Execute a for loop.
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1090 Evaluate BODY with VAR bound to successive integers from INIT to FINAL,
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1091 inclusive. The standard macro `dotimes' is preferable in most cases."
92988
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
1092 (declare (debug (symbolp "from" form "to" form "do" body))
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
1093 (indent defun))
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1094 `(let ((,var (1- ,init)))
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1095 (while (>= ,final (setq ,var (1+ ,var)))
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1096 ,@body)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1098 (make-obsolete 'calendar-for-loop "use `dotimes' or `while' instead." "23.1")
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1099
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 (defmacro calendar-sum (index initial condition expression)
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1101 "For INDEX = INITIAL, +1, ... (as long as CONDITION holds), sum EXPRESSION."
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1102 (declare (debug (symbolp form form form)))
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1103 `(let ((,index ,initial)
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1104 (sum 0))
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1105 (while ,condition
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1106 (setq sum (+ sum ,expression)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1107 ,index (1+ ,index)))
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1108 sum))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109
93449
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
1110 ;; FIXME bind q to bury-buffer?
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1111 (defmacro calendar-in-read-only-buffer (buffer &rest body)
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1112 "Switch to BUFFER and executes the forms in BODY.
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1113 First creates or erases BUFFER as needed. Leaves BUFFER read-only,
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1114 with disabled undo. Leaves point at point-min, displays BUFFER."
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1115 (declare (indent 1) (debug t))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1116 `(progn
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1117 (set-buffer (get-buffer-create ,buffer))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1118 (setq buffer-read-only nil
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1119 buffer-undo-list t)
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1120 (erase-buffer)
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1121 ,@body
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1122 (goto-char (point-min))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1123 (set-buffer-modified-p nil)
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1124 (setq buffer-read-only t)
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1125 (display-buffer ,buffer)))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1126
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1127 ;; The following are in-line for speed; they can be called thousands of times
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1128 ;; when looking up holidays or processing the diary. Here, for example, are
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1129 ;; the numbers of calls to calendar/diary/holiday functions in preparing the
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1130 ;; fancy diary display, for a moderately complex diary file, with functions
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1131 ;; used instead of macros. There were a total of 10000 such calls:
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1132 ;;
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1133 ;; 1934 calendar-extract-month
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1134 ;; 1852 calendar-extract-year
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1135 ;; 1819 calendar-extract-day
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1136 ;; 845 calendar-leap-year-p
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1137 ;; 837 calendar-day-number
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1138 ;; 775 calendar-absolute-from-gregorian
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1139 ;; 346 calendar-last-day-of-month
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1140 ;; 286 calendar-hebrew-last-day-of-month
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1141 ;; 188 calendar-hebrew-leap-year-p
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1142 ;; 180 calendar-hebrew-elapsed-days
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1143 ;; 163 calendar-hebrew-last-month-of-year
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1144 ;; 66 calendar-date-compare
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1145 ;; 65 calendar-hebrew-days-in-year
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1146 ;; 60 calendar-julian-to-absolute
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1147 ;; 50 calendar-hebrew-to-absolute
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1148 ;; 43 calendar-date-equal
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1149 ;; 38 calendar-gregorian-from-absolute
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1150 ;; .
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1151 ;;
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1152 ;; The use of these seven macros eliminates the overhead of 92% of the function
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1153 ;; calls; it's faster this way.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1154
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1155 (defsubst calendar-extract-month (date)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 "Extract the month part of DATE which has the form (month day year)."
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1157 (car date))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1159 (define-obsolete-function-alias 'extract-calendar-month
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1160 'calendar-extract-month "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1161
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1162 ;; Note gives wrong answer for result of (calendar-read-date 'noday),
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1163 ;; but that is only used by `calendar-other-month'.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1164 (defsubst calendar-extract-day (date)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 "Extract the day part of DATE which has the form (month day year)."
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1166 (cadr date))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1168 (define-obsolete-function-alias 'extract-calendar-day
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1169 'calendar-extract-day "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1170
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1171 (defsubst calendar-extract-year (date)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 "Extract the year part of DATE which has the form (month day year)."
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1173 (nth 2 date))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1175 (define-obsolete-function-alias 'extract-calendar-year
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1176 'calendar-extract-year "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1177
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1178 (defsubst calendar-leap-year-p (year)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1179 "Return t if YEAR is a Gregorian leap year.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1180 A negative year is interpreted as BC; -1 being 1 BC, and so on."
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1181 ;; 1 BC = 0 AD, 2 BC acts like 1 AD, etc.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1182 (if (< year 0) (setq year (1- (abs year))))
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1183 (and (zerop (% year 4))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1184 (or (not (zerop (% year 100)))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1185 (zerop (% year 400)))))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1186
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1187 ;; The foregoing is a bit faster, but not as clear as the following:
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1188 ;;
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1189 ;;(defsubst calendar-leap-year-p (year)
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1190 ;; "Return t if YEAR is a Gregorian leap year."
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1191 ;; (or
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1192 ;; (and (zerop (% year 4))
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1193 ;; (not (zerop (% year 100))))
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1194 ;; (zerop (% year 400)))
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1195
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1196 (defsubst calendar-last-day-of-month (month year)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1197 "The last day in MONTH during YEAR."
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1198 (if (and (= month 2) (calendar-leap-year-p year))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1199 29
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1200 (aref [31 28 31 30 31 30 31 31 30 31 30 31] (1- month))))
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1201
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1202 ;; An explanation of the calculation can be found in PascAlgorithms by
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1203 ;; Edward and Ruth Reingold, Scott-Foresman/Little, Brown, 1988.
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1204
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1205 (defsubst calendar-day-number (date)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1206 "Return the day number within the year of the date DATE.
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1207 For example, (calendar-day-number '(1 1 1987)) returns the value 1,
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1208 while (calendar-day-number '(12 31 1980)) returns 366."
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1209 (let* ((month (calendar-extract-month date))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1210 (day (calendar-extract-day date))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1211 (year (calendar-extract-year date))
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1212 (day-of-year (+ day (* 31 (1- month)))))
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1213 (when (> month 2)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1214 (setq day-of-year (- day-of-year (/ (+ 23 (* 4 month)) 10)))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1215 (if (calendar-leap-year-p year)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1216 (setq day-of-year (1+ day-of-year))))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1217 day-of-year))
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1218
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1219 (defsubst calendar-absolute-from-gregorian (date)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1220 "The number of days elapsed between the Gregorian date 12/31/1 BC and DATE.
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1221 The Gregorian date Sunday, December 31, 1 BC is imaginary.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1222 DATE is a list of the form (month day year). A negative year is
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1223 interpreted as BC; -1 being 1 BC, and so on. Dates before 12/31/1 BC
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1224 return negative results."
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1225 (let ((year (calendar-extract-year date))
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1226 offset-years)
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1227 (cond ((zerop year)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1228 (error "There was no year zero"))
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1229 ((> year 0)
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1230 (setq offset-years (1- year))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1231 (+ (calendar-day-number date) ; days this year
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1232 (* 365 offset-years) ; + days in prior years
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1233 (/ offset-years 4) ; + Julian leap years
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1234 (- (/ offset-years 100)) ; - century years
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1235 (/ offset-years 400))) ; + Gregorian leap years
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1236 (t
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1237 ;; Years between date and 1 BC, excluding 1 BC (1 for 2 BC, etc).
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1238 (setq offset-years (abs (1+ year)))
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1239 (- (calendar-day-number date)
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1240 (* 365 offset-years)
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1241 (/ offset-years 4)
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1242 (- (/ offset-years 100))
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1243 (/ offset-years 400)
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1244 (calendar-day-number '(12 31 -1))))))) ; days in year 1 BC
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 675
diff changeset
1245
675
85fd29f25c75 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 628
diff changeset
1246 ;;;###autoload
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 (defun calendar (&optional arg)
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1248 "Display a three-month Gregorian calendar.
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1249 The three months appear side by side, with the current month in
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1250 the middle surrounded by the previous and next months. The
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1251 cursor is put on today's date. If optional prefix argument ARG
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1252 is non-nil, prompts for the central month and year.
13042
03ef030c9e75 Many functions moved to other files, some rewritten. See ChangeLog entry.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 12061
diff changeset
1253
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1254 Once in the calendar window, future or past months can be moved
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1255 into view. Arbitrary months can be displayed, or the calendar
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1256 can be scrolled forward or backward. The cursor can be moved
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1257 forward or backward by one day, one week, one month, or one year.
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1258 All of these commands take prefix arguments which, when negative,
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1259 cause movement in the opposite direction. For convenience, the
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1260 digit keys and the minus sign are automatically prefixes. Use
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1261 \\[describe-mode] for details of the key bindings in the calendar
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1262 window.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1264 Displays the calendar in a separate window, or optionally in a
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1265 separate frame, depending on the value of `calendar-setup'.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1267 If `calendar-view-diary-initially-flag' is non-nil, also displays the
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1268 diary entries for the current date (or however many days
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1269 `diary-number-of-entries' specifies). This variable can be
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1270 overridden by `calendar-setup'. As well as being displayed,
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1271 diary entries can also be marked on the calendar (see
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1272 `calendar-mark-diary-entries-flag').
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1274 Runs the following hooks:
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1276 `calendar-load-hook' - after loading calendar.el
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1277 `calendar-today-visible-hook', `calendar-today-invisible-hook' - after
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1278 generating a calendar, if today's date is visible or not, respectively
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1279 `calendar-initial-window-hook' - after first creating a calendar
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1281 This function is suitable for execution in a .emacs file."
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1282 (interactive "P")
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1283 ;; Avoid loading cal-x unless it will be used.
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1284 (if (and (memq calendar-setup '(one-frame two-frames calendar-only))
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1285 (display-multi-frame-p))
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1286 (calendar-frame-setup calendar-setup arg)
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1287 (calendar-basic-setup arg)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1289 (defun calendar-basic-setup (&optional arg nodisplay)
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1290 "Create a three-month calendar.
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1291 If optional prefix argument ARG is non-nil, prompts for the month
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1292 and year, else uses the current date. If NODISPLAY is non-nil, don't
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1293 display the generated calendar."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (interactive "P")
105499
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1295 (let ((buff (current-buffer)))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1296 (set-buffer (get-buffer-create calendar-buffer))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1297 (calendar-mode)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1298 (let* ((pop-up-windows t)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1299 ;; Not really needed now, but means we use exactly the same
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1300 ;; behavior as before in the non-wide case (see below).
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1301 (split-height-threshold 1000)
105539
4886a9e0be01 (calendar-split-width-threshold): New option.
Glenn Morris <rgm@gnu.org>
parents: 105499
diff changeset
1302 (split-width-threshold calendar-split-width-threshold)
105499
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1303 (date (if arg (calendar-read-date t)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1304 (calendar-current-date)))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1305 (month (calendar-extract-month date))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1306 (year (calendar-extract-year date)))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1307 (calendar-increment-month month year (- calendar-offset))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1308 ;; Display the buffer before calling calendar-generate-window so that it
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1309 ;; can get a chance to adjust the window sizes to the frame size.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1310 (unless nodisplay
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1311 ;; We want a window configuration that looks something like
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1312 ;; X X | Y
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1313 ;; - -----
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1314 ;; C Z | C
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1315 ;; where C is the calendar, and the LHS is the traditional,
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1316 ;; non-wide frame, and the RHS is the wide frame case.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1317 ;; We should end up in the same state regardless of whether the
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1318 ;; windows were initially split or not.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1319 ;; Previously, we only thought about the non-wide case.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1320 ;; We could just set split-height-threshold to 1000, relying on
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1321 ;; the fact that the window splitting treated a single window as
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1322 ;; a special case and would always split it (vertically). The
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1323 ;; same thing does not work in the wide-frame case, so now we do
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1324 ;; the splitting by hand.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1325 ;; See discussion in bug#1806.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1326 ;; Actually, this still does not do quite the right thing in the
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1327 ;; wide frame case if started from a configuration like the LHS.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1328 ;; Eg if you start with a non-wide frame, call calendar, then
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1329 ;; make the frame wider. This one is problematic because you
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1330 ;; might need to split a totally unrelated window. Oh well, it
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1331 ;; seems unlikely, and perhaps respecting the original layout is
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1332 ;; the right thing in that case.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1333 ;;
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1334 ;; Is this a wide frame? If so, split it horizontally.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1335 (if (window-splittable-p t) (split-window-horizontally))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1336 (pop-to-buffer calendar-buffer)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1337 ;; Has the window already been split vertically?
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1338 (when (and (not (window-dedicated-p))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1339 (window-full-height-p))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1340 (let ((win (split-window-vertically)))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1341 ;; In the upper window, show whatever was visible before.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1342 ;; This looks better than using other-buffer.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1343 (switch-to-buffer buff)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1344 ;; Switch to the lower window with the calendar buffer.
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1345 (select-window win))))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1346 (calendar-generate-window month year)
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1347 (if (and calendar-view-diary-initially-flag
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1348 (calendar-date-is-visible-p date))
bc225649d1e5 (calendar-basic-setup): In the wide frame case, show the original
Glenn Morris <rgm@gnu.org>
parents: 105478
diff changeset
1349 (diary-view-entries))))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1350 (if calendar-view-holidays-initially-flag
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1351 (let* ((diary-buffer (get-file-buffer diary-file))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1352 (diary-window (if diary-buffer (get-buffer-window diary-buffer)))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1353 (split-height-threshold (if diary-window 2 1000)))
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
1354 ;; FIXME display buffer?
84554
5bd5d06e4cf2 Rename all list-calendar-holidays callers to calendar-list-holidays,
Glenn Morris <rgm@gnu.org>
parents: 82365
diff changeset
1355 (calendar-list-holidays)))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1356 (run-hooks 'calendar-initial-window-hook))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1358 (defun calendar-generate-window (&optional mon yr)
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1359 "Generate the calendar window for the current date.
93187
c68684b0a2d1 (calendar-remove-frame-by-deleting): Default to t. Add to 'calendar group.
Glenn Morris <rgm@gnu.org>
parents: 93091
diff changeset
1360 Optional integers MON and YR are used instead of today's date."
82203
3d0d3af343ac (calendar-mode): Make sure displayed-(month|year) are set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82151
diff changeset
1361 (let* ((inhibit-read-only t)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (today (calendar-current-date))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1363 (month (calendar-extract-month today))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1364 (day (calendar-extract-day today))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1365 (year (calendar-extract-year today))
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1366 (today-visible (or (not mon)
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1367 (<= (abs (calendar-interval mon yr month year)) 1)))
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1368 (day-in-week (calendar-day-of-week today))
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1369 (in-calendar-window (eq (window-buffer (selected-window))
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1370 (get-buffer calendar-buffer))))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1371 (calendar-generate (or mon month) (or yr year))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1372 (calendar-update-mode-line)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 (calendar-cursor-to-visible-date
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (if today-visible today (list displayed-month 1 displayed-year)))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (set-buffer-modified-p nil)
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1376 ;; Don't do any window-related stuff if we weren't called from a
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1377 ;; window displaying the calendar.
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1378 (when in-calendar-window
105398
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1379 ;; The second test used to be window-full-width-p.
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1380 ;; Not sure what it was/is for, except perhaps some way of saying
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1381 ;; "try not to mess with existing configurations".
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1382 ;; If did the wrong thing on wide frames, where we have done a
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1383 ;; horizontal split in calendar-basic-setup.
3fec4318d760 (calendar-basic-setup): Handle the case where the frame is wide.
Glenn Morris <rgm@gnu.org>
parents: 105141
diff changeset
1384 (if (or (one-window-p t) (not (window-safely-shrinkable-p)))
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1385 ;; Don't mess with the window size, but ensure that the first
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1386 ;; line is fully visible.
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1387 (set-window-vscroll nil 0)
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1388 ;; Adjust the window to exactly fit the displayed calendar.
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1389 (fit-window-to-buffer nil nil calendar-minimum-window-height))
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1390 (sit-for 0))
93578
14c23c86b7aa (hebrew-holidays-1, hebrew-holidays-2, hebrew-holidays-3, hebrew-holidays-4):
Glenn Morris <rgm@gnu.org>
parents: 93528
diff changeset
1391 (and (bound-and-true-p font-lock-mode)
14c23c86b7aa (hebrew-holidays-1, hebrew-holidays-2, hebrew-holidays-3, hebrew-holidays-4):
Glenn Morris <rgm@gnu.org>
parents: 93528
diff changeset
1392 (font-lock-fontify-buffer))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1393 (and calendar-mark-holidays-flag
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
1394 ;;; (calendar-date-is-valid-p today) ; useful for BC dates
92844
f5f51a11e3da Remove explicit autoloads now in cal-loaddefs.
Glenn Morris <rgm@gnu.org>
parents: 92823
diff changeset
1395 (calendar-mark-holidays)
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1396 (and in-calendar-window (sit-for 0)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (unwind-protect
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1398 (if calendar-mark-diary-entries-flag (diary-mark-entries))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (if today-visible
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1400 (run-hooks 'calendar-today-visible-hook)
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1401 (run-hooks 'calendar-today-invisible-hook)))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1403 (defun calendar-generate (month year)
54128
520476f3222d *** empty log message ***
Glenn Morris <rgm@gnu.org>
parents: 54071
diff changeset
1404 "Generate a three-month Gregorian calendar centered around MONTH, YEAR."
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1405 ;; A negative YEAR is interpreted as BC; -1 being 1 BC, and so on.
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1406 ;; Note that while calendars for years BC could be displayed as it
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1407 ;; stands, almost all other calendar functions (eg holidays) would
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1408 ;; at best have unpredictable results for such dates.
54128
520476f3222d *** empty log message ***
Glenn Morris <rgm@gnu.org>
parents: 54071
diff changeset
1409 (if (< (+ month (* 12 (1- year))) 2)
60292
b8747b7d8e2a From Matt Hodges <MPHodges@member.fsf.org>:
Glenn Morris <rgm@gnu.org>
parents: 59044
diff changeset
1410 (error "Months before January, 1 AD cannot be displayed"))
54128
520476f3222d *** empty log message ***
Glenn Morris <rgm@gnu.org>
parents: 54071
diff changeset
1411 (setq displayed-month month
520476f3222d *** empty log message ***
Glenn Morris <rgm@gnu.org>
parents: 54071
diff changeset
1412 displayed-year year)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (erase-buffer)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1414 (calendar-increment-month month year -1)
82086
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1415 (dotimes (i 3)
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1416 (calendar-generate-month month year
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1417 (+ calendar-left-margin
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1418 (* calendar-month-width i)))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1419 (calendar-increment-month month year 1)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1421 (defun calendar-move-to-column (indent)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1422 "Like `move-to-column', but indents if the line is too short."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1423 (if (< (move-to-column indent) indent)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1424 (indent-to indent)))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1425
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1426 (defun calendar-ensure-newline ()
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1427 "Move to the next line, adding a newline if necessary."
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1428 (or (zerop (forward-line 1))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1429 (insert "\n")))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1430
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1431 (defun calendar-insert-at-column (indent string truncate)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1432 "Move to column INDENT, adding spaces as needed.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1433 Inserts STRING so that it ends at INDENT. STRING is either a
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1434 literal string, or a sexp to evaluate to return such. Truncates
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1435 STRING to length TRUNCATE, ensure a trailing space."
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1436 (if (not (ignore-errors (stringp (setq string (eval string)))))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1437 (calendar-move-to-column indent)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1438 (if (> (length string) truncate)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1439 (setq string (substring string 0 truncate)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1440 (or (string-match " $" string)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1441 (if (= (length string) truncate)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1442 (aset string (1- truncate) ?\s)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1443 (setq string (concat string " "))))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1444 (calendar-move-to-column (- indent (length string)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1445 (insert string)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1446
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1447 (defun calendar-generate-month (month year indent)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 "Produce a calendar for MONTH, YEAR on the Gregorian calendar.
43010
f3f6fc83e6d1 (generate-calendar-month): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 42924
diff changeset
1449 The calendar is inserted at the top of the buffer in which point is currently
f3f6fc83e6d1 (generate-calendar-month): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 42924
diff changeset
1450 located, but indented INDENT spaces. The indentation is done from the first
f3f6fc83e6d1 (generate-calendar-month): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 42924
diff changeset
1451 character on the line and does not disturb the first INDENT characters on the
54128
520476f3222d *** empty log message ***
Glenn Morris <rgm@gnu.org>
parents: 54071
diff changeset
1452 line."
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1453 (let ((blank-days ; at start of month
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1454 (mod
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1455 (- (calendar-day-of-week (list month 1 year))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1456 calendar-week-start-day)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1457 7))
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1458 (last (calendar-last-day-of-month month year))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1459 (trunc (min calendar-intermonth-spacing
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1460 (1- calendar-left-margin)))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1461 (day 1)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1462 string)
4861
924486090b27 (calendar-week-start-day): New var (autoloaded) to
Richard M. Stallman <rms@gnu.org>
parents: 4658
diff changeset
1463 (goto-char (point-min))
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1464 (calendar-move-to-column indent)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1465 (insert
4861
924486090b27 (calendar-week-start-day): New var (autoloaded) to
Richard M. Stallman <rms@gnu.org>
parents: 4658
diff changeset
1466 (calendar-string-spread
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1467 (list (format "%s %d" (calendar-month-name month) year))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1468 ?\s calendar-month-digit-width))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1469 (calendar-ensure-newline)
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1470 (calendar-insert-at-column indent calendar-intermonth-header trunc)
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
1471 ;; Use the first two characters of each day to head the columns.
82086
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1472 (dotimes (i 7)
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1473 (insert
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1474 (progn
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1475 (setq string
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1476 (calendar-day-name (mod (+ calendar-week-start-day i) 7) nil t))
82086
1ee19eca3bfc (generate-calendar, (generate-calendar-month): Use dotimes rather than
Glenn Morris <rgm@gnu.org>
parents: 78145
diff changeset
1477 (if enable-multibyte-characters
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1478 (truncate-string-to-width string calendar-day-header-width)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1479 (substring string 0 calendar-day-header-width)))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1480 (make-string (- calendar-column-width calendar-day-header-width) ?\s)))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1481 (calendar-ensure-newline)
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1482 (calendar-insert-at-column indent calendar-intermonth-text trunc)
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1483 ;; Add blank days before the first of the month.
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1484 (insert (make-string (* blank-days calendar-column-width) ?\s))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1485 ;; Put in the days of the month.
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1486 (dotimes (i last)
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1487 (setq day (1+ i))
96364
c5e50585b044 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 96350
diff changeset
1488 ;; TODO should numbers be left-justified, centered...?
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1489 (insert (format (format "%%%dd%%s" calendar-day-digit-width) day
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1490 (make-string
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1491 (- calendar-column-width calendar-day-digit-width) ?\s)))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1492 ;; 'date property prevents intermonth text confusing re-searches.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1493 ;; (Tried intangible, it did not really work.)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1494 (set-text-properties
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1495 (- (point) (1+ calendar-day-digit-width)) (1- (point))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1496 `(mouse-face highlight help-echo ,(eval calendar-date-echo-text)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1497 date t))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1498 (when (and (zerop (mod (+ day blank-days) 7))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1499 (/= day last))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1500 (calendar-ensure-newline)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1501 (setq day (1+ day)) ; first day of next week
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1502 (calendar-insert-at-column indent calendar-intermonth-text trunc)))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1504 (defun calendar-redraw ()
60322
ae2850fc74dc (redraw-calendar): Work from any buffer, not just the calendar.
Glenn Morris <rgm@gnu.org>
parents: 60292
diff changeset
1505 "Redraw the calendar display, if `calendar-buffer' is live."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (interactive)
60322
ae2850fc74dc (redraw-calendar): Work from any buffer, not just the calendar.
Glenn Morris <rgm@gnu.org>
parents: 60292
diff changeset
1507 (if (get-buffer calendar-buffer)
60568
e2cd8a11381a (calendar-redrawing): New internal variable.
Glenn Morris <rgm@gnu.org>
parents: 60528
diff changeset
1508 (with-current-buffer calendar-buffer
60649
3a754b1548d3 (calendar-redrawing): Delete.
Glenn Morris <rgm@gnu.org>
parents: 60568
diff changeset
1509 (let ((cursor-date (calendar-cursor-to-nearest-date)))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1510 (calendar-generate-window displayed-month displayed-year)
60568
e2cd8a11381a (calendar-redrawing): New internal variable.
Glenn Morris <rgm@gnu.org>
parents: 60528
diff changeset
1511 (calendar-cursor-to-visible-date cursor-date)))))
60528
952103a61e35 (redraw-calendar): Preserve point. Reported by Matt Hodges
Glenn Morris <rgm@gnu.org>
parents: 60322
diff changeset
1512
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1513 (defvar calendar-mode-map
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1514 (let ((map (make-keymap)))
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1515 (suppress-keymap map)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1516 (dolist (c '(narrow-to-region mark-word mark-sexp mark-paragraph
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1517 mark-defun mark-whole-buffer mark-page
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1518 downcase-region upcase-region kill-region
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1519 copy-region-as-kill capitalize-region write-region))
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1520 (define-key map (vector 'remap c) 'calendar-not-implemented))
82151
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1521 (define-key map "<" 'calendar-scroll-right)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1522 (define-key map "\C-x<" 'calendar-scroll-right)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1523 (define-key map [prior] 'calendar-scroll-right-three-months)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1524 (define-key map "\ev" 'calendar-scroll-right-three-months)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1525 (define-key map ">" 'calendar-scroll-left)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1526 (define-key map "\C-x>" 'calendar-scroll-left)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1527 (define-key map [next] 'calendar-scroll-left-three-months)
7b6bc42d5f2c (calendar-mode-map): Use new calendar-scroll-* names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1528 (define-key map "\C-v" 'calendar-scroll-left-three-months)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1529 (define-key map "\C-b" 'calendar-backward-day)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1530 (define-key map "\C-p" 'calendar-backward-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1531 (define-key map "\e{" 'calendar-backward-month)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1532 (define-key map "\C-x[" 'calendar-backward-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1533 (define-key map "\C-f" 'calendar-forward-day)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1534 (define-key map "\C-n" 'calendar-forward-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1535 (define-key map [left] 'calendar-backward-day)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1536 (define-key map [up] 'calendar-backward-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1537 (define-key map [right] 'calendar-forward-day)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1538 (define-key map [down] 'calendar-forward-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1539 (define-key map "\e}" 'calendar-forward-month)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1540 (define-key map "\C-x]" 'calendar-forward-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1541 (define-key map "\C-a" 'calendar-beginning-of-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1542 (define-key map "\C-e" 'calendar-end-of-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1543 (define-key map "\ea" 'calendar-beginning-of-month)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1544 (define-key map "\ee" 'calendar-end-of-month)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1545 (define-key map "\e<" 'calendar-beginning-of-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1546 (define-key map "\e>" 'calendar-end-of-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1547 (define-key map "\C-@" 'calendar-set-mark)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1548 ;; Many people are used to typing C-SPC and getting C-@.
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1549 (define-key map [?\C-\s] 'calendar-set-mark)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1550 (define-key map "\C-x\C-x" 'calendar-exchange-point-and-mark)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1551 (define-key map "\e=" 'calendar-count-days-region)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1552 (define-key map "gd" 'calendar-goto-date)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1553 (define-key map "gD" 'calendar-goto-day-of-year)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1554 (define-key map "gj" 'calendar-julian-goto-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1555 (define-key map "ga" 'calendar-astro-goto-day-number)
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1556 (define-key map "gh" 'calendar-hebrew-goto-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1557 (define-key map "gi" 'calendar-islamic-goto-date)
84593
6a5b534dceee Following cal-bahai renaming, update all
Glenn Morris <rgm@gnu.org>
parents: 84554
diff changeset
1558 (define-key map "gb" 'calendar-bahai-goto-date)
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1559 (define-key map "gC" 'calendar-chinese-goto-date)
93719
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1560 (define-key map "gk" 'calendar-coptic-goto-date)
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1561 (define-key map "ge" 'calendar-ethiopic-goto-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1562 (define-key map "gp" 'calendar-persian-goto-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1563 (define-key map "gc" 'calendar-iso-goto-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1564 (define-key map "gw" 'calendar-iso-goto-week)
93719
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1565 (define-key map "gf" 'calendar-french-goto-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1566 (define-key map "gml" 'calendar-mayan-goto-long-count-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1567 (define-key map "gmpc" 'calendar-mayan-previous-round-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1568 (define-key map "gmnc" 'calendar-mayan-next-round-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1569 (define-key map "gmph" 'calendar-mayan-previous-haab-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1570 (define-key map "gmnh" 'calendar-mayan-next-haab-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1571 (define-key map "gmpt" 'calendar-mayan-previous-tzolkin-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1572 (define-key map "gmnt" 'calendar-mayan-next-tzolkin-date)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1573 (define-key map "Aa" 'appt-add)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1574 (define-key map "Ad" 'appt-delete)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1575 (define-key map "S" 'calendar-sunrise-sunset)
96350
96074e8d2af6 (calendar-mode-map): Update for name change.
Glenn Morris <rgm@gnu.org>
parents: 96346
diff changeset
1576 (define-key map "M" 'calendar-lunar-phases)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1577 (define-key map " " 'scroll-other-window)
93815
f25074f90473 (calendar-mode-map): Replace use of kbd.
Glenn Morris <rgm@gnu.org>
parents: 93808
diff changeset
1578 (define-key map "\d" 'scroll-other-window-down)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1579 (define-key map "\C-c\C-l" 'calendar-redraw)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1580 (define-key map "." 'calendar-goto-today)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1581 (define-key map "o" 'calendar-other-month)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1582 (define-key map "q" 'calendar-exit)
84554
5bd5d06e4cf2 Rename all list-calendar-holidays callers to calendar-list-holidays,
Glenn Morris <rgm@gnu.org>
parents: 82365
diff changeset
1583 (define-key map "a" 'calendar-list-holidays)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1584 (define-key map "h" 'calendar-cursor-holidays)
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
1585 (define-key map "x" 'calendar-mark-holidays)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1586 (define-key map "u" 'calendar-unmark)
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1587 (define-key map "m" 'diary-mark-entries)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1588 (define-key map "d" 'diary-view-entries)
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1589 (define-key map "D" 'diary-view-other-diary-entries)
70632
2c9ec59f776a (calendar-mode-map): Refer to diary-show-all-entries rather than alias
Glenn Morris <rgm@gnu.org>
parents: 70600
diff changeset
1590 (define-key map "s" 'diary-show-all-entries)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1591 (define-key map "pd" 'calendar-print-day-of-year)
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1592 (define-key map "pC" 'calendar-chinese-print-date)
93719
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1593 (define-key map "pk" 'calendar-coptic-print-date)
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1594 (define-key map "pe" 'calendar-ethiopic-print-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1595 (define-key map "pp" 'calendar-persian-print-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1596 (define-key map "pc" 'calendar-iso-print-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1597 (define-key map "pj" 'calendar-julian-print-date)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1598 (define-key map "pa" 'calendar-astro-print-day-number)
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1599 (define-key map "ph" 'calendar-hebrew-print-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1600 (define-key map "pi" 'calendar-islamic-print-date)
84593
6a5b534dceee Following cal-bahai renaming, update all
Glenn Morris <rgm@gnu.org>
parents: 84554
diff changeset
1601 (define-key map "pb" 'calendar-bahai-print-date)
93719
5673edec9392 Update for coptic and french name changes.
Glenn Morris <rgm@gnu.org>
parents: 93714
diff changeset
1602 (define-key map "pf" 'calendar-french-print-date)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1603 (define-key map "pm" 'calendar-mayan-print-date)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1604 (define-key map "po" 'calendar-print-other-dates)
93791
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1605 (define-key map "id" 'diary-insert-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1606 (define-key map "iw" 'diary-insert-weekly-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1607 (define-key map "im" 'diary-insert-monthly-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1608 (define-key map "iy" 'diary-insert-yearly-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1609 (define-key map "ia" 'diary-insert-anniversary-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1610 (define-key map "ib" 'diary-insert-block-entry)
4ef65ad699dc Update for diary-lib name changes.
Glenn Morris <rgm@gnu.org>
parents: 93740
diff changeset
1611 (define-key map "ic" 'diary-insert-cyclic-entry)
93740
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1612 (define-key map "ihd" 'diary-hebrew-insert-entry)
61bda7ffa0b8 Update for chinese and hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents: 93730
diff changeset
1613 (define-key map "ihm" 'diary-hebrew-insert-monthly-entry)
94311
d550d8d3e7f3 (calendar-mode-map): Fix typo.
Glenn Morris <rgm@gnu.org>
parents: 94287
diff changeset
1614 (define-key map "ihy" 'diary-hebrew-insert-yearly-entry)
93647
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1615 (define-key map "iid" 'diary-islamic-insert-entry)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1616 (define-key map "iim" 'diary-islamic-insert-monthly-entry)
447b30ba4c57 Update for iso, islamic, julian, mayan, persian name changes.
Glenn Morris <rgm@gnu.org>
parents: 93630
diff changeset
1617 (define-key map "iiy" 'diary-islamic-insert-yearly-entry)
84593
6a5b534dceee Following cal-bahai renaming, update all
Glenn Morris <rgm@gnu.org>
parents: 84554
diff changeset
1618 (define-key map "iBd" 'diary-bahai-insert-entry)
6a5b534dceee Following cal-bahai renaming, update all
Glenn Morris <rgm@gnu.org>
parents: 84554
diff changeset
1619 (define-key map "iBm" 'diary-bahai-insert-monthly-entry)
6a5b534dceee Following cal-bahai renaming, update all
Glenn Morris <rgm@gnu.org>
parents: 84554
diff changeset
1620 (define-key map "iBy" 'diary-bahai-insert-yearly-entry)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1621 (define-key map "?" 'calendar-goto-info-node)
73518
099deb7b2cbd (cal-html-cursor-month, cal-html-cursor-year): Add autoloads for this
Glenn Morris <rgm@gnu.org>
parents: 73181
diff changeset
1622 (define-key map "Hm" 'cal-html-cursor-month)
099deb7b2cbd (cal-html-cursor-month, cal-html-cursor-year): Add autoloads for this
Glenn Morris <rgm@gnu.org>
parents: 73181
diff changeset
1623 (define-key map "Hy" 'cal-html-cursor-year)
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1624 (define-key map "tm" 'cal-tex-cursor-month)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1625 (define-key map "tM" 'cal-tex-cursor-month-landscape)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1626 (define-key map "td" 'cal-tex-cursor-day)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1627 (define-key map "tw1" 'cal-tex-cursor-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1628 (define-key map "tw2" 'cal-tex-cursor-week2)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1629 (define-key map "tw3" 'cal-tex-cursor-week-iso)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1630 (define-key map "tw4" 'cal-tex-cursor-week-monday)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1631 (define-key map "tfd" 'cal-tex-cursor-filofax-daily)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1632 (define-key map "tfw" 'cal-tex-cursor-filofax-2week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1633 (define-key map "tfW" 'cal-tex-cursor-filofax-week)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1634 (define-key map "tfy" 'cal-tex-cursor-filofax-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1635 (define-key map "ty" 'cal-tex-cursor-year)
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1636 (define-key map "tY" 'cal-tex-cursor-year-landscape)
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1637
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1638 (define-key map [menu-bar edit] 'undefined)
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1639 (define-key map [menu-bar search] 'undefined)
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1640
96346
775f65dc9776 (solar-sunrises-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 96315
diff changeset
1641 (easy-menu-define nil map nil cal-menu-sunmoon-menu)
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1642 (easy-menu-define nil map nil cal-menu-diary-menu)
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1643 (easy-menu-define nil map nil cal-menu-holidays-menu)
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1644 (easy-menu-define nil map nil cal-menu-goto-menu)
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1645 (easy-menu-define nil map nil cal-menu-scroll-menu)
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
1646
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1647 ;; These are referenced in the default calendar-date-echo-text.
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1648 (define-key map [down-mouse-3]
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1649 (easy-menu-binding cal-menu-context-mouse-menu))
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1650 (define-key map [down-mouse-2]
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1651 (easy-menu-binding cal-menu-global-mouse-menu))
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1652
105141
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1653 ;; Left-click moves us forward in time, right-click backwards.
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1654 ;; cf scroll-bar.el.
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1655 (define-key map [vertical-scroll-bar mouse-1] 'calendar-scroll-left)
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1656 (define-key map [vertical-scroll-bar drag-mouse-1] 'calendar-scroll-left)
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1657 ;; down-mouse-2 stays as scroll-bar-drag.
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1658 (define-key map [vertical-scroll-bar mouse-3] 'calendar-scroll-right)
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1659 (define-key map [vertical-scroll-bar drag-mouse-3] 'calendar-scroll-right)
c9587468d637 (calendar-mode-map): Make mouse-1 and 3 clicks on the scroll-bar
Glenn Morris <rgm@gnu.org>
parents: 104754
diff changeset
1660
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1661 map)
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1662 "Keymap for `calendar-mode'.")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 ;; Calendar mode is suitable only for specially formatted data.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665 (put 'calendar-mode 'mode-class 'special)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1667 (defun calendar-mode-line-entry (command echo &optional key string)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1668 "Return a propertized string for `calendar-mode-line-format'.
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1669 COMMAND is a command to run, ECHO is the help-echo text, KEY
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1670 is COMMAND's keybinding, STRING describes the binding."
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1671 (propertize (or key
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1672 (substitute-command-keys
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1673 (format "\\<calendar-mode-map>\\[%s] %s" command string)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1674 'help-echo (format "mouse-1: %s" echo)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1675 'mouse-face 'mode-line-highlight
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1676 'keymap (make-mode-line-mouse-map 'mouse-1 command)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1677
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1678 ;; After calendar-mode-map.
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1679 (defcustom calendar-mode-line-format
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1680 (list
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1681 (calendar-mode-line-entry 'calendar-scroll-right "previous month" "<")
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1682 "Calendar"
31669
ec8ce5820488 (calendar-mode-line-format): Make fields
Dave Love <fx@gnu.org>
parents: 26530
diff changeset
1683 (concat
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1684 (calendar-mode-line-entry 'calendar-goto-info-node "read Info on Calendar"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1685 nil "info")
74851
4b70fa58f083 (calendar-mode-map): Switch < and >.
Chong Yidong <cyd@stupidchicken.com>
parents: 73518
diff changeset
1686 " / "
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1687 (calendar-mode-line-entry 'calendar-other-month "choose another month"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1688 nil "other")
74851
4b70fa58f083 (calendar-mode-map): Switch < and >.
Chong Yidong <cyd@stupidchicken.com>
parents: 73518
diff changeset
1689 " / "
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1690 (calendar-mode-line-entry 'calendar-goto-today "go to today's date"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1691 nil "today"))
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1692 '(calendar-date-string (calendar-current-date) t)
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1693 (calendar-mode-line-entry 'calendar-scroll-left "next month" ">"))
44369
72939dbe7b7b (update-calendar-mode-line): Force mode-line update.
Richard M. Stallman <rms@gnu.org>
parents: 44084
diff changeset
1694 "The mode line of the calendar buffer.
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1695 This is a list of items that evaluate to strings. The elements
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1696 are evaluated and concatenated, evenly separated by blanks.
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1697 During evaluation, the variable `date' is available as the date
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1698 nearest the cursor (or today's date if that fails). To update
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1699 the mode-line as the cursor moves, add `calendar-update-mode-line'
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1700 to `calendar-move-hook'. Here is an example that has the Hebrew date,
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1701 the day number/days remaining in the year, and the ISO week/year numbers:
44369
72939dbe7b7b (update-calendar-mode-line): Force mode-line update.
Richard M. Stallman <rms@gnu.org>
parents: 44084
diff changeset
1702
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1703 (list
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1704 \"\"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1705 '(calendar-hebrew-date-string date)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1706 '(let* ((year (calendar-extract-year date))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1707 (d (calendar-day-number date))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1708 (days-remaining
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1709 (- (calendar-day-number (list 12 31 year)) d)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1710 (format \"%d/%d\" d days-remaining))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1711 '(let* ((d (calendar-absolute-from-gregorian date))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1712 (iso-date (calendar-iso-from-absolute d)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1713 (format \"ISO week %d of %d\"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1714 (calendar-extract-month iso-date)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1715 (calendar-extract-year iso-date)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1716 \"\"))"
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1717 :risky t
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1718 :type 'sexp
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1719 :group 'calendar)
47333
79920a7d8018 (mouse-scroll-calendar-left)
Richard M. Stallman <rms@gnu.org>
parents: 44371
diff changeset
1720
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1721 (defun calendar-goto-info-node ()
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1722 "Go to the info node for the calendar."
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1723 (interactive)
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1724 (info "(emacs)Calendar/Diary")
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1725 (fit-window-to-buffer))
48366
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
1726
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1727 (defvar calendar-mark-ring nil
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1728 "Used by `calendar-set-mark'.")
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1729
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1730 (define-derived-mode calendar-mode nil "Calendar"
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1731 "A major mode for the calendar window.
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1732 For a complete description, see the info node `Calendar/Diary'.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1734 \\<calendar-mode-map>\\{calendar-mode-map}"
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1735 (setq buffer-read-only t
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
1736 buffer-undo-list t
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
1737 indent-tabs-mode nil)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1738 (calendar-update-mode-line)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 (make-local-variable 'calendar-mark-ring)
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1740 (make-local-variable 'displayed-month) ; month in middle of window
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1741 (make-local-variable 'displayed-year) ; year in middle of window
82203
3d0d3af343ac (calendar-mode): Make sure displayed-(month|year) are set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82151
diff changeset
1742 ;; Most functions only work if displayed-month and displayed-year are set,
3d0d3af343ac (calendar-mode): Make sure displayed-(month|year) are set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82151
diff changeset
1743 ;; so let's make sure they're always set. Most likely, this will be reset
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1744 ;; soon in calendar-generate, but better safe than sorry.
82203
3d0d3af343ac (calendar-mode): Make sure displayed-(month|year) are set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82151
diff changeset
1745 (unless (boundp 'displayed-month) (setq displayed-month 1))
3d0d3af343ac (calendar-mode): Make sure displayed-(month|year) are set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82151
diff changeset
1746 (unless (boundp 'displayed-year) (setq displayed-year 2001))
48366
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
1747 (set (make-local-variable 'font-lock-defaults)
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1748 '(calendar-font-lock-keywords t)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1750 (defun calendar-string-spread (strings char length)
12061
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1751 "Concatenate list of STRINGS separated with copies of CHAR to fill LENGTH.
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1752 The effect is like mapconcat but the separating pieces are as balanced as
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1753 possible. Each item of STRINGS is evaluated before concatenation so it can
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1754 actually be an expression that evaluates to a string. If LENGTH is too short,
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1755 the STRINGS are just concatenated and the result truncated."
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1756 ;; The algorithm is based on equation (3.25) on page 85 of Concrete
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1757 ;; Mathematics by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik,
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1758 ;; Addison-Wesley, Reading, MA, 1989.
12061
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1759 (let* ((strings (mapcar 'eval
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1760 (if (< (length strings) 2)
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1761 (append (list "") strings (list ""))
017af11017a0 Fixed calendar-string-spread to allow 0 or 1 string; this simplified several
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10459
diff changeset
1762 strings)))
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1763 (n (- length (length (apply 'concat strings))))
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1764 (m (1- (length strings)))
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1765 (s (car strings))
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1766 (strings (cdr strings))
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1767 (i 0))
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
1768 (dolist (string strings)
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1769 (setq s (concat s
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1770 (make-string (max 0 (/ (+ n i) m)) char)
92988
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
1771 string)
189ca7ef805d (calendar-mod): Remove.
Glenn Morris <rgm@gnu.org>
parents: 92969
diff changeset
1772 i (1+ i)))
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1773 (substring s 0 length)))
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1774
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1775 (defun calendar-update-mode-line ()
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 "Update the calendar mode line with the current date and date style."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (if (bufferp (get-buffer calendar-buffer))
65477
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
1778 (with-current-buffer calendar-buffer
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1779 (let ((start (- calendar-left-margin 2))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1780 (date (condition-case nil
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1781 (calendar-cursor-to-nearest-date)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1782 (error (calendar-current-date)))))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1783 (setq mode-line-format
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1784 (concat (make-string (max 0 (+ start
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1785 (- (car (window-inside-edges))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1786 (car (window-edges))))) ?\s)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1787 (calendar-string-spread
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1788 (mapcar 'eval calendar-mode-line-format)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1789 ?\s (- calendar-right-margin (1- start))))))
44369
72939dbe7b7b (update-calendar-mode-line): Force mode-line update.
Richard M. Stallman <rms@gnu.org>
parents: 44084
diff changeset
1790 (force-mode-line-update))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1792 (defun calendar-window-list ()
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1793 "List of all calendar-related windows."
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1794 (let ((calendar-buffers (calendar-buffer-list))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1795 list)
101938
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
1796 ;; Using 0 rather than t for last argument - see bug#2199.
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
1797 ;; This is only used with calendar-hide-window, which ignores
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
1798 ;; iconified frames anyway, so could use 'visible rather than 0.
31669
ec8ce5820488 (calendar-mode-line-format): Make fields
Dave Love <fx@gnu.org>
parents: 26530
diff changeset
1799 (walk-windows (lambda (w)
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
1800 (if (memq (window-buffer w) calendar-buffers)
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
1801 (push w list)))
101938
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
1802 nil 0)
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1803 list))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1804
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1805 (defun calendar-buffer-list ()
92895
379d912c3710 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 92858
diff changeset
1806 "List of all calendar-related buffers (as buffers, not strings)."
92823
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1807 (let (buffs)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1808 (dolist (b (list calendar-hebrew-yahrzeit-buffer lunar-phases-buffer
96346
775f65dc9776 (solar-sunrises-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 96315
diff changeset
1809 holiday-buffer diary-fancy-buffer solar-sunrises-buffer
92823
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1810 (get-file-buffer diary-file)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1811 calendar-buffer calendar-other-calendars-buffer))
92895
379d912c3710 (diary-file): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 92858
diff changeset
1812 (and b (setq b (get-buffer b))
92823
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1813 (push b buffs)))
8fb3c7b3e53a (cal-hebrew-yahrzeit-buffer): New constant.
Glenn Morris <rgm@gnu.org>
parents: 92716
diff changeset
1814 buffs))
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1815
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1816 (defun calendar-exit ()
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1817 "Get out of the calendar window and hide it and related buffers."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 (interactive)
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1819 (let ((diary-buffer (get-file-buffer diary-file)))
22028
639be14b80ef On exiting, don't signal error when user changes mind.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22027
diff changeset
1820 (if (or (not diary-buffer)
639be14b80ef On exiting, don't signal error when user changes mind.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22027
diff changeset
1821 (not (buffer-modified-p diary-buffer))
639be14b80ef On exiting, don't signal error when user changes mind.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22027
diff changeset
1822 (yes-or-no-p
639be14b80ef On exiting, don't signal error when user changes mind.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22027
diff changeset
1823 "Diary modified; do you really want to exit the calendar? "))
92602
020d7b75c13a (calendar-insert-indented): Doc fix. Use when rather than if.
Glenn Morris <rgm@gnu.org>
parents: 92594
diff changeset
1824 ;; Need to do this multiple times because one time can replace some
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1825 ;; calendar-related buffers with other calendar-related buffers.
92602
020d7b75c13a (calendar-insert-indented): Doc fix. Use when rather than if.
Glenn Morris <rgm@gnu.org>
parents: 92594
diff changeset
1826 (mapc (lambda (x)
020d7b75c13a (calendar-insert-indented): Doc fix. Use when rather than if.
Glenn Morris <rgm@gnu.org>
parents: 92594
diff changeset
1827 (mapc 'calendar-hide-window (calendar-window-list)))
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1828 (calendar-window-list)))))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1829
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1830 (define-obsolete-function-alias 'exit-calendar 'calendar-exit "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
1831
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1832 (defun calendar-hide-window (window)
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1833 "Hide WINDOW if it is calendar-related."
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1834 (let ((buffer (if (window-live-p window) (window-buffer window))))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1835 (if (memq buffer (calendar-buffer-list))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1836 (cond
37430
a0e805e3a7f1 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker): Use
Eli Zaretskii <eliz@gnu.org>
parents: 37001
diff changeset
1837 ((and (display-multi-frame-p)
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1838 (eq 'icon (cdr (assoc 'visibility
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1839 (frame-parameters
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1840 (window-frame window))))))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1841 nil)
37430
a0e805e3a7f1 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker): Use
Eli Zaretskii <eliz@gnu.org>
parents: 37001
diff changeset
1842 ((and (display-multi-frame-p) (window-dedicated-p window))
26427
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1843 (if calendar-remove-frame-by-deleting
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1844 (delete-frame (window-frame window))
3b6cf16f3633 * calendar/calendar.el (calendar-remove-frame-by-deleting):
Sam Steingold <sds@gnu.org>
parents: 26329
diff changeset
1845 (iconify-frame (window-frame window))))
9709
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1846 ((not (and (select-window window) (one-window-p window)))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1847 (delete-window window))
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1848 (t (set-buffer buffer)
3ece524b8ea3 Lots of minor fixes and code polishing. Exit-calendar code rewritten.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9417
diff changeset
1849 (bury-buffer))))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850
103770
564ef05eedbc Ed Reingold <reingold at emr.cs.iit.edu>
Glenn Morris <rgm@gnu.org>
parents: 102354
diff changeset
1851 (defun calendar-current-date (&optional offset)
564ef05eedbc Ed Reingold <reingold at emr.cs.iit.edu>
Glenn Morris <rgm@gnu.org>
parents: 102354
diff changeset
1852 "Return the current date in a list (month day year).
103771
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1853 Optional integer OFFSET is a number of days from the current date."
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1854 (let* ((now (decode-time))
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1855 (now (list (nth 4 now) (nth 3 now) (nth 5 now))))
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1856 (if (zerop (or offset 0))
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1857 now
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1858 (calendar-gregorian-from-absolute
06bd6035d548 (calendar-current-date): Rework previous change.
Glenn Morris <rgm@gnu.org>
parents: 103770
diff changeset
1859 (+ offset (calendar-absolute-from-gregorian now))))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1861 (defun calendar-column-to-segment ()
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1862 "Convert current column to calendar month \"segment\".
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1863 The left-most month returns 0, the next right 1, and so on."
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1864 (let ((col (max 0 (+ (current-column)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1865 (/ calendar-intermonth-spacing 2)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1866 (- calendar-left-margin)))))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1867 (/ col (+ (* 7 calendar-column-width) calendar-intermonth-spacing))))
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1868
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1869 (defun calendar-cursor-to-date (&optional error event)
31730
719a230f8091 Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31671
diff changeset
1870 "Return a list (month day year) of current cursor position.
5829
d266967cc1cc (calendar-mode-line-format): Change "current" to "today".
Richard M. Stallman <rms@gnu.org>
parents: 5771
diff changeset
1871 If cursor is not on a specific date, signals an error if optional parameter
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1872 ERROR is non-nil, otherwise just returns nil.
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1873 If EVENT is non-nil, it's an event indicating the buffer position to
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1874 use instead of point."
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1875 (with-current-buffer
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1876 (if event (window-buffer (posn-window (event-start event)))
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1877 (current-buffer))
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1878 (save-excursion
96315
3046fb222514 (calendar-cursor-to-date): Handle case where event-start is nil.
Glenn Morris <rgm@gnu.org>
parents: 96313
diff changeset
1879 (and event (setq event (event-start event))
3046fb222514 (calendar-cursor-to-date): Handle case where event-start is nil.
Glenn Morris <rgm@gnu.org>
parents: 96313
diff changeset
1880 (goto-char (posn-point event)))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1881 (let* ((segment (calendar-column-to-segment))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1882 (month (% (+ displayed-month (1- segment)) 12)))
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1883 ;; Call with point on either of the two digits in a 2-digit date,
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1884 ;; or on or before the digit of a 1-digit date.
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1885 (if (not (and (looking-at "[ 0-9]?[0-9][^0-9]")
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1886 (get-text-property (point) 'date)))
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1887 (if error (error "Not on a date!"))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1888 ;; Convert segment to real month and year.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1889 (if (zerop month) (setq month 12))
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1890 ;; Go back to before the first date digit.
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1891 (or (looking-at " ")
82118
baffe86b0c44 (calendar-mode-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82086
diff changeset
1892 (re-search-backward "[^0-9]"))
6037
324bb3410cfb Fix calendar-cursor-to-date to handle starred days correctly.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 6025
diff changeset
1893 (list month
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1894 (string-to-number
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1895 (buffer-substring (1+ (point))
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
1896 (+ 1 calendar-day-digit-width (point))))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1897 (cond
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1898 ((and (= 12 month) (zerop segment)) (1- displayed-year))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1899 ((and (= 1 month) (= segment 2)) (1+ displayed-year))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
1900 (t displayed-year))))))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901
65477
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
1902 (add-to-list 'debug-ignored-errors "Not on a date!")
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
1903
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1904 ;; The following version of calendar-gregorian-from-absolute is preferred for
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1905 ;; reasons of clarity, BUT it's much slower than the version that follows it.
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1906
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1907 ;;(defun calendar-gregorian-from-absolute (date)
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1908 ;; "Compute the list (month day year) corresponding to the absolute DATE.
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1909 ;;The absolute date is the number of days elapsed since the (imaginary)
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1910 ;;Gregorian date Sunday, December 31, 1 BC."
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1911 ;; (let* ((approx (/ date 366)) ; approximation from below
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1912 ;; (year ; search forward from the approximation
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1913 ;; (+ approx
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1914 ;; (calendar-sum y approx
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1915 ;; (>= date (calendar-absolute-from-gregorian (list 1 1 (1+ y))))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1916 ;; 1)))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1917 ;; (month ; search forward from January
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1918 ;; (1+ (calendar-sum m 1
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1919 ;; (> date
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1920 ;; (calendar-absolute-from-gregorian
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1921 ;; (list m (calendar-last-day-of-month m year) year)))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1922 ;; 1)))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1923 ;; (day ; calculate the day by subtraction
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1924 ;; (- date
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1925 ;; (1- (calendar-absolute-from-gregorian (list month 1 year))))))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1926 ;; (list month day year)))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1927
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 (defun calendar-gregorian-from-absolute (date)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 "Compute the list (month day year) corresponding to the absolute DATE.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 The absolute date is the number of days elapsed since the (imaginary)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1931 Gregorian date Sunday, December 31, 1 BC. This function does not
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
1932 handle dates in years BC."
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1933 ;; See the footnote on page 384 of ``Calendrical Calculations, Part II:
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1934 ;; Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1935 ;; Clamen, Software--Practice and Experience, Volume 23, Number 4
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1936 ;; (April, 1993), pages 383-404 for an explanation.
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1937 (let* ((d0 (1- date))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1938 (n400 (/ d0 146097))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1939 (d1 (% d0 146097))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1940 (n100 (/ d1 36524))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1941 (d2 (% d1 36524))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1942 (n4 (/ d2 1461))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1943 (d3 (% d2 1461))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1944 (n1 (/ d3 365))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1945 (day (1+ (% d3 365)))
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1946 (year (+ (* 400 n400) (* 100 n100) (* n4 4) n1))
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1947 (month 1)
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1948 mdays)
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1949 (if (or (= n100 4) (= n1 4))
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
1950 (list 12 31 year)
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1951 (setq year (1+ year))
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1952 (while (< (setq mdays (calendar-last-day-of-month month year)) day)
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1953 (setq day (- day mdays)
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1954 month (1+ month)))
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
1955 (list month day year))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956
96031
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1957 (defun calendar-other-month (month year &optional event)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1958 "Display a three-month calendar centered around MONTH and YEAR.
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1959 EVENT is an event like `last-nonmenu-event'."
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1960 (interactive (let ((event (list last-nonmenu-event)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1961 (append (calendar-read-date 'noday) event)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1962 (save-selected-window
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1963 (and event
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1964 (setq event (event-start event))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1965 (select-window (posn-window event)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1966 (unless (and (= month displayed-month)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1967 (= year displayed-year))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1968 (let ((old-date (calendar-cursor-to-date))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1969 (today (calendar-current-date)))
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1970 (calendar-generate-window month year)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1971 (calendar-cursor-to-visible-date
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1972 (cond
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1973 ((calendar-date-is-visible-p old-date) old-date)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1974 ((calendar-date-is-visible-p today) today)
edf0549afd4a (calendar-move-hook):Add calendar-update-mode-line as an option.
Glenn Morris <rgm@gnu.org>
parents: 94653
diff changeset
1975 (t (list month 1 year))))))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1977 (defun calendar-set-mark (arg &optional event)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978 "Mark the date under the cursor, or jump to marked date.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979 With no prefix argument, push current date onto marked date ring.
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
1980 With argument ARG, jump to mark, pop it, and put point at end of ring."
96047
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1981 (interactive
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1982 (list current-prefix-arg last-nonmenu-event))
65c4c935e492 * calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96031
diff changeset
1983 (let ((date (calendar-cursor-to-date t event)))
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1984 (if arg
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1985 (if (null calendar-mark-ring)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1986 (error "No mark set in this buffer")
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1987 (calendar-goto-date (car calendar-mark-ring))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1988 (setq calendar-mark-ring
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1989 (cdr (nconc calendar-mark-ring (list date)))))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1990 (push date calendar-mark-ring)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1991 ;; Since the top of the mark ring is the marked date in the
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1992 ;; calendar, the mark ring in the calendar is one longer than
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1993 ;; in other buffers to get the same effect.
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1994 (if (> (length calendar-mark-ring) (1+ mark-ring-max))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1995 (setcdr (nthcdr mark-ring-max calendar-mark-ring) nil))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
1996 (message "Mark set"))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (defun calendar-exchange-point-and-mark ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 "Exchange the current cursor position with the marked date."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000 (interactive)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 (let ((mark (car calendar-mark-ring))
5829
d266967cc1cc (calendar-mode-line-format): Change "current" to "today".
Richard M. Stallman <rms@gnu.org>
parents: 5771
diff changeset
2002 (date (calendar-cursor-to-date t)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 (if (null mark)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 (error "No mark set in this buffer")
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2005 (setq calendar-mark-ring (cons date (cdr calendar-mark-ring)))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 (calendar-goto-date mark))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 (defun calendar-count-days-region ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009 "Count the number of days (inclusive) between point and the mark."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010 (interactive)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2011 (let* ((days (- (calendar-absolute-from-gregorian
5829
d266967cc1cc (calendar-mode-line-format): Change "current" to "today".
Richard M. Stallman <rms@gnu.org>
parents: 5771
diff changeset
2012 (calendar-cursor-to-date t))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 (calendar-absolute-from-gregorian
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2014 (or (car calendar-mark-ring)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 (error "No mark set in this buffer")))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 (days (1+ (if (> days 0) days (- days)))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017 (message "Region has %d day%s (inclusive)"
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 days (if (> days 1) "s" ""))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 (defun calendar-not-implemented ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021 "Not implemented."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 (interactive)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 (error "%s not available in the calendar"
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 (global-key-binding (this-command-keys))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2025
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 (defun calendar-read (prompt acceptable &optional initial-contents)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 "Return an object read from the minibuffer.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 Prompt with the string PROMPT and use the function ACCEPTABLE to decide if
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 entered item is acceptable. If non-nil, optional third arg INITIAL-CONTENTS
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030 is a string to insert in the minibuffer before reading."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 (let ((value (read-minibuffer prompt initial-contents)))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 (while (not (funcall acceptable value))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (setq value (read-minibuffer prompt initial-contents)))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 value))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2037 (defvar calendar-abbrev-length 3
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2038 "*Length of abbreviations to be used for day and month names.
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2039 See also `calendar-day-abbrev-array' and `calendar-month-abbrev-array'.")
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2040
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2041 ;; FIXME does it have to start from Sunday?
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2042 (defcustom calendar-day-name-array
23531
37ae25c77df0 Add doc strings CORRECTLY!
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 23498
diff changeset
2043 ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2044 "Array of capitalized strings giving, in order, the day names.
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2045 The first two characters of each string will be used to head the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2046 day columns in the calendar. See also the variable
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2047 `calendar-day-abbrev-array'."
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2048 :group 'calendar
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2049 :type '(vector (string :tag "Sunday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2050 (string :tag "Monday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2051 (string :tag "Tuesday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2052 (string :tag "Wednesday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2053 (string :tag "Thursday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2054 (string :tag "Friday")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2055 (string :tag "Saturday")))
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2056
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2057 (defvar calendar-day-abbrev-array
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2058 [nil nil nil nil nil nil nil]
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2059 "*Array of capitalized strings giving the abbreviated day names.
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2060 The order should be the same as that of the full names specified
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2061 in `calendar-day-name-array'. These abbreviations may be used
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2062 instead of the full names in the diary file. Do not include a
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2063 trailing `.' in the strings specified in this variable, though
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2064 you may use such in the diary file. If any element of this array
61148
7f7db25577d9 Update reference to "Calendrical Calculations" book; there's a new edition.
Paul Eggert <eggert@twinsun.com>
parents: 60922
diff changeset
2065 is nil, then the abbreviation will be constructed as the first
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2066 `calendar-abbrev-length' characters of the corresponding full name.")
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2068 (defcustom calendar-month-name-array
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2069 ["January" "February" "March" "April" "May" "June"
23531
37ae25c77df0 Add doc strings CORRECTLY!
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 23498
diff changeset
2070 "July" "August" "September" "October" "November" "December"]
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2071 "Array of capitalized strings giving, in order, the month names.
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2072 See also the variable `calendar-month-abbrev-array'."
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2073 :group 'calendar
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2074 :type '(vector (string :tag "January")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2075 (string :tag "February")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2076 (string :tag "March")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2077 (string :tag "April")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2078 (string :tag "May")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2079 (string :tag "June")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2080 (string :tag "July")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2081 (string :tag "August")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2082 (string :tag "September")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2083 (string :tag "October")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2084 (string :tag "November")
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2085 (string :tag "December")))
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2086
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2087 (defvar calendar-month-abbrev-array
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2088 [nil nil nil nil nil nil nil nil nil nil nil nil]
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2089 "*Array of capitalized strings giving the abbreviated month names.
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2090 The order should be the same as that of the full names specified
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2091 in `calendar-month-name-array'. These abbreviations are used in
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2092 the calendar menu entries, and can also be used in the diary
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2093 file. Do not include a trailing `.' in the strings specified in
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2094 this variable, though you may use such in the diary file. If any
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2095 element of this array is nil, then the abbreviation will be
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2096 constructed as the first `calendar-abbrev-length' characters of the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2097 corresponding full name.")
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2098
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2099 (defun calendar-make-alist (sequence &optional start-index filter abbrevs)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2100 "Make an assoc list corresponding to SEQUENCE.
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2101 Each element of sequence will be associated with an integer, starting
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2102 from 1, or from START-INDEX if that is non-nil. If a sequence ABBREVS
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2103 is supplied, the function `calendar-abbrev-construct' is used to
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2104 construct abbreviations corresponding to the elements in SEQUENCE.
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2105 Each abbreviation is entered into the alist with the same
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2106 association index as the full name it represents.
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2107 If FILTER is provided, apply it to each key in the alist."
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2108 (let ((index 0)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2109 (offset (or start-index 1))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2110 (aseq (if abbrevs (calendar-abbrev-construct abbrevs sequence)))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2111 (aseqp (if abbrevs (calendar-abbrev-construct abbrevs sequence
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2112 'period)))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2113 alist elem)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2114 (dotimes (i (length sequence) (reverse alist))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2115 (setq index (+ i offset)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2116 elem (elt sequence i)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2117 alist
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2118 (cons (cons (if filter (funcall filter elem) elem) index) alist))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2119 (if aseq
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2120 (setq elem (elt aseq i)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2121 alist (cons (cons (if filter (funcall filter elem) elem)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2122 index) alist)))
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2123 (if aseqp
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2124 (setq elem (elt aseqp i)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2125 alist (cons (cons (if filter (funcall filter elem) elem)
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2126 index) alist))))))
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2127
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2128 (defun calendar-read-date (&optional noday)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2129 "Prompt for Gregorian date. Return a list (month day year).
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2130 If optional NODAY is t, does not ask for day, but just returns
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2131 \(month 1 year); if NODAY is any other non-nil value the value returned is
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2132 \(month year)"
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2133 (let* ((year (calendar-read
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2134 "Year (>0): "
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2135 (lambda (x) (> x 0))
93844
bf9ef749c23e Replace int-to-string with number-to-string.
Glenn Morris <rgm@gnu.org>
parents: 93815
diff changeset
2136 (number-to-string (calendar-extract-year
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2137 (calendar-current-date)))))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2138 (month-array calendar-month-name-array)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2139 (completion-ignore-case t)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2140 (month (cdr (assoc-string
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2141 (completing-read
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2142 "Month name: "
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2143 (mapcar 'list (append month-array nil))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2144 nil t)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2145 (calendar-make-alist month-array 1) t)))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2146 (last (calendar-last-day-of-month month year)))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2147 (if noday
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2148 (if (eq noday t)
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2149 (list month 1 year)
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2150 (list month year))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2151 (list month
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2152 (calendar-read (format "Day (1-%d): " last)
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2153 (lambda (x) (and (< 0 x) (<= x last))))
92594
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2154 year))))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2155
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2156 (defun calendar-interval (mon1 yr1 mon2 yr2)
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2157 "The number of months difference between MON1, YR1 and MON2, YR2.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2158 The result is positive if the second date is later than the first.
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2159 Negative years are interpreted as years BC; -1 being 1 BC, and so on."
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2160 (if (< yr1 0) (setq yr1 (1+ yr1))) ; -1 BC -> 0 AD, etc
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2161 (if (< yr2 0) (setq yr2 (1+ yr2)))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2162 (+ (* 12 (- yr2 yr1))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2163 (- mon2 mon1)))
674c88622bd9 Move many autoloads to separate file, cal-loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents: 92551
diff changeset
2164
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2165 (defun calendar-abbrev-construct (abbrev full &optional period)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2166 "Internal calendar function to return a complete abbreviation array.
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2167 ABBREV is an array of abbreviations, FULL the corresponding array
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2168 of full names. The return value is the ABBREV array, with any nil
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2169 elements replaced by the first three characters taken from the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2170 corresponding element of FULL. If optional argument PERIOD is non-nil,
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2171 each element returned has a final `.' character."
52160
833b56d6e12d (list-diary-entries-hook, diary-display-hook, nongregorian-diary-listing-hook)
Glenn Morris <rgm@gnu.org>
parents: 52115
diff changeset
2172 (let (elem array name)
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2173 (dotimes (i (length full))
52160
833b56d6e12d (list-diary-entries-hook, diary-display-hook, nongregorian-diary-listing-hook)
Glenn Morris <rgm@gnu.org>
parents: 52115
diff changeset
2174 (setq name (aref full i)
833b56d6e12d (list-diary-entries-hook, diary-display-hook, nongregorian-diary-listing-hook)
Glenn Morris <rgm@gnu.org>
parents: 52115
diff changeset
2175 elem (or (aref abbrev i)
833b56d6e12d (list-diary-entries-hook, diary-display-hook, nongregorian-diary-listing-hook)
Glenn Morris <rgm@gnu.org>
parents: 52115
diff changeset
2176 (substring name 0
833b56d6e12d (list-diary-entries-hook, diary-display-hook, nongregorian-diary-listing-hook)
Glenn Morris <rgm@gnu.org>
parents: 52115
diff changeset
2177 (min calendar-abbrev-length (length name))))
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2178 elem (format "%s%s" elem (if period "." ""))
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2179 array (append array (list elem))))
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2180 (vconcat array)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181
48366
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
2182 (defvar calendar-font-lock-keywords
48683
ead34b521994 (facemenu-unlisted-faces): Only update after facemenu was loaded.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48366
diff changeset
2183 `((,(concat (regexp-opt (mapcar 'identity calendar-month-name-array) t)
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2184 " -?[0-9]+")
48683
ead34b521994 (facemenu-unlisted-faces): Only update after facemenu was loaded.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48366
diff changeset
2185 . font-lock-function-name-face) ; month and year
ead34b521994 (facemenu-unlisted-faces): Only update after facemenu was loaded.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48366
diff changeset
2186 (,(regexp-opt
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
2187 (list (substring (aref calendar-day-name-array 6)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
2188 0 calendar-day-header-width)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
2189 (substring (aref calendar-day-name-array 0)
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
2190 0 calendar-day-header-width)))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
2191 ;; Saturdays and Sundays are highlighted differently.
48683
ead34b521994 (facemenu-unlisted-faces): Only update after facemenu was loaded.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48366
diff changeset
2192 . font-lock-comment-face)
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2193 ;; First two chars of each day are used in the calendar.
96158
44b22c5bd2a9 Factor out the magic numbers controlling the calendar layout.
Glenn Morris <rgm@gnu.org>
parents: 96047
diff changeset
2194 (,(regexp-opt (mapcar (lambda (x) (substring x 0 calendar-day-header-width))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
2195 calendar-day-name-array))
48683
ead34b521994 (facemenu-unlisted-faces): Only update after facemenu was loaded.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48366
diff changeset
2196 . font-lock-reference-face))
48366
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
2197 "Default keywords to highlight in Calendar mode.")
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
2198
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2199 (defun calendar-day-name (date &optional abbrev absolute)
48717
b243692710b4 (calendar-day-name): Move defn down.
Richard M. Stallman <rms@gnu.org>
parents: 48683
diff changeset
2200 "Return a string with the name of the day of the week of DATE.
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2201 DATE should be a list in the format (MONTH DAY YEAR), unless the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2202 optional argument ABSOLUTE is non-nil, in which case DATE should
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2203 be an integer in the range 0 to 6 corresponding to the day of the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2204 week. Day names are taken from the variable `calendar-day-name-array',
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2205 unless the optional argument ABBREV is non-nil, in which case
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2206 the variable `calendar-day-abbrev-array' is used."
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2207 (aref (if abbrev
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2208 (calendar-abbrev-construct calendar-day-abbrev-array
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2209 calendar-day-name-array)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2210 calendar-day-name-array)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2211 (if absolute date (calendar-day-of-week date))))
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2212
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2213 (defun calendar-month-name (month &optional abbrev)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2214 "Return a string with the name of month number MONTH.
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2215 Months are numbered from one. Month names are taken from the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2216 variable `calendar-month-name-array', unless the optional
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2217 argument ABBREV is non-nil, in which case
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2218 `calendar-month-abbrev-array' is used."
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2219 (aref (if abbrev
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2220 (calendar-abbrev-construct calendar-month-abbrev-array
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2221 calendar-month-name-array)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2222 calendar-month-name-array)
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2223 (1- month)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 (defun calendar-day-of-week (date)
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2226 "Return the day-of-the-week index of DATE, 0 for Sunday, 1 for Monday, etc.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2227 DATE is a list of the form (month day year). A negative year is
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2228 interpreted as BC; -1 being 1 BC, and so on."
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2229 (mod (calendar-absolute-from-gregorian date) 7))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230
109325
d916e52744cb cal-tex.el fixes for calendar-week-start-day != 0.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
2231 (defun calendar-week-end-day ()
d916e52744cb cal-tex.el fixes for calendar-week-start-day != 0.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
2232 "Return the index (0 for Sunday, etc.) of the last day of the week."
d916e52744cb cal-tex.el fixes for calendar-week-start-day != 0.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
2233 (mod (+ calendar-week-start-day 6) 7))
d916e52744cb cal-tex.el fixes for calendar-week-start-day != 0.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
2234
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 (defun calendar-unmark ()
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2236 "Delete all diary/holiday marks/highlighting from the calendar."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 (interactive)
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2238 (setq calendar-mark-holidays-flag nil
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2239 calendar-mark-diary-entries-flag nil)
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2240 (with-current-buffer calendar-buffer
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2241 (mapc 'delete-overlay (overlays-in (point-min) (point-max)))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243 (defun calendar-date-is-visible-p (date)
93449
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
2244 "Return non-nil if DATE is valid and is visible in the calendar window."
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
2245 (and (calendar-date-is-valid-p date)
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
2246 (< (abs (calendar-interval
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
2247 displayed-month displayed-year
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2248 (calendar-extract-month date) (calendar-extract-year date)))
93449
64521597b7dd (increment-calendar-month): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 93374
diff changeset
2249 2)))
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2250
94280
746fc66b809d (calendar-chinese-all-holidays-flag): New.
Glenn Morris <rgm@gnu.org>
parents: 94019
diff changeset
2251 ;; FIXME can this be generalized for holiday-chinese?
93497
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2252 (defun calendar-nongregorian-visible-p (month day toabs fromabs switch)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2253 "Return non-nil if MONTH, DAY is visible in the calendar window.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2254 MONTH and DAY are in some non-Gregorian calendar system. The
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2255 functions TOABS and FROMABS convert that system to and from
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2256 absolute, respectively. SWITCH is a function that takes a single
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2257 argument (a local month number). It applies when the local year
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2258 changes across the calendar window, and returns non-nil if the
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2259 specified month should be associated with the higher year.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2260 Returns the corresponding Gregorian date."
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2261 ;; We need to choose the local year associated with month and day
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2262 ;; that might make them visible.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2263 (let* ((m1 displayed-month)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2264 (y1 displayed-year)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2265 (m2 displayed-month)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2266 (y2 displayed-year)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2267 ;; Absolute date of first/last dates in calendar window.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2268 (start-date (progn
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2269 (calendar-increment-month m1 y1 -1)
93497
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2270 (calendar-absolute-from-gregorian (list m1 1 y1))))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2271 (end-date (progn
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2272 (calendar-increment-month m2 y2 1)
93497
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2273 (calendar-absolute-from-gregorian
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2274 (list m2 (calendar-last-day-of-month m2 y2) y2))))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2275 ;; Local date of first/last date in calendar window.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2276 (local-start (funcall fromabs start-date))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2277 (local-end (funcall fromabs end-date))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2278 ;; Local year of first/last dates.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2279 ;; Can only differ if displayed-month = 12, 1, 2.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2280 (local-y1 (calendar-extract-year local-start))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2281 (local-y2 (calendar-extract-year local-end))
93497
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2282 ;; Choose which year might be visible in the window.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2283 ;; Obviously it only matters when y1 and y2 differ, ie
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2284 ;; when the _local_ new year is visible.
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2285 (year (if (funcall switch month) local-y2 local-y1))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2286 (date (calendar-gregorian-from-absolute
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2287 (funcall toabs (list month day year)))))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2288 (if (calendar-date-is-visible-p date)
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2289 date)))
258266315e25 (calendar-nongregorian-visible-p): New function.
Glenn Morris <rgm@gnu.org>
parents: 93492
diff changeset
2290
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2291 (defun calendar-date-is-valid-p (date)
60922
4e6ed80c0af2 * calendar/calendar.el: Replace `legal' with `valid'.
Werner LEMBERG <wl@gnu.org>
parents: 60649
diff changeset
2292 "Return t if DATE is a valid date."
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2293 (let ((month (calendar-extract-month date))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2294 (day (calendar-extract-day date))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2295 (year (calendar-extract-year date)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 (and (<= 1 month) (<= month 12)
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2297 ;; (calendar-read-date t) used to return a date with day = nil.
70581
1eaae4fee224 (calendar-basic-setup): Set day to 1 in
Glenn Morris <rgm@gnu.org>
parents: 69356
diff changeset
2298 ;; Should not be valid (?), since many funcs prob assume integer.
1eaae4fee224 (calendar-basic-setup): Set day to 1 in
Glenn Morris <rgm@gnu.org>
parents: 69356
diff changeset
2299 ;; (calendar-read-date 'noday) returns (month year), which
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2300 ;; currently results in calendar-extract-year returning nil.
70581
1eaae4fee224 (calendar-basic-setup): Set day to 1 in
Glenn Morris <rgm@gnu.org>
parents: 69356
diff changeset
2301 day year (<= 1 day) (<= day (calendar-last-day-of-month month year))
60922
4e6ed80c0af2 * calendar/calendar.el: Replace `legal' with `valid'.
Werner LEMBERG <wl@gnu.org>
parents: 60649
diff changeset
2302 ;; BC dates left as non-valid, to suppress errors from
52723
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2303 ;; complex holiday algorithms not suitable for years BC.
f33d2cba6bb7 (increment-calendar-month, calendar-leap-year-p)
Glenn Morris <rgm@gnu.org>
parents: 52401
diff changeset
2304 ;; Note there are side effects on calendar navigation.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 (<= 1 year))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2307 (define-obsolete-function-alias 'calendar-date-is-legal-p
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2308 'calendar-date-is-valid-p "23.1")
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2309
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310 (defun calendar-date-equal (date1 date2)
31730
719a230f8091 Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31671
diff changeset
2311 "Return t if the DATE1 and DATE2 are the same."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 (and
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2313 (= (calendar-extract-month date1) (calendar-extract-month date2))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2314 (= (calendar-extract-day date1) (calendar-extract-day date2))
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2315 (= (calendar-extract-year date1) (calendar-extract-year date2))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316
93504
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2317 (defun calendar-make-temp-face (attrlist)
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2318 "Return a temporary face based on the attributes in ATTRLIST.
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2319 ATTRLIST is a list with elements of the form :face face :foreground color."
93510
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2320 (let ((attrs attrlist)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2321 faceinfo face temp-face)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2322 ;; Separate :face from the other attributes. Use the last :face
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2323 ;; if there are more than one. FIXME is merging meaningful?
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2324 (while attrs
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2325 (if (eq (car attrs) :face)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2326 (setq face (intern-soft (cadr attrs))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2327 attrs (cddr attrs))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2328 (push (car attrs) faceinfo)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2329 (setq attrs (cdr attrs))))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2330 (or (facep face) (setq face 'default))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2331 (if (not faceinfo)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2332 ;; No attributes to apply, so just use an existing-face.
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2333 face
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2334 ;; FIXME should we be using numbered temp-faces, re-using where poss?
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2335 (setq temp-face
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2336 (make-symbol
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2337 (concat ":caltemp"
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2338 (mapconcat (lambda (sym)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2339 (cond
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2340 ((symbolp sym) (symbol-name sym))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2341 ((numberp sym) (number-to-string sym))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2342 (t sym)))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2343 attrlist ""))))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2344 (make-face temp-face)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2345 (copy-face face temp-face)
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2346 ;; Apply the font aspects.
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2347 (apply 'set-face-attribute temp-face nil (nreverse faceinfo))
343109876a78 (calendar-make-temp-face): Fix previous change. Use the last :face if
Glenn Morris <rgm@gnu.org>
parents: 93504
diff changeset
2348 temp-face)))
93504
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2349
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2350 (defun calendar-mark-visible-date (date &optional mark)
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2351 "Mark DATE in the calendar window with MARK.
49736
dd8404d4fed8 (diary-face-attrs): New custom.
Juanma Barranquero <lekktu@gmail.com>
parents: 49350
diff changeset
2352 MARK is a single-character string, a list of face attributes/values, or a face.
48366
9dad713d153a Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47333
diff changeset
2353 MARK defaults to `diary-entry-marker'."
92530
04183df0b71f (calendar-date-is-legal-p): New obsolete alias.
Juanma Barranquero <lekktu@gmail.com>
parents: 87649
diff changeset
2354 (if (calendar-date-is-valid-p date)
65620
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2355 (with-current-buffer calendar-buffer
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2356 (save-excursion
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2357 (calendar-cursor-to-visible-date date)
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2358 (setq mark
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2359 (or (and (stringp mark) (= (length mark) 1) mark) ; single-char
101899
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2360 ;; The next two use to also check font-lock-mode.
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2361 ;; See comments above diary-entry-marker for why
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2362 ;; this was dropped.
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2363 ;;; (and font-lock-mode
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2364 ;;; (or
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
2365 (and (listp mark) (> (length mark) 0) mark) ; attrs
101899
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2366 (and (facep mark) mark) ; )) face-name
6c501f7469ab (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2367 diary-entry-marker))
65620
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2368 (cond
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
2369 ;; Face or an attr-list that contained a face.
65620
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2370 ((facep mark)
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2371 (overlay-put
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2372 (make-overlay (1- (point)) (1+ (point))) 'face mark))
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2373 ;; Single-character mark, goes after the date.
65620
eae4a82ba77a (mark-visible-calendar-date): Save excursion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65477
diff changeset
2374 ((and (stringp mark) (= (length mark) 1))
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2375 (overlay-put
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2376 (make-overlay (1+ (point)) (+ 2 (point))) 'display mark))
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
2377 (t ; attr list
93504
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2378 (overlay-put
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2379 (make-overlay (1- (point)) (1+ (point))) 'face
9105df157c3a (calendar-make-temp-face): New function.
Glenn Morris <rgm@gnu.org>
parents: 93497
diff changeset
2380 (calendar-make-temp-face mark))))))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2382 (define-obsolete-function-alias 'mark-visible-calendar-date
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2383 'calendar-mark-visible-date "23.1")
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2384
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2385 (defun calendar-star-date ()
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386 "Replace the date under the cursor in the calendar window with asterisks.
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2387 You might want to add this function to `calendar-today-visible-hook'."
93492
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2388 (unless (catch 'found
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2389 (dolist (ol (overlays-at (point)))
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2390 (and (overlay-get ol 'calendar-star)
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2391 (throw 'found t))))
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2392 (let ((ol (make-overlay (1- (point)) (point))))
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2393 (overlay-put ol 'display "*")
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2394 (overlay-put ol 'calendar-star t)
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2395 ;; Use copy-sequence to avoid merging of identical 'display props.
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2396 ;; Use two overlays so as not to mess up
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2397 ;; calendar-cursor-to-nearest-date (and calendar-forward-day).
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2398 (overlay-put (setq ol (make-overlay (point) (1+ (point))))
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2399 'display (copy-sequence "*"))
2fe1b51b8771 (calendar-mode-map): Use calendar-mark-holidays rather than obsolete alias.
Glenn Morris <rgm@gnu.org>
parents: 93464
diff changeset
2400 (overlay-put ol 'calendar-star t))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2401
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2402 (defun calendar-mark-today ()
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2403 "Mark the date under the cursor in the calendar window.
93026
8e1a78482251 (calendar-today-marker, initial-calendar-window-hook)
Glenn Morris <rgm@gnu.org>
parents: 92988
diff changeset
2404 The date is marked with `calendar-today-marker'. You might want to add
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2405 this function to `calendar-today-visible-hook'."
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2406 (calendar-mark-visible-date (calendar-cursor-to-date) calendar-today-marker))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407
104754
ab0d63f460aa (calendar-today): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 103771
diff changeset
2408 ;; FIXME why the car? Almost every usage calls list on the args.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2409 (defun calendar-date-compare (date1 date2)
31730
719a230f8091 Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31671
diff changeset
2410 "Return t if DATE1 is before DATE2, nil otherwise.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411 The actual dates are in the car of DATE1 and DATE2."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (< (calendar-absolute-from-gregorian (car date1))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (calendar-absolute-from-gregorian (car date2))))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415 (defun calendar-date-string (date &optional abbreviate nodayname)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 "A string form of DATE, driven by the variable `calendar-date-display-form'.
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2417 An optional parameter ABBREVIATE, when non-nil, causes the month
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2418 and day names to be abbreviated as specified by
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2419 `calendar-month-abbrev-array' and `calendar-day-abbrev-array',
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2420 respectively. An optional parameter NODAYNAME, when t, omits the
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2421 name of the day of the week."
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2422 (let* ((dayname (unless nodayname (calendar-day-name date abbreviate)))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2423 (month (calendar-extract-month date))
52115
60ffdeba6e0e (diary-file, diary-file-name-prefix)
Glenn Morris <rgm@gnu.org>
parents: 49828
diff changeset
2424 (monthname (calendar-month-name month abbreviate))
93844
bf9ef749c23e Replace int-to-string with number-to-string.
Glenn Morris <rgm@gnu.org>
parents: 93815
diff changeset
2425 (day (number-to-string (calendar-extract-day date)))
bf9ef749c23e Replace int-to-string with number-to-string.
Glenn Morris <rgm@gnu.org>
parents: 93815
diff changeset
2426 (month (number-to-string month))
bf9ef749c23e Replace int-to-string with number-to-string.
Glenn Morris <rgm@gnu.org>
parents: 93815
diff changeset
2427 (year (number-to-string (calendar-extract-year date))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2428 (mapconcat 'eval calendar-date-display-form "")))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2429
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2430 (defun calendar-dayname-on-or-before (dayname date)
31730
719a230f8091 Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31671
diff changeset
2431 "Return the absolute date of the DAYNAME on or before absolute DATE.
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on.
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 Note: Applying this function to d+6 gives us the DAYNAME on or after an
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435 absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2436 absolute date d, applying it to d-1 gives the DAYNAME previous to absolute
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2437 date d, and applying it to d+7 gives the DAYNAME following absolute date d."
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 (- date (% (- date dayname) 7)))
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2440 (defun calendar-nth-named-absday (n dayname month year &optional day)
94454
0246f8c8f19e (calendar-nth-named-absday, calendar-nth-named-day): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94311
diff changeset
2441 "Absolute date of the Nth DAYNAME after/before MONTH YEAR DAY.
0246f8c8f19e (calendar-nth-named-absday, calendar-nth-named-day): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94311
diff changeset
2442 A DAYNAME of 0 means Sunday, 1 means Monday, and so on.
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2443 If N>0, return the Nth DAYNAME after MONTH DAY, YEAR (inclusive).
94454
0246f8c8f19e (calendar-nth-named-absday, calendar-nth-named-day): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94311
diff changeset
2444 If N<0, return the Nth DAYNAME before MONTH DAY, YEAR (inclusive).
0246f8c8f19e (calendar-nth-named-absday, calendar-nth-named-day): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94311
diff changeset
2445 DAY defaults to 1 if N>0, and MONTH's last day otherwise."
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2446 (if (> n 0)
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2447 (+ (* 7 (1- n))
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2448 (calendar-dayname-on-or-before
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2449 dayname
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2450 (+ 6 (calendar-absolute-from-gregorian
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2451 (list month (or day 1) year)))))
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2452 (+ (* 7 (1+ n))
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2453 (calendar-dayname-on-or-before
92858
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2454 dayname
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2455 (calendar-absolute-from-gregorian
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2456 (list month
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2457 (or day (calendar-last-day-of-month month year))
7096add7a945 Whitespace only.
Glenn Morris <rgm@gnu.org>
parents: 92844
diff changeset
2458 year))))))
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2459
3865
2c6883d0a1b2 * calendar.el (calendar-version): Update to 5.1. Fixed a variety
Jim Blandy <jimb@redhat.com>
parents: 3778
diff changeset
2460 (defun calendar-nth-named-day (n dayname month year &optional day)
94454
0246f8c8f19e (calendar-nth-named-absday, calendar-nth-named-day): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94311
diff changeset
2461 "Date of the Nth DAYNAME after/before MONTH YEAR DAY.
93528
6fb229e96593 (diary-entry-marker, calendar-today-marker, calendar-holiday-marker)
Glenn Morris <rgm@gnu.org>
parents: 93510
diff changeset
2462 Like `calendar-nth-named-absday', but returns a Gregorian date."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463 (calendar-gregorian-from-absolute
4658
a34bd3ee36ef (solar-holidays): Use new
Paul Eggert <eggert@twinsun.com>
parents: 4652
diff changeset
2464 (calendar-nth-named-absday n dayname month year day)))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2465
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2466 (defun calendar-day-of-year-string (&optional date)
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2467 "String of day number of year of Gregorian DATE.
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2468 Defaults to today's date if DATE is not given."
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2469 (let* ((d (or date (calendar-current-date)))
93808
2c72483f42c9 (diary-view-entries-initially-flag): Rename view-diary-entries-initially.
Glenn Morris <rgm@gnu.org>
parents: 93791
diff changeset
2470 (year (calendar-extract-year d))
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2471 (day (calendar-day-number d))
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2472 (days-remaining (- (calendar-day-number (list 12 31 year)) day)))
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2473 (format "Day %d of %d; %d day%s remaining in the year"
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2474 day year days-remaining (if (= days-remaining 1) "" "s"))))
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2475
93091
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2476 (defun calendar-other-dates (date)
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2477 "Return a list of strings giving Gregorian DATE in other calendars.
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2478 DATE is (month day year). Calendars that do not apply are omitted."
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2479 (let (odate)
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2480 (delq nil
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2481 (list
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2482 (calendar-day-of-year-string date)
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2483 (format "ISO date: %s" (calendar-iso-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2484 (format "Julian date: %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2485 (calendar-julian-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2486 (format "Astronomical (Julian) day number (at noon UTC): %s.0"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2487 (calendar-astro-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2488 (format "Fixed (RD) date: %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2489 (calendar-absolute-from-gregorian date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2490 (format "Hebrew date (before sunset): %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2491 (calendar-hebrew-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2492 (format "Persian date: %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2493 (calendar-persian-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2494 (unless (string-equal
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2495 (setq odate (calendar-islamic-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2496 "")
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2497 (format "Islamic date (before sunset): %s" odate))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2498 (unless (string-equal
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2499 (setq odate (calendar-bahai-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2500 "")
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2501 (format "Baha'i date: %s" odate))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2502 (format "Chinese date: %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2503 (calendar-chinese-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2504 (unless (string-equal
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2505 (setq odate (calendar-coptic-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2506 "")
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2507 (format "Coptic date: %s" odate))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2508 (unless (string-equal
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2509 (setq odate (calendar-ethiopic-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2510 "")
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2511 (format "Ethiopic date: %s" odate))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2512 (unless (string-equal
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2513 (setq odate (calendar-french-date-string date))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2514 "")
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2515 (format "French Revolutionary date: %s" odate))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2516 (format "Mayan date: %s"
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2517 (calendar-mayan-date-string date))))))
b801762e0062 (calendar-other-dates): New function.
Glenn Morris <rgm@gnu.org>
parents: 93043
diff changeset
2518
105933
8f110099da5c Update x-popup-menu declaration.
Glenn Morris <rgm@gnu.org>
parents: 105844
diff changeset
2519 (declare-function x-popup-menu "menu.c" (position menu))
97422
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 96364
diff changeset
2520
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2521 (defun calendar-print-other-dates (&optional event)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2522 "Show dates on other calendars for date under the cursor.
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2523 If called by a mouse-event, pops up a menu with the result."
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2524 (interactive (list last-nonmenu-event))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2525 (let* ((date (calendar-cursor-to-date t event))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2526 (title (format "%s (Gregorian)" (calendar-date-string date)))
96313
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
2527 (others (calendar-other-dates date))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2528 selection)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2529 (if (mouse-event-p event)
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2530 (and (setq selection (cal-menu-x-popup-menu event title
96313
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
2531 (mapcar 'list others)))
96295
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2532 (call-interactively selection))
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2533 (calendar-in-read-only-buffer calendar-other-calendars-buffer
f007f1675fd7 (calendar-date-echo-text): Doc fix. Add default :value for sexp type.
Glenn Morris <rgm@gnu.org>
parents: 96158
diff changeset
2534 (calendar-set-mode-line title)
96313
d0a5d3e21e88 (calendar-intermonth-header, calendar-intermonth-text): Move earlier in file.
Glenn Morris <rgm@gnu.org>
parents: 96295
diff changeset
2535 (insert (mapconcat 'identity others "\n"))))))
22261
329f546a73ec Add function to show equivalent date on all available calendars (in parallel
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 22028
diff changeset
2536
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
2537 (defun calendar-print-day-of-year ()
5694
69471d331d0c (calendar-version): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5272
diff changeset
2538 "Show day number in year/days remaining in year for date under the cursor."
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2539 (interactive)
87170
e50a2e215441 * erc-stamp.el (erc-echo-timestamp):
David Kastrup <dak@gnu.org>
parents: 86493
diff changeset
2540 (message "%s" (calendar-day-of-year-string (calendar-cursor-to-date t))))
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2541
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
2542 (defun calendar-set-mode-line (str)
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
2543 "Set mode line to STR, centered, surrounded by dashes."
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2544 (let* ((edges (window-edges))
54536
934d92d8b496 (calendar-set-mode-line): Use total available mode-line width, rather
Glenn Morris <rgm@gnu.org>
parents: 54128
diff changeset
2545 ;; As per doc of window-width, total visible mode-line length.
92969
bb4fc128d00d (european-calendar-style, calendar-for-loop)
Glenn Morris <rgm@gnu.org>
parents: 92930
diff changeset
2546 (width (- (nth 2 edges) (car edges))))
101938
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
2547 ;; Hack for --daemon. See bug #2199.
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
2548 ;; If no frame exists yet, we have no idea what width to use.
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
2549 (and (= width 10)
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
2550 (not window-system)
0c901689da73 (calendar-window-list): Ignore invisible windows.
Glenn Morris <rgm@gnu.org>
parents: 101910
diff changeset
2551 (setq width (or (getenv "COLUMNS") 80)))
68366
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2552 (setq mode-line-format
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2553 (if buffer-file-name
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2554 `("-" mode-line-modified
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2555 ,(calendar-string-spread (list str) ?- (- width 6))
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2556 "---")
f148491791ae Remove unnecessary leading stars in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67465
diff changeset
2557 (calendar-string-spread (list str) ?- width)))))
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
2558
92551
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2559 (defun calendar-version ()
92697
001682fd0516 (diary-file, hebrew-holidays-1)
Glenn Morris <rgm@gnu.org>
parents: 92681
diff changeset
2560 "Display the Calendar version."
92551
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2561 (interactive)
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2562 (message "GNU Emacs %s" emacs-version))
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2563
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2564 (make-obsolete 'calendar-version 'emacs-version "23.1")
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2565
a9c1d203dd4a (calendar-version): Use emacs-version and make it obsolete. Move to end.
Glenn Morris <rgm@gnu.org>
parents: 92530
diff changeset
2566
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
2567 (run-hooks 'calendar-load-hook)
628
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2568
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2569 (provide 'calendar)
ab209803a494 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2570
65477
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
2571 ;; Local variables:
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
2572 ;; byte-compile-dynamic: t
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
2573 ;; End:
a08c0922f1c4 (calendar-for-loop): Add edebug info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64826
diff changeset
2574
675
85fd29f25c75 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 628
diff changeset
2575 ;;; calendar.el ends here