annotate lisp/=diary-lib.el @ 4824:eaf67474339b

(Fminibuffer_complete_word): GCPRO1 `completion' during calls to Ftry_completion. (read_minibuf): Rewrite change of Sep 14. Save the return value on the history list provided in the form that the value is returned, iff the value is not equal to the front of the history list. (Fread_no_blanks_input): Change DEFUN to allow 2nd arg to be optional. The code was already written correctly.
author Brian Fox <bfox@gnu.org>
date Tue, 05 Oct 1993 01:46:45 +0000
parents 9331a313e498
children 8f055b119428
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; diary.el --- diary functions.
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
2
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
3 ;; Copyright (C) 1989, 1990, 1992 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
4
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
5 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1357
diff changeset
6 ;; Keywords: calendar
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
7
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; GNU Emacs is distributed in the hope that it will be useful,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; but WITHOUT ANY WARRANTY. No author or distributor
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; accepts responsibility to anyone for the consequences of using it
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; or for whether it serves any particular purpose or works at all,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 ;; unless he says so in writing. Refer to the GNU Emacs General Public
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; License for full details.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; Everyone is granted permission to copy, modify and redistribute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; GNU Emacs, but only under the conditions described in the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; GNU Emacs General Public License. A copy of this license is
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; supposed to have been given to you along with GNU Emacs so you
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 ;; can know your rights and responsibilities. It should be in a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 ;; file named COPYING. Among other things, the copyright notice
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 ;; and this notice must be preserved on all copies.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
25 ;;; Commentary:
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
26
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 ;; This collection of functions implements the diary features as described
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 ;; in calendar.el.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 ;; Comments, corrections, and improvements should be sent to
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 ;; Edward M. Reingold Department of Computer Science
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 ;; (217) 333-6733 University of Illinois at Urbana-Champaign
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 ;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 ;; Urbana, Illinois 61801
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
36 ;;; Code:
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
37
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 (require 'calendar)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
39
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
40 ;;;###autoload
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 (defun diary (&optional arg)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 "Generate the diary window for ARG days starting with the current date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 If no argument is provided, the number of days of diary entries is governed
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 by the variable `number-of-diary-entries'. This function is suitable for
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
45 execution in a `.emacs' file."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 (interactive "P")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 (let ((d-file (substitute-in-file-name diary-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 (date (calendar-current-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (if (and d-file (file-exists-p d-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 (if (file-readable-p d-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (list-diary-entries
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (cond
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 (arg (prefix-numeric-value arg))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 ((vectorp number-of-diary-entries)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 (aref number-of-diary-entries (calendar-day-of-week date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (t number-of-diary-entries)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (error "Your diary file is not readable!"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (error "You don't have a diary file!"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (defun view-diary-entries (arg)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 "Prepare and display a buffer with diary entries.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
63 Searches the file named in `diary-file' for entries that
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
64 match ARG days starting with the date indicated by the cursor position
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
65 in the displayed three-month calendar."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (interactive "p")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (let ((d-file (substitute-in-file-name diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (if (and d-file (file-exists-p d-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (if (file-readable-p d-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 (list-diary-entries (or (calendar-cursor-to-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (error "Cursor is not on a date!"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 arg)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (error "Your diary file is not readable!"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (error "You don't have a diary file!"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (autoload 'check-calendar-holidays "holidays"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 "Check the list of holidays for any that occur on DATE.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 The value returned is a list of strings of relevant holiday descriptions.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
79 The holidays are those in the list `calendar-holidays'."
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
80 t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
81
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 (autoload 'calendar-holiday-list "holidays"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 "Form the list of holidays that occur on dates in the calendar window.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
85 The holidays are those in the list `calendar-holidays'."
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
86 t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
87
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
88 (autoload 'diary-french-date "cal-french"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
89 "French calendar equivalent of date diary entry."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
90 t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
91
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
92 (autoload 'diary-mayan-date "cal-mayan"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
93 "Mayan calendar equivalent of date diary entry."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
94 t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
95
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
96 (autoload 'diary-phases-of-moon "lunar" "Moon phases diary entry." t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
97
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
98 (autoload 'diary-sunrise-sunset "solar"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
99 "Local time of sunrise and sunset as a diary entry."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
100 t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
101
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
102 (autoload 'diary-sabbath-candles "solar"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
103 "Local time of candle lighting diary entry--applies if date is a Friday.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
104 No diary entry if there is no sunset on that date."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
105 t)
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
4758
9331a313e498 (diary-syntax-table): Make sure that we use a copy of
Brian Fox <bfox@gnu.org>
parents: 4452
diff changeset
107 (defvar diary-syntax-table (copy-syntax-table (standard-syntax-table))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 "The syntax table used when parsing dates in the diary file.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 It is the standard syntax table used in Fundamental mode, but with the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 syntax of `*' changed to be a word constituent.")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 (modify-syntax-entry ?* "w" diary-syntax-table)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 (defun list-diary-entries (date number)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 "Create and display a buffer containing the relevant lines in diary-file.
1183
170e5a18c4ba entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 958
diff changeset
116 The arguments are DATE and NUMBER; the entries selected are those
170e5a18c4ba entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 958
diff changeset
117 for NUMBER days starting with date DATE. The other entries are hidden
170e5a18c4ba entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 958
diff changeset
118 using selective display.
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 Returns a list of all relevant diary entries found, if any, in order by date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 The list entries have the form ((month day year) string). If the variable
1183
170e5a18c4ba entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 958
diff changeset
122 `diary-list-include-blanks' is t, this list includes a dummy diary entry
170e5a18c4ba entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 958
diff changeset
123 \(consisting of the empty string) for a date with no diary entries.
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 After the list is prepared, the hooks `nongregorian-diary-listing-hook',
4452
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
126 `list-diary-entries-hook', `diary-display-hook', and `diary-hook' are run.
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
127 These hooks have the following distinct roles:
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 `nongregorian-diary-listing-hook' can cull dates from the diary
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 and each included file. Usually used for Hebrew or Islamic
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 diary entries in files. Applied to *each* file.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 `list-diary-entries-hook' adds or manipulates diary entries from
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 external sources. Used, for example, to include diary entries
4452
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
135 from other files or to sort the diary entries. Invoked *once* only,
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
136 before the display hook is run.
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
4452
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
138 `diary-display-hook' does the actual display of information. If this is
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
139 nil, simple-diary-display will be used. Use add-hook to set this to
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
140 fancy-diary-display, if desired. If you want no diary display, use
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
141 add-hook to set this to ignore.
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
142
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
143 `diary-hook' is run last. This can be used for an appointment
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
144 notification function."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (if (< 0 number)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 (let* ((original-date date);; save for possible use in the hooks
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 (old-diary-syntax-table)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (diary-entries-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (date-string (calendar-date-string date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (d-file (substitute-in-file-name diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (message "Preparing diary...")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (let ((diary-buffer (get-file-buffer d-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (set-buffer (if diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 (find-file-noselect d-file t))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (setq selective-display t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (setq selective-display-ellipses nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (setq old-diary-syntax-table (syntax-table))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 (set-syntax-table diary-syntax-table)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 (unwind-protect
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 (let ((buffer-read-only nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 (diary-modified (buffer-modified-p))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (mark (regexp-quote diary-nonmarking-symbol)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 (goto-char (1- (point-max)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 (if (not (looking-at "\^M\\|\n"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (progn
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (forward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (insert-string "\^M")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 (if (not (looking-at "\^M\\|\n"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 (insert-string "\^M"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 (subst-char-in-region (point-min) (point-max) ?\n ?\^M t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (calendar-for-loop i from 1 to number do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (let ((d diary-date-forms)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (month (extract-calendar-month date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (day (extract-calendar-day date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 (year (extract-calendar-year date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 (entry-found (list-sexp-diary-entries date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (car d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (backup (equal (car (car d)) 'backup))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (dayname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (calendar-day-name date) "\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (substring (calendar-day-name date) 0 3) ".?"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 "\\*\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (calendar-month-name month) "\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (substring (calendar-month-name month) 0 3) ".?"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (month (concat "\\*\\|0*" (int-to-string month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 (day (concat "\\*\\|0*" (int-to-string day)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 "\\*\\|0*" (int-to-string year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 (if abbreviated-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 (concat "\\|" (int-to-string (% year 100)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 "\\(\\`\\|\^M\\|\n\\)" mark "?\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 (if backup (re-search-backward "\\<" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (if (and (or (char-equal (preceding-char) ?\^M)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (char-equal (preceding-char) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (not (looking-at " \\|\^I")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 ;; Diary entry that consists only of date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 ;; Found a nonempty diary entry--make it visible and
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 ;; add it to the list.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (setq entry-found t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (let ((entry-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (date-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (re-search-backward "\^M\\|\n\\|\\`")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (setq date-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (re-search-forward "\^M\\|\n" nil t 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (while (looking-at " \\|\^I")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (re-search-forward "\^M\\|\n" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (subst-char-in-region date-start
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (point) ?\^M ?\n t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 (add-to-diary-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 date (buffer-substring entry-start (point)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (setq d (cdr d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 (or entry-found
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 (not diary-list-include-blanks)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 (setq diary-entries-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (append diary-entries-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 (list (list date "")))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 (setq date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 (1+ (calendar-absolute-from-gregorian date))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 (setq entry-found nil)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (set-buffer-modified-p diary-modified))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 (set-syntax-table old-diary-syntax-table))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 (run-hooks 'nongregorian-diary-listing-hook
4452
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
247 'list-diary-entries-hook)
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
248 (if diary-display-hook
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
249 (run-hooks 'diary-display-hook)
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
250 (simple-diary-display))
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
251 (run-hooks 'diary-hook)
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 diary-entries-list))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 (defun include-other-diary-files ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 "Include the diary entries from other diary files with those of diary-file.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
256 This function is suitable for use in `list-diary-entries-hook';
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
257 it enables you to use shared diary files together with your own.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
258 The files included are specified in the diaryfile by lines of this form:
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 #include \"filename\"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 This is recursive; that is, #include directives in diary files thus included
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
261 are obeyed. You can change the `#include' to some other string by
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 changing the variable `diary-include-string'."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (while (re-search-forward
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 "\\(\\`\\|\^M\\|\n\\)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (regexp-quote diary-include-string)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 " \"\\([^\"]*\\)\"")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 (let ((diary-file (substitute-in-file-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (buffer-substring (match-beginning 2) (match-end 2))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (diary-list-include-blanks nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 (list-diary-entries-hook 'include-other-diary-files)
4452
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
274 (diary-display-hook 'ignore)
9b4b1220bfe5 (list-diary-entries): Split diary-display-hook into two
Richard M. Stallman <rms@gnu.org>
parents: 4297
diff changeset
275 (diary-hook nil))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (if (file-exists-p diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 (if (file-readable-p diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 (unwind-protect
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 (setq diary-entries-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 (append diary-entries-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 (list-diary-entries original-date number)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 (kill-buffer (get-file-buffer diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 (beep)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 (message "Can't read included diary file %s" diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 (sleep-for 2))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 (beep)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 (message "Can't find included diary file %s" diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 (sleep-for 2))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (goto-char (point-min)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 (defun simple-diary-display ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 "Display the diary buffer if there are any relevant entries or holidays."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 (let* ((holiday-list (if holidays-in-diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 (check-calendar-holidays original-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (msg (format "No diary entries for %s %s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (concat date-string (if holiday-list ":" ""))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 (mapconcat 'identity holiday-list "; "))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 (if (or (not diary-entries-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 (and (not (cdr diary-entries-list))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (string-equal (car (cdr (car diary-entries-list))) "")))
778
cd00bdacc17b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
301 (if (<= (length msg) (frame-width))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 (message msg)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 (set-buffer (get-buffer-create holiday-buffer))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (setq buffer-read-only nil)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
305 (calendar-set-mode-line date-string)
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (erase-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 (insert (mapconcat 'identity holiday-list "\n"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (set-buffer-modified-p nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (setq buffer-read-only t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (display-buffer holiday-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 (message "No diary entries for %s" date-string))
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
313 (calendar-set-mode-line
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
314 (concat "Diary for " date-string
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
315 (if holiday-list ": " "")
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
316 (mapconcat 'identity holiday-list "; ")))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 (display-buffer (get-file-buffer d-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 (message "Preparing diary...done"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 (defun fancy-diary-display ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 "Prepare a diary buffer with relevant entries in a fancy, noneditable form.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
322 This function is provided for optional use as the `diary-display-hook'."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 (if (or (not diary-entries-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 (and (not (cdr diary-entries-list))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 (string-equal (car (cdr (car diary-entries-list))) "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 (let* ((holiday-list (if holidays-in-diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 (check-calendar-holidays original-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 (msg (format "No diary entries for %s %s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 (concat date-string (if holiday-list ":" ""))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 (mapconcat 'identity holiday-list "; "))))
778
cd00bdacc17b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
331 (if (<= (length msg) (frame-width))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 (message msg)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 (set-buffer (get-buffer-create holiday-buffer))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (setq buffer-read-only nil)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
335 (calendar-set-mode-line date-string)
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 (erase-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 (insert (mapconcat 'identity holiday-list "\n"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 (set-buffer-modified-p nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 (setq buffer-read-only t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 (display-buffer holiday-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 (message "No diary entries for %s" date-string)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 (save-excursion;; Turn off selective-display in the diary file's buffer.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 (set-buffer (get-file-buffer (substitute-in-file-name diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 (let ((diary-modified (buffer-modified-p)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 (subst-char-in-region (point-min) (point-max) ?\^M ?\n t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 (setq selective-display nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 (kill-local-variable 'mode-line-format)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 (set-buffer-modified-p diary-modified)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 (save-excursion;; Prepare the fancy diary buffer.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 (set-buffer (get-buffer-create fancy-diary-buffer))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 (setq buffer-read-only nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 (make-local-variable 'mode-line-format)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
354 (calendar-set-mode-line "Diary Entries")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 (erase-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 (let ((entry-list diary-entries-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 (holiday-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 (holiday-list-last-month 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 (holiday-list-last-year 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 (date (list 0 0 0)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 (while entry-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 (if (not (calendar-date-equal date (car (car entry-list))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 (progn
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 (setq date (car (car entry-list)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 (and holidays-in-diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 (calendar-date-compare
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 (list (list holiday-list-last-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 (calendar-last-day-of-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 holiday-list-last-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 holiday-list-last-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 holiday-list-last-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 (list date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 ;; We need to get the holidays for the next 3 months.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 (setq holiday-list-last-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 (extract-calendar-month date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 (setq holiday-list-last-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 (extract-calendar-year date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 (increment-calendar-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 holiday-list-last-month holiday-list-last-year 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 (setq holiday-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 (let ((displayed-month holiday-list-last-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 (displayed-year holiday-list-last-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 (calendar-holiday-list)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 (increment-calendar-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 holiday-list-last-month holiday-list-last-year 1))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 (let* ((date-string (calendar-date-string date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 (date-holiday-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 (let ((h holiday-list)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 (d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 ;; Make a list of all holidays for date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 (while h
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 (if (calendar-date-equal date (car (car h)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 (setq d (append d (cdr (car h)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (setq h (cdr h)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 (insert (if (= (point) (point-min)) "" ?\n) date-string)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 (if date-holiday-list (insert ": "))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 (let ((l (current-column)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 (insert (mapconcat 'identity date-holiday-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 (concat "\n" (make-string l ? )))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 (let ((l (current-column)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 (insert ?\n (make-string l ?=) ?\n)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 (if (< 0 (length (car (cdr (car entry-list)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 (insert (car (cdr (car entry-list))) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 (setq entry-list (cdr entry-list))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 (set-buffer-modified-p nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 (setq buffer-read-only t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 (display-buffer fancy-diary-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 (message "Preparing diary...done"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 (defun print-diary-entries ()
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
413 "Print a hard copy of the diary display.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
414
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
415 If the simple diary display is being used, prepare a temp buffer with the
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
416 visible lines of the diary buffer, add a heading line composed from the mode
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
417 line, print the temp buffer, and destroy it.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
418
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
419 If the fancy diary display is being used, just print the buffer.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
420
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
421 The hooks given by the variable `print-diary-entries-hook' are called to do
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
422 the actual printing."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 (interactive)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
424 (if (bufferp (get-buffer fancy-diary-buffer))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
425 (save-excursion
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
426 (set-buffer (get-buffer fancy-diary-buffer))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
427 (run-hooks 'print-diary-entries-hook))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
428 (let ((diary-buffer
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
429 (get-file-buffer (substitute-in-file-name diary-file))))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
430 (if diary-buffer
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
431 (let ((temp-buffer (get-buffer-create "*Printable Diary Entries*"))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
432 (heading))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
433 (save-excursion
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
434 (set-buffer diary-buffer)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
435 (setq heading
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
436 (if (not (stringp mode-line-format))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
437 "All Diary Entries"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
438 (string-match "^-*\\([^-].*[^-]\\)-*$" mode-line-format)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
439 (substring mode-line-format
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
440 (match-beginning 1) (match-end 1))))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
441 (copy-to-buffer temp-buffer (point-min) (point-max))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
442 (set-buffer temp-buffer)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
443 (while (re-search-forward "\^M.*$" nil t)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
444 (replace-match ""))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
445 (goto-char (point-min))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
446 (insert heading "\n"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
447 (make-string (length heading) ?=) "\n")
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
448 (run-hooks 'print-diary-entries-hook)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
449 (kill-buffer temp-buffer)))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
450 (error "You don't have a diary buffer!")))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 (defun show-all-diary-entries ()
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
453 "Show all of the diary entries in the diary file.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
454 This function gets rid of the selective display of the diary file so that
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 all entries, not just some, are visible. If there is no diary buffer, one
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 is created."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 (interactive)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 (let ((d-file (substitute-in-file-name diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 (if (and d-file (file-exists-p d-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 (if (file-readable-p d-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 (let ((diary-buffer (get-file-buffer d-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 (set-buffer (if diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 diary-buffer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 (find-file-noselect d-file t)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 (let ((buffer-read-only nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 (diary-modified (buffer-modified-p)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 (subst-char-in-region (point-min) (point-max) ?\^M ?\n t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 (setq selective-display nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 (make-local-variable 'mode-line-format)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
471 (setq mode-line-format default-mode-line-format)
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (display-buffer (current-buffer))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 (set-buffer-modified-p diary-modified))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 (error "Your diary file is not readable!"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 (error "You don't have a diary file!"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 (defun diary-name-pattern (string-array &optional fullname)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 "Convert an STRING-ARRAY, an array of strings to a pattern.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 The pattern will match any of the strings, either entirely or abbreviated
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 to three characters. An abbreviated form will match with or without a period;
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 If the optional FULLNAME is t, abbreviations will not match, just the full
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 name."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 (let ((pattern ""))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 (calendar-for-loop i from 0 to (1- (length string-array)) do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 (setq pattern
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 pattern
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 (if (string-equal pattern "") "" "\\|")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 (aref string-array i)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 (if fullname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 ""
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 "\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 (substring (aref string-array i) 0 3) ".?")))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 pattern))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 (defun mark-diary-entries ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 "Mark days in the calendar window that have diary entries.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
499 Each entry in the diary file visible in the calendar window is marked.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
500 After the entries are marked, the hooks `nongregorian-diary-marking-hook' and
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 `mark-diary-entries-hook' are run."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 (interactive)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 (setq mark-diary-entries-in-calendar t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 (let ((d-file (substitute-in-file-name diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 (if (and d-file (file-exists-p d-file))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 (if (file-readable-p d-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 (message "Marking diary entries...")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 (set-buffer (find-file-noselect d-file t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 (let ((d diary-date-forms)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 (old-diary-syntax-table))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 (setq old-diary-syntax-table (syntax-table))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 (set-syntax-table diary-syntax-table)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 (car d)));; ignore 'backup directive
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 (dayname (diary-name-pattern calendar-day-name-array))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 (diary-name-pattern calendar-month-name-array)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 "\\|\\*"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 (month "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 (day "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 (year "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 (l (length date-form))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 (d-name-pos (- l (length (memq 'dayname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 (d-name-pos (if (/= l d-name-pos) (+ 2 d-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 (m-name-pos (- l (length (memq 'monthname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 (m-name-pos (if (/= l m-name-pos) (+ 2 m-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 (d-pos (- l (length (memq 'day date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 (d-pos (if (/= l d-pos) (+ 2 d-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 (m-pos (- l (length (memq 'month date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 (m-pos (if (/= l m-pos) (+ 2 m-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 (y-pos (- l (length (memq 'year date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 (y-pos (if (/= l y-pos) (+ 2 y-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 "\\(\\`\\|\^M\\|\n\\)\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 (let* ((dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 (if d-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 (match-beginning d-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 (match-end d-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 (mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 (if m-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 (match-beginning m-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 (match-end m-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 (mm (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 (if m-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 (match-beginning m-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 (match-end m-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 (dd (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 (if d-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 (match-beginning d-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 (match-end d-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 (y-str (if y-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 (match-beginning y-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 (match-end y-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 (yy (if (not y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 (if (and (= (length y-str) 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 abbreviated-calendar-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 (let* ((current-y
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 (extract-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 (calendar-current-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 (y (+ (string-to-int y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 (* 100
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 (/ current-y 100)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 (if (> (- y current-y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 (- y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 (if (> (- current-y y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 (+ y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 (string-to-int y-str)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 (if dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 (mark-calendar-days-named
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 (cdr (assoc (capitalize (substring dd-name 0 3))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 calendar-day-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 '(lambda (x) (substring x 0 3))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 (if mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 (if (string-equal mm-name "*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 (setq mm 0)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 (setq mm
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 (cdr (assoc
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 (capitalize
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 (substring mm-name 0 3))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 calendar-month-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 1
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605 '(lambda (x) (substring x 0 3)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 )))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 (mark-calendar-date-pattern mm dd yy))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608 (setq d (cdr d))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 (mark-sexp-diary-entries)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 (run-hooks 'nongregorian-diary-marking-hook
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 'mark-diary-entries-hook)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 (set-syntax-table old-diary-syntax-table)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 (message "Marking diary entries...done")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614 (error "Your diary file is not readable!"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615 (error "You don't have a diary file!"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617 (defun mark-sexp-diary-entries ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 "Mark days in the calendar window that have sexp diary entries.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
619 Each entry in the diary file (or included files) visible in the calendar window
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
620 is marked. See the documentation for the function `list-sexp-diary-entries'."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621 (let* ((sexp-mark (regexp-quote sexp-diary-entry-symbol))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 (s-entry (concat "\\(\\`\\|\^M\\|\n\\)" sexp-mark "("))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 (m)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 (y)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 (first-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 (last-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 (set-buffer calendar-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 (setq m displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 (setq y displayed-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 (increment-calendar-month m y -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
632 (setq first-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 (calendar-absolute-from-gregorian (list m 1 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634 (increment-calendar-month m y 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 (setq last-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
636 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 (list m (calendar-last-day-of-month m y) y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
639 (while (re-search-forward s-entry nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 (let ((sexp-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 (sexp)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 (entry)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 (entry-start)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645 (line-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 (forward-sexp)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647 (setq sexp (buffer-substring sexp-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649 (re-search-backward "\^M\\|\n\\|\\`")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 (setq line-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 (forward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 (if (and (or (char-equal (preceding-char) ?\^M)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 (char-equal (preceding-char) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 (not (looking-at " \\|\^I")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 (progn;; Diary entry consists only of the sexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 (setq entry ""))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 (setq entry-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 (re-search-forward "\^M\\|\n" nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 (while (looking-at " \\|\^I")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 (re-search-forward "\^M\\|\n" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 (setq entry (buffer-substring entry-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 (while (string-match "[\^M]" entry)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 (aset entry (match-beginning 0) ?\n )))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 (calendar-for-loop date from first-date to last-date do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 (if (diary-sexp-entry sexp entry
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 (calendar-gregorian-from-absolute date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 (mark-visible-calendar-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 (calendar-gregorian-from-absolute date))))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 (defun mark-included-diary-files ()
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
673 "Mark the diary entries from other diary files with those of the diary file.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
674 This function is suitable for use as the `mark-diary-entries-hook'; it enables
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 you to use shared diary files together with your own. The files included are
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
676 specified in the diary-file by lines of this form:
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 #include \"filename\"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 This is recursive; that is, #include directives in diary files thus included
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
679 are obeyed. You can change the `#include' to some other string by
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 changing the variable `diary-include-string'."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 (while (re-search-forward
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 "\\(\\`\\|\^M\\|\n\\)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 (regexp-quote diary-include-string)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 " \"\\([^\"]*\\)\"")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 (let ((diary-file (substitute-in-file-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 (buffer-substring (match-beginning 2) (match-end 2))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 (mark-diary-entries-hook 'mark-included-diary-files))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 (if (file-exists-p diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 (if (file-readable-p diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 (progn
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 (mark-diary-entries)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 (kill-buffer (get-file-buffer diary-file)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 (beep)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 (message "Can't read included diary file %s" diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 (sleep-for 2))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 (beep)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 (message "Can't find included diary file %s" diary-file)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 (sleep-for 2))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 (goto-char (point-min)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 (defun mark-calendar-days-named (dayname)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 "Mark all dates in the calendar window that are day DAYNAME of the week.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 0 means all Sundays, 1 means all Mondays, and so on."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 (set-buffer calendar-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 (let ((prev-month displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 (prev-year displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 (succ-month displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 (succ-year displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 (last-day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 (day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 (increment-calendar-month succ-month succ-year 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 (increment-calendar-month prev-month prev-year -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 (setq day (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 (calendar-nth-named-day 1 dayname prev-month prev-year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 (setq last-day (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 (calendar-nth-named-day -1 dayname succ-month succ-year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 (while (<= day last-day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 (mark-visible-calendar-date (calendar-gregorian-from-absolute day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 (setq day (+ day 7))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 (defun mark-calendar-date-pattern (month day year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 "Mark all dates in the calendar window that conform to MONTH/DAY/YEAR.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
727 A value of 0 in any position is a wildcard."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 (set-buffer calendar-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 (let ((m displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 (y displayed-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 (increment-calendar-month m y -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 (calendar-for-loop i from 0 to 2 do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 (mark-calendar-month m y month day year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 (increment-calendar-month m y 1)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 (defun mark-calendar-month (month year p-month p-day p-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 "Mark dates in the MONTH/YEAR that conform to pattern P-MONTH/P_DAY/P-YEAR.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
739 A value of 0 in any position of the pattern is a wildcard."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 (if (or (and (= month p-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 (or (= p-year 0) (= year p-year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 (and (= p-month 0)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 (or (= p-year 0) (= year p-year))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 (if (= p-day 0)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 (calendar-for-loop
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 i from 1 to (calendar-last-day-of-month month year) do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 (mark-visible-calendar-date (list month i year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 (mark-visible-calendar-date (list month p-day year)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
750 (defun sort-diary-entries ()
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
751 "Sort the list of diary entries by time of day."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
752 (setq diary-entries-list (sort diary-entries-list 'diary-entry-compare)))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
753
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 (defun diary-entry-compare (e1 e2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 "Returns t if E1 is earlier than E2."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 (or (calendar-date-compare e1 e2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 (and (calendar-date-equal (car e1) (car e2))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 (< (diary-entry-time (car (cdr e1)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 (diary-entry-time (car (cdr e2)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 (defun diary-entry-time (s)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 "Time at the beginning of the string S in a military-style integer.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 For example, returns 1325 for 1:25pm. Returns -9999 if no time is recognized.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 The recognized forms are XXXX or X:XX or XX:XX (military time), XXam or XXpm,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 and XX:XXam or XX:XXpm."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 (cond ((string-match;; Military time
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 "^ *\\([0-9]?[0-9]\\):?\\([0-9][0-9]\\)\\(\\>\\|[^ap]\\)" s)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 (+ (* 100 (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 (substring s (match-beginning 1) (match-end 1))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 (string-to-int (substring s (match-beginning 2) (match-end 2)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 ((string-match;; Hour only XXam or XXpm
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 "^ *\\([0-9]?[0-9]\\)\\([ap]\\)m\\>" s)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 (+ (* 100 (% (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 (substring s (match-beginning 1) (match-end 1)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 12))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 (if (string-equal "a"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 (substring s (match-beginning 2) (match-end 2)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 0 1200)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 ((string-match;; Hour and minute XX:XXam or XX:XXpm
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 "^ *\\([0-9]?[0-9]\\):\\([0-9][0-9]\\)\\([ap]\\)m\\>" s)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 (+ (* 100 (% (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 (substring s (match-beginning 1) (match-end 1)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 12))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 (string-to-int (substring s (match-beginning 2) (match-end 2)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 (if (string-equal "a"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 (substring s (match-beginning 3) (match-end 3)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 0 1200)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 (t -9999)));; Unrecognizable
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 (defun list-hebrew-diary-entries ()
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
791 "Add any Hebrew date entries from the diary file to `diary-entries-list'.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
792 Hebrew date diary entries must be prefaced by `hebrew-diary-entry-symbol'
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
793 (normally an `H'). The same diary date forms govern the style of the Hebrew
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794 calendar entries, except that the Hebrew month names must be spelled in full.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795 The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 Adar I and 13 being Adar II; you must use `Adar I' if you want Adar of a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 common Hebrew year. If a Hebrew date diary entry begins with a
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
798 `diary-nonmarking-symbol', the entry will appear in the diary listing, but will
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 not be marked in the calendar. This function is provided for use with the
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
800 `nongregorian-diary-listing-hook'."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 (if (< 0 number)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 (let ((buffer-read-only nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 (diary-modified (buffer-modified-p))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 (gdate original-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 (mark (regexp-quote diary-nonmarking-symbol)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 (calendar-for-loop i from 1 to number do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 (let* ((d diary-date-forms)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 (hdate (calendar-hebrew-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 (calendar-absolute-from-gregorian gdate)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 (month (extract-calendar-month hdate))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 (day (extract-calendar-day hdate))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 (year (extract-calendar-year hdate)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 (car d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 (backup (equal (car (car d)) 'backup))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 (dayname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 (calendar-day-name gdate) "\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 (substring (calendar-day-name gdate) 0 3) ".?"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823 (calendar-month-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 calendar-hebrew-month-name-array-leap-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 "\\*\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 (calendar-month-name month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 (month (concat "\\*\\|0*" (int-to-string month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 (day (concat "\\*\\|0*" (int-to-string day)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 (year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 "\\*\\|0*" (int-to-string year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 (if abbreviated-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 (concat "\\|" (int-to-string (% year 100)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 "\\(\\`\\|\^M\\|\n\\)" mark "?"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 (regexp-quote hebrew-diary-entry-symbol)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841 "\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 (if backup (re-search-backward "\\<" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 (if (and (or (char-equal (preceding-char) ?\^M)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 (char-equal (preceding-char) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 (not (looking-at " \\|\^I")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 ;; Diary entry that consists only of date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 ;; Found a nonempty diary entry--make it visible and
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 ;; add it to the list.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 (let ((entry-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 (date-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 (re-search-backward "\^M\\|\n\\|\\`")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 (setq date-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 (re-search-forward "\^M\\|\n" nil t 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 (while (looking-at " \\|\^I")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 (re-search-forward "\^M\\|\n" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 (subst-char-in-region date-start (point) ?\^M ?\n t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 (add-to-diary-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 gdate (buffer-substring entry-start (point)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 (setq d (cdr d))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 (setq gdate
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 (1+ (calendar-absolute-from-gregorian gdate)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 (set-buffer-modified-p diary-modified))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 (goto-char (point-min))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 (defun mark-hebrew-diary-entries ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
874 "Mark days in the calendar window that have Hebrew date diary entries.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 Each entry in diary-file (or included files) visible in the calendar window
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 is marked. Hebrew date entries are prefaced by a hebrew-diary-entry-symbol
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
877 (normally an `H'). The same diary-date-forms govern the style of the Hebrew
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 calendar entries, except that the Hebrew month names must be spelled in full.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 Adar I and 13 being Adar II; you must use `Adar I' if you want Adar of a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881 common Hebrew year. Hebrew date diary entries that begin with a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 diary-nonmarking symbol will not be marked in the calendar. This function
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883 is provided for use as part of the nongregorian-diary-marking-hook."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 (let ((d diary-date-forms))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 (car d)));; ignore 'backup directive
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 (dayname (diary-name-pattern calendar-day-name-array))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 (diary-name-pattern calendar-hebrew-month-name-array-leap-year t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 "\\|\\*"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 (month "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 (day "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897 (year "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 (l (length date-form))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 (d-name-pos (- l (length (memq 'dayname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 (d-name-pos (if (/= l d-name-pos) (+ 2 d-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 (m-name-pos (- l (length (memq 'monthname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 (m-name-pos (if (/= l m-name-pos) (+ 2 m-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903 (d-pos (- l (length (memq 'day date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 (d-pos (if (/= l d-pos) (+ 2 d-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 (m-pos (- l (length (memq 'month date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 (m-pos (if (/= l m-pos) (+ 2 m-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 (y-pos (- l (length (memq 'year date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 (y-pos (if (/= l y-pos) (+ 2 y-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 "\\(\\`\\|\^M\\|\n\\)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 (regexp-quote hebrew-diary-entry-symbol)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 "\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 (let* ((dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 (if d-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 (match-beginning d-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 (match-end d-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 (mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 (if m-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 (match-beginning m-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
928 (match-end m-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 (mm (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 (if m-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 (match-beginning m-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
933 (match-end m-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 (dd (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 (if d-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
938 (match-beginning d-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 (match-end d-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941 (y-str (if y-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
942 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 (match-beginning y-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
944 (match-end y-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945 (yy (if (not y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
946 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947 (if (and (= (length y-str) 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 abbreviated-calendar-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949 (let* ((current-y
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
950 (extract-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 (calendar-hebrew-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953 (calendar-current-date)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 (y (+ (string-to-int y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955 (* 100 (/ current-y 100)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956 (if (> (- y current-y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 (- y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 (if (> (- current-y y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959 (+ y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961 (string-to-int y-str)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 (if dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963 (mark-calendar-days-named
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 (cdr (assoc (capitalize (substring dd-name 0 3))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 calendar-day-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 '(lambda (x) (substring x 0 3))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 (if mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 (if (string-equal mm-name "*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 (setq mm 0)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
972 (setq
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973 mm
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 (cdr
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975 (assoc
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976 (capitalize mm-name)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978 calendar-hebrew-month-name-array-leap-year))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979 (mark-hebrew-calendar-date-pattern mm dd yy)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
980 (setq d (cdr d)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
981
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 (defun mark-hebrew-calendar-date-pattern (month day year)
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
983 "Mark dates in calendar window that conform to Hebrew date MONTH/DAY/YEAR.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
984 A value of 0 in any position is a wildcard."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 (set-buffer calendar-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 (if (and (/= 0 month) (/= 0 day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 (if (/= 0 year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 ;; Fully specified Hebrew date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 (let ((date (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 (calendar-absolute-from-hebrew
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992 (list month day year)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 (if (calendar-date-is-visible-p date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
994 (mark-visible-calendar-date date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995 ;; Month and day in any year--this taken from the holiday stuff.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 (if (memq displayed-month;; This test is only to speed things up a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 (list ;; bit; it works fine without the test too.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 (if (< 11 month) (- month 11) (+ month 1))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999 (if (< 10 month) (- month 10) (+ month 2))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 (if (< 9 month) (- month 9) (+ month 3))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 (if (< 8 month) (- month 8) (+ month 4))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 (if (< 7 month) (- month 7) (+ month 5))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003 (let ((m1 displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 (y1 displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 (m2 displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006 (y2 displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007 (year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1008 (increment-calendar-month m1 y1 -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 (increment-calendar-month m2 y2 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 (let* ((start-date (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 (list m1 1 y1)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012 (end-date (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1013 (list m2
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1014 (calendar-last-day-of-month m2 y2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1015 y2)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 (hebrew-start
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017 (calendar-hebrew-from-absolute start-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018 (hebrew-end (calendar-hebrew-from-absolute end-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1019 (hebrew-y1 (extract-calendar-year hebrew-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020 (hebrew-y2 (extract-calendar-year hebrew-end)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 (setq year (if (< 6 month) hebrew-y2 hebrew-y1))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 (let ((date (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 (calendar-absolute-from-hebrew
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1024 (list month day year)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025 (if (calendar-date-is-visible-p date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 (mark-visible-calendar-date date)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027 ;; Not one of the simple cases--check all visible dates for match.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1028 ;; Actually, the following code takes care of ALL of the cases, but
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1029 ;; it's much too slow to be used for the simple (common) cases.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1030 (let ((m displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031 (y displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 (first-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033 (last-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1034 (increment-calendar-month m y -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035 (setq first-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 (list m 1 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 (increment-calendar-month m y 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039 (setq last-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 (list m (calendar-last-day-of-month m y) y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 (calendar-for-loop date from first-date to last-date do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 (let* ((h-date (calendar-hebrew-from-absolute date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 (h-month (extract-calendar-month h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 (h-day (extract-calendar-day h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 (h-year (extract-calendar-year h-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 (and (or (zerop month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 (= month h-month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 (or (zerop day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 (= day h-day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 (or (zerop year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 (= year h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 (mark-visible-calendar-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 (calendar-gregorian-from-absolute date)))))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056 (defun list-sexp-diary-entries (date)
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1057 "Add sexp entries for DATE from the diary file to `diary-entries-list'.
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1058 Also, Make them visible in the diary file. Returns t if any entries were
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1059 found.
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1061 Sexp diary entries must be prefaced by a `sexp-diary-entry-symbol' (normally
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062 `%%'). The form of a sexp diary entry is
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064 %%(SEXP) ENTRY
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 Both ENTRY and DATE are globally available when the SEXP is evaluated. If the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067 SEXP yields the value nil, the diary entry does not apply. If it yields a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 non-nil value, ENTRY will be taken to apply to DATE; if the non-nil value is a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069 string, that string will be the diary entry in the fancy diary display.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1070
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071 For example, the following diary entry will apply to the 21st of the month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 if it is a weekday and the Friday before if the 21st is on a weekend:
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 &%%(let ((dayname (calendar-day-of-week date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1075 (day (extract-calendar-day date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 (or
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 (and (= day 21) (memq dayname '(1 2 3 4 5)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 (and (memq day '(19 20)) (= dayname 5)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079 ) UIUC pay checks deposited
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 A number of built-in functions are available for this type of diary entry:
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 %%(diary-float MONTH DAYNAME N) text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 Entry will appear on the Nth DAYNAME of MONTH.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 (DAYNAME=0 means Sunday, 1 means Monday, and so on;
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 if N is negative it counts backward from the end of
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1087 the month. MONTH can be a list of months, a single
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088 month, or t to specify all months.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1090 %%(diary-block M1 D1 Y1 M2 D2 Y2) text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 Entry will appear on dates between M1/D1/Y1 and M2/D2/Y2,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1092 inclusive. (If `european-calendar-style' is t, the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1093 order of the parameters should be changed to D1, M1, Y1,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1094 D2, M2, Y2.)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1095
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1096 %%(diary-anniversary MONTH DAY YEAR) text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1097 Entry will appear on anniversary dates of MONTH DAY, YEAR.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1098 (If `european-calendar-style' is t, the order of the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1099 parameters should be changed to DAY, MONTH, YEAR.) Text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1100 can contain %d or %d%s; %d will be replaced by the number
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1101 of years since the MONTH DAY, YEAR and %s will be replaced
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1102 by the ordinal ending of that number (that is, `st', `nd',
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1103 `rd' or `th', as appropriate. The anniversary of February
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 29 is considered to be March 1 in a non-leap year.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106 %%(diary-cyclic N MONTH DAY YEAR) text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1107 Entry will appear every N days, starting MONTH DAY, YEAR.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 (If `european-calendar-style' is t, the order of the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 parameters should be changed to N, DAY, MONTH, YEAR.) Text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 can contain %d or %d%s; %d will be replaced by the number
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 of repetitions since the MONTH DAY, YEAR and %s will
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112 be replaced by the ordinal ending of that number (that is,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 `st', `nd', `rd' or `th', as appropriate.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115 %%(diary-day-of-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 Diary entries giving the day of the year and the number of
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 days remaining in the year will be made every day. Note
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1118 that since there is no text, it makes sense only if the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 %%(diary-iso-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122 Diary entries giving the corresponding ISO commercial date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 will be made every day. Note that since there is no text,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 it makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 %%(diary-french-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1127 Diary entries giving the corresponding French Revolutionary
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 date will be made every day. Note that since there is no
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129 text, it makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1131 %%(diary-islamic-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132 Diary entries giving the corresponding Islamic date will be
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 made every day. Note that since there is no text, it
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 %%(diary-hebrew-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 Diary entries giving the corresponding Hebrew date will be
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 made every day. Note that since there is no text, it
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1141 %%(diary-astro-day-number) Diary entries giving the corresponding
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1142 astronomical (Julian) day number will be made every day.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1143 Note that since there is no text, it makes sense only if the
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1144 fancy diary display is used.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1145
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1146 %%(diary-julian-date) Diary entries giving the corresponding
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1147 Julian date will be made every day. Note that since
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1148 there is no text, it makes sense only if the fancy diary
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1149 display is used.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1150
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1151 %%(diary-sunrise-sunset)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1152 Diary entries giving the local times of sunrise and sunset
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1153 will be made every day. Note that since there is no text,
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1154 it makes sense only if the fancy diary display is used.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1155 Floating point required.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1156
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1157 %%(diary-phases-of-moon)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1158 Diary entries giving the times of the phases of the moon
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1159 will be when appropriate. Note that since there is no text,
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1160 it makes sense only if the fancy diary display is used.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1161 Floating point required.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1162
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163 %%(diary-yahrzeit MONTH DAY YEAR) text
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1164 Text is assumed to be the name of the person; the date is
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 the date of death on the *civil* calendar. The diary entry
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 will appear on the proper Hebrew-date anniversary and on the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167 day before. (If `european-calendar-style' is t, the order
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 of the parameters should be changed to DAY, MONTH, YEAR.)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1170 %%(diary-sunrise-sunset)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1171 Diary entries giving the local times of Sabbath candle
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1172 lighting will be made every day. Note that since there is
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1173 no text, it makes sense only if the fancy diary display is
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1174 used. Floating point required.
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1175
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 %%(diary-rosh-hodesh)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 Diary entries will be made on the dates of Rosh Hodesh on
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 the Hebrew calendar. Note that since there is no text, it
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1181 %%(diary-parasha)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182 Diary entries giving the weekly parasha will be made on
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 every Saturday. Note that since there is no text, it
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 %%(diary-omer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187 Diary entries giving the omer count will be made every day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 from Passover to Shavuoth. Note that since there is no text,
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 it makes sense only if the fancy diary display is used.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 Marking these entries is *extremely* time consuming, so these entries are
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 best if they are nonmarking."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 (let* ((mark (regexp-quote diary-nonmarking-symbol))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 (sexp-mark (regexp-quote sexp-diary-entry-symbol))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 (s-entry (concat "\\(\\`\\|\^M\\|\n\\)" mark "?" sexp-mark "("))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 (entry-found))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198 (while (re-search-forward s-entry nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 (let ((sexp-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 (sexp)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 (entry)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 (entry-start)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 (line-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 (forward-sexp)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 (setq sexp (buffer-substring sexp-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 (re-search-backward "\^M\\|\n\\|\\`")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 (setq line-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 (forward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 (if (and (or (char-equal (preceding-char) ?\^M)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212 (char-equal (preceding-char) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 (not (looking-at " \\|\^I")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 (progn;; Diary entry consists only of the sexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216 (setq entry ""))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 (setq entry-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218 (re-search-forward "\^M\\|\n" nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219 (while (looking-at " \\|\^I")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220 (re-search-forward "\^M\\|\n" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222 (setq entry (buffer-substring entry-start (point)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 (while (string-match "[\^M]" entry)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224 (aset entry (match-beginning 0) ?\n )))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225 (let ((diary-entry (diary-sexp-entry sexp entry date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 (if diary-entry
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1227 (subst-char-in-region line-start (point) ?\^M ?\n t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 (add-to-diary-list date diary-entry)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 (setq entry-found (or entry-found diary-entry)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1230 entry-found))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232 (defun diary-sexp-entry (sexp entry date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1233 "Process a SEXP diary ENTRY for DATE."
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1234 (let ((result (if calendar-debug-sexp
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1235 (let ((stack-trace-on-error t))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1236 (eval (car (read-from-string sexp))))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1237 (condition-case nil
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1238 (eval (car (read-from-string sexp)))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1239 (error
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1240 (beep)
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1241 (message "Bad sexp at line %d in %s: %s"
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1242 (save-excursion
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1243 (save-restriction
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1244 (narrow-to-region 1 (point))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1245 (goto-char (point-min))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1246 (let ((lines 1))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1247 (while (re-search-forward "\n\\|\^M" nil t)
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1248 (setq lines (1+ lines)))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1249 lines)))
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1250 diary-file sexp)
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1251 (sleep-for 2))))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252 (if (stringp result)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1253 result
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 (if result
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1255 entry
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1256 nil))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1257
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 (defun diary-block (m1 d1 y1 m2 d2 y2)
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1259 "Block diary entry.
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1260 Entry applies if date is between two dates. Order of the parameters is
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1261 M1, D1, Y1, M2, D2, Y2 `european-calendar-style' is nil, and
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262 D1, M1, Y1, D2, M2, Y2 if `european-calendar-style' is t."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 (let ((date1 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264 (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 (list d1 m1 y1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266 (list m1 d1 y1))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 (date2 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268 (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269 (list d2 m2 y2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 (list m2 d2 y2))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271 (d (calendar-absolute-from-gregorian date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 (if (and (<= date1 d) (<= d date2))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273 entry)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 (defun diary-float (month dayname n)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 "Floating diary entry--entry applies if date is the nth dayname of month.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 Parameters are MONTH, DAYNAME, N. MONTH can be a list of months, the constant
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 t, or an integer. The constant t means all months. If N is negative, count
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279 backward from the end of the month."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 (let ((m (extract-calendar-month date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281 (y (extract-calendar-year date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 (if (and
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 (or (and (listp month) (memq m month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 (equal m month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 (eq month t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1286 (calendar-date-equal date (calendar-nth-named-day n dayname m y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 entry)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1288
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 (defun diary-anniversary (month day year)
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1290 "Anniversary diary entry.
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1291 Entry applies if date is the anniversary of MONTH, DAY, YEAR if
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1292 `european-calendar-style' is nil, and DAY, MONTH, YEAR if
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1293 `european-calendar-style' is t. Diary entry can contain `%d' or `%d%s'; the
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1294 %d will be replaced by the number of years since the MONTH DAY, YEAR and the
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295 %s will be replaced by the ordinal ending of that number (that is, `st', `nd',
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 `rd' or `th', as appropriate. The anniversary of February 29 is considered
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297 to be March 1 in non-leap years."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 (let* ((d (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299 month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 (m (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1302 day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1303 month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 (y (extract-calendar-year date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 (diff (- y year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 (if (and (= m 2) (= d 29) (not (calendar-leap-year-p y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 (setq m 3
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 d 1))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 (if (and (> diff 0) (calendar-date-equal (list m d y) date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310 (format entry diff (diary-ordinal-suffix diff)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1311
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 (defun diary-cyclic (n month day year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 "Cycle diary entry--entry applies every N days starting at MONTH, DAY, YEAR.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 If `european-calendar-style' is t, parameters are N, DAY, MONTH, YEAR.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 ENTRY can contain `%d' or `%d%s'; the %d will be replaced by the number of
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316 years since the MONTH DAY, YEAR and the %s will be replaced by the ordinal
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 ending of that number (that is, `st', `nd', `rd' or `th', as appropriate."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 (let* ((d (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 (m (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 (diff (- (calendar-absolute-from-gregorian date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 (list m d year))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 (cycle (/ diff n)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 (if (and (>= diff 0) (zerop (% diff n)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 (format entry cycle (diary-ordinal-suffix cycle)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 (defun diary-ordinal-suffix (n)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 "Ordinal suffix for N. (That is, `st', `nd', `rd', or `th', as appropriate.)"
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1333 (if (or (memq (% n 100) '(11 12 13))
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1334 (< 3 (% n 10)))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 "th"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 (aref ["th" "st" "nd" "rd"] (% n 10))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 (defun diary-day-of-year ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 "Day of year and number of days remaining in the year of date diary entry."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 (let* ((year (extract-calendar-year date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 (day (calendar-day-number date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 (days-remaining (- (calendar-day-number (list 12 31 year)) day)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 (format "Day %d of %d; %d day%s remaining in the year"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 day year days-remaining (if (= days-remaining 1) "" "s"))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 (defun diary-iso-date ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 "ISO calendar equivalent of date diary entry."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 (let ((day (% (calendar-absolute-from-gregorian date) 7))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 (iso-date (calendar-iso-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 (calendar-absolute-from-gregorian date))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 (format "ISO date: Day %s of week %d of %d."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 (if (zerop day) 7 day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 (extract-calendar-month iso-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 (extract-calendar-year iso-date))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 (defun diary-islamic-date ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 "Islamic calendar equivalent of date diary entry."
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1358 (let* ((i-date (calendar-islamic-from-absolute
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 (calendar-absolute-from-gregorian date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 (calendar-month-name-array calendar-islamic-month-name-array))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 (if (>= (extract-calendar-year i-date) 1)
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1362 (format "Islamic date: %s" (calendar-date-string i-date nil t)))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1364 (defun diary-hebrew-date ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1365 "Hebrew calendar equivalent of date diary entry."
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1366 (let* ((h-date (calendar-hebrew-from-absolute
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 (calendar-absolute-from-gregorian date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 (calendar-month-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 (if (hebrew-calendar-leap-year-p
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 (extract-calendar-year h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 calendar-hebrew-month-name-array-leap-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 calendar-hebrew-month-name-array-common-year)))
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1373 (format "Hebrew date: %s" (calendar-date-string h-date nil t))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1375 (defun diary-julian-date ()
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1376 "Julian calendar equivalent of date diary entry."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1377 (format "Julian date: %s"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1378 (calendar-date-string
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1379 (calendar-julian-from-absolute
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1380 (calendar-absolute-from-gregorian date)))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1381 nil t))
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1382
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1383 (defun diary-astro-day-number ()
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1384 "Astronomical (Julian) day number diary entry."
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1385 (format "Astronomical (Julian) day number %d"
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1386 (+ 1721425 (calendar-absolute-from-gregorian date))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1387
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1388 (defun diary-omer ()
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1389 "Omer count diary entry.
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1390 Entry applies if date is within 50 days after Passover."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 (let* ((passover
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 (calendar-absolute-from-hebrew
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393 (list 1 15 (+ (extract-calendar-year date) 3760))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 (omer (- (calendar-absolute-from-gregorian date) passover))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1395 (week (/ omer 7))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396 (day (% omer 7)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397 (if (and (> omer 0) (< omer 50))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398 (format "Day %d%s of the omer (until sunset)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399 omer
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1400 (if (zerop week)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1401 ""
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402 (format ", that is, %d week%s%s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1403 week
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 (if (= week 1) "" "s")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405 (if (zerop day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1406 ""
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 (format " and %d day%s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 day (if (= day 1) "" "s")))))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1410 (defun diary-yahrzeit (death-month death-day death-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1411 "Yahrzeit diary entry--entry applies if date is yahrzeit or the day before.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1412 Parameters are DEATH-MONTH, DEATH-DAY, DEATH-YEAR; the diary entry is assumed
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413 to be the name of the person. Date of death is on the *civil* calendar;
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414 although the date of death is specified by the civil calendar, the proper
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1415 Hebrew calendar yahrzeit is determined. If `european-calendar-style' is t, the
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1416 order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1417 (let* ((h-date (calendar-hebrew-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1418 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419 (if european-calendar-style
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1420 (list death-day death-month death-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 (list death-month death-day death-year)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422 (h-month (extract-calendar-month h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 (h-day (extract-calendar-day h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424 (h-year (extract-calendar-year h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 (d (calendar-absolute-from-gregorian date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1426 (yr (extract-calendar-year (calendar-hebrew-from-absolute d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1427 (diff (- yr h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1428 (y (hebrew-calendar-yahrzeit h-date yr)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1429 (if (and (> diff 0) (or (= y d) (= y (1+ d))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1430 (format "Yahrzeit of %s%s: %d%s anniversary"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1431 entry
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 (if (= y d) "" " (evening)")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 diff
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1434 (cond ((= (% diff 10) 1) "st")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1435 ((= (% diff 10) 2) "nd")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1436 ((= (% diff 10) 3) "rd")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1437 (t "th"))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1438
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1439 (defun diary-rosh-hodesh ()
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1440 "Rosh Hodesh diary entry.
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1441 Entry applies if date is Rosh Hodesh, the day before, or the Saturday before."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1442 (let* ((d (calendar-absolute-from-gregorian date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443 (h-date (calendar-hebrew-from-absolute d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1444 (h-month (extract-calendar-month h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1445 (h-day (extract-calendar-day h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1446 (h-year (extract-calendar-year h-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1447 (leap-year (hebrew-calendar-leap-year-p h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1448 (last-day (hebrew-calendar-last-day-of-month h-month h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1449 (h-month-names
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1450 (if leap-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1451 calendar-hebrew-month-name-array-leap-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1452 calendar-hebrew-month-name-array-common-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1453 (this-month (aref h-month-names (1- h-month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1454 (h-yesterday (extract-calendar-day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1455 (calendar-hebrew-from-absolute (1- d)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1456 (if (or (= h-day 30) (and (= h-day 1) (/= h-month 7)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1457 (format
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1458 "Rosh Hodesh %s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1459 (if (= h-day 30)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1460 (format
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1461 "%s (first day)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1462 ;; next month must be in the same year since this
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1463 ;; month can't be the last month of the year since
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1464 ;; it has 30 days
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1465 (aref h-month-names h-month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1466 (if (= h-yesterday 30)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1467 (format "%s (second day)" this-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1468 this-month)))
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1469 (if (= (% d 7) 6);; Saturday--check for Shabbat Mevarhim
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1470 (cond ((and (> h-day 22) (/= h-month 6) (= 29 last-day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1471 (format "Mevarhim Rosh Hodesh %s (%s)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1472 (aref h-month-names
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1473 (if (= h-month
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1474 (hebrew-calendar-last-month-of-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1475 h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1476 0 h-month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1477 (aref calendar-day-name-array (- 29 h-day))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1478 ((and (< h-day 30) (> h-day 22) (= 30 last-day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1479 (format "Mevarhim Rosh Hodesh %s (%s-%s)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1480 (aref h-month-names h-month)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1481 (if (= h-day 29)
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1482 "tomorrow"
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1483 (aref calendar-day-name-array (- 29 h-day)))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1484 (aref calendar-day-name-array
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1485 (% (- 30 h-day) 7)))))
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1486 (if (and (= h-day 29) (/= h-month 6))
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1487 (format "Erev Rosh Hodesh %s"
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1488 (aref h-month-names
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1489 (if (= h-month
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1490 (hebrew-calendar-last-month-of-year
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1491 h-year))
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1492 0 h-month))))))))
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1493
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1494 (defun diary-parasha ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1495 "Parasha diary entry--entry applies if date is a Saturday."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1496 (let ((d (calendar-absolute-from-gregorian date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1497 (if (= (% d 7) 6);; Saturday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1498 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1499 ((h-year (extract-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 (calendar-hebrew-from-absolute d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 (rosh-hashannah
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 (calendar-absolute-from-hebrew (list 7 1 h-year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503 (passover
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1504 (calendar-absolute-from-hebrew (list 1 15 h-year)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1505 (rosh-hashannah-day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1506 (aref calendar-day-name-array (% rosh-hashannah 7)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507 (passover-day
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1508 (aref calendar-day-name-array (% passover 7)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1509 (long-h (hebrew-calendar-long-heshvan-p h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1510 (short-k (hebrew-calendar-short-kislev-p h-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1511 (type (cond ((and long-h (not short-k)) "complete")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512 ((and (not long-h) short-k) "incomplete")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513 (t "regular")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1514 (year-format
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 (symbol-value
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516 (intern (format "hebrew-calendar-year-%s-%s-%s";; keviah
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1517 rosh-hashannah-day type passover-day))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1518 (first-saturday;; of Hebrew year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1519 (calendar-dayname-on-or-before 6 (+ 6 rosh-hashannah)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1520 (saturday;; which Saturday of the Hebrew year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521 (/ (- d first-saturday) 7))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1522 (parasha (aref year-format saturday)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1523 (if parasha
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1524 (format
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1525 "Parashat %s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526 (if (listp parasha);; Israel differs from diaspora
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527 (if (car parasha)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1528 (format "%s (diaspora), %s (Israel)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1529 (hebrew-calendar-parasha-name (car parasha))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1530 (hebrew-calendar-parasha-name (cdr parasha)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1531 (format "%s (Israel)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1532 (hebrew-calendar-parasha-name (cdr parasha))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1533 (hebrew-calendar-parasha-name parasha))))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1534
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535 (defun add-to-diary-list (date string)
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1536 "Add the entry (DATE STRING) to `diary-entries-list'.
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1537 Do nothing if DATE or STRING is nil."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538 (and date string
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1539 (setq diary-entries-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1540 (append diary-entries-list (list (list date string))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1541
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 (defconst hebrew-calendar-parashiot-names
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1543 ["Bereshith" "Noah" "Lech L'cha" "Vayera" "Hayei Sarah" "Toledoth"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1544 "Vayetze" "Vayishlah" "Vayeshev" "Mikketz" "Vayiggash" "Vayhi"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1545 "Shemoth" "Vaera" "Bo" "Beshallah" "Yithro" "Mishpatim"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1546 "Terumah" "Tetzavveh" "Ki Tissa" "Vayakhel" "Pekudei" "Vayikra"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1547 "Tzav" "Shemini" "Tazria" "Metzora" "Aharei Moth" "Kedoshim"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1548 "Emor" "Behar" "Behukkotai" "Bemidbar" "Naso" "Behaalot'cha"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1549 "Shelah L'cha" "Korah" "Hukkath" "Balak" "Pinhas" "Mattoth"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1550 "Masei" "Devarim" "Vaethanan" "Ekev" "Reeh" "Shofetim"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1551 "Ki Tetze" "Ki Tavo" "Nitzavim" "Vayelech" "Haazinu"]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1552 "The names of the parashiot in the Torah.")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1553
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1554 ;; The seven ordinary year types (keviot)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 (defconst hebrew-calendar-year-Saturday-incomplete-Sunday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1559 43 44 45 46 47 48 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1560 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1561 Hebrew year starts on Saturday, is `incomplete' (Heshvan and Kislev each have
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1562 29 days), and has Passover start on Sunday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1563
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 (defconst hebrew-calendar-year-Saturday-complete-Tuesday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1565 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1566 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1567 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1568 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1569 Hebrew year that starts on Saturday, is `complete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1570 have 30 days), and has Passover start on Tuesday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1571
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1572 (defconst hebrew-calendar-year-Monday-incomplete-Tuesday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1573 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1574 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1576 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1577 Hebrew year that starts on Monday, is `incomplete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1578 have 29 days), and has Passover start on Tuesday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1579
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1580 (defconst hebrew-calendar-year-Monday-complete-Thursday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1581 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1582 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 (nil . 34) (34 . 35) (35 . 36)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1583 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1584 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1585 Hebrew year that starts on Monday, is `complete' (Heshvan and Kislev each have
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1586 30 days), and has Passover start on Thursday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1587
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1588 (defconst hebrew-calendar-year-Tuesday-regular-Thursday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1589 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22]
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1590 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 (nil . 34) (34 . 35) (35 . 36)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1591 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1592 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1593 Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29 days and
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1594 Kislev has 30 days), and has Passover start on Thursday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1595
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1596 (defconst hebrew-calendar-year-Thursday-regular-Saturday
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1597 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21 22] 23
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1598 24 nil (nil . 25) (25 . [26 27]) ([26 27] . [28 29]) ([28 29] . 30)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1599 (30 . 31) ([31 32] . 32) 33 34 35 36 37 38 39 40 [41 42] 43 44 45 46 47 48
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1600 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1601 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1602 Hebrew year that starts on Thursday, is `regular' (Heshvan has 29 days and
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1603 Kislev has 30 days), and has Passover start on Saturday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1604
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1605 (defconst hebrew-calendar-year-Thursday-complete-Sunday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607 23 24 nil 25 [26 27] [28 29] 30 [31 32] 33 34 35 36 37 38 39 40 [41 42]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1608 43 44 45 46 47 48 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1609 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1610 Hebrew year that starts on Thursday, is `complete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1611 have 30 days), and has Passover start on Sunday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1612
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1613 ;; The seven leap year types (keviot)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1614
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1615 (defconst hebrew-calendar-year-Saturday-incomplete-Tuesday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1616 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1617 23 24 25 26 27 nil 28 29 30 31 32 33 34 35 36 37 38 39 40 [41 42]
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1618 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1619 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1620 Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1621 have 29 days), and has Passover start on Tuesday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1622
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1623 (defconst hebrew-calendar-year-Saturday-complete-Thursday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1624 [nil 52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1625 23 24 25 26 27 nil 28 29 30 31 32 33 (nil . 34) (34 . 35) (35 . 36)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1626 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1627 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1628 Hebrew year that starts on Saturday, is `complete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1629 have 30 days), and has Passover start on Thursday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1630
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1631 (defconst hebrew-calendar-year-Monday-incomplete-Thursday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1632 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1633 23 24 25 26 27 nil 28 29 30 31 32 33 (nil . 34) (34 . 35) (35 . 36)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1634 (36 . 37) (37 . 38) ([38 39] . 39) 40 [41 42] 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1635 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1636 Hebrew year that starts on Monday, is `incomplete' (Heshvan and Kislev each
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1637 have 29 days), and has Passover start on Thursday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1638
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1639 (defconst hebrew-calendar-year-Monday-complete-Saturday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1640 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1641 23 24 25 26 27 nil (nil . 28) (28 . 29) (29 . 30) (30 . 31) (31 . 32)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1642 (32 . 33) (33 . 34) (34 . 35) (35 . 36) (36 . 37) (37 . 38) (38 . 39)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1643 (39 . 40) (40 . 41) ([41 42] . 42) 43 44 45 46 47 48 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1644 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1645 Hebrew year that starts on Monday, is `complete' (Heshvan and Kislev each have
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1646 30 days), and has Passover start on Saturday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1647
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1648 (defconst hebrew-calendar-year-Tuesday-regular-Saturday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1649 [51 52 nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1650 23 24 25 26 27 nil (nil . 28) (28 . 29) (29 . 30) (30 . 31) (31 . 32)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1651 (32 . 33) (33 . 34) (34 . 35) (35 . 36) (36 . 37) (37 . 38) (38 . 39)
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1652 (39 . 40) (40 . 41) ([41 42] . 42) 43 44 45 46 47 48 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1653 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1654 Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29 days and
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1655 Kislev has 30 days), and has Passover start on Saturday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1656
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1657 (defconst hebrew-calendar-year-Thursday-incomplete-Sunday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1658 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1659 23 24 25 26 27 28 nil 29 30 31 32 33 34 35 36 37 38 39 40 41 42
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1660 43 44 45 46 47 48 49 50]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1661 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1662 Hebrew year that starts on Thursday, is `incomplete' (Heshvan and Kislev both
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1663 have 29 days), and has Passover start on Sunday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1664
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1665 (defconst hebrew-calendar-year-Thursday-complete-Tuesday
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1666 [52 nil nil 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1667 23 24 25 26 27 28 nil 29 30 31 32 33 34 35 36 37 38 39 40 41 42
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1668 43 44 45 46 47 48 49 [50 51]]
3867
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1669 "The structure of the parashiot.
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1670 Hebrew year that starts on Thursday, is `complete' (Heshvan and Kislev both
81178166a332 * diary.el (list-sexp-diary-entries,
Jim Blandy <jimb@redhat.com>
parents: 2247
diff changeset
1671 have 30 days), and has Passover start on Tuesday.")
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1672
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1673 (defun hebrew-calendar-parasha-name (p)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1674 "Name(s) corresponding to parasha P."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1675 (if (arrayp p);; combined parasha
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1676 (format "%s/%s"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1677 (aref hebrew-calendar-parashiot-names (aref p 0))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1678 (aref hebrew-calendar-parashiot-names (aref p 1)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1679 (aref hebrew-calendar-parashiot-names p)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1680
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1681 (defun list-islamic-diary-entries ()
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1682 "Add any Islamic date entries from the diary file to `diary-entries-list'.
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1683 Islamic date diary entries must be prefaced by an `islamic-diary-entry-symbol'
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1684 (normally an `I'). The same diary date forms govern the style of the Islamic
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1685 calendar entries, except that the Islamic month names must be spelled in full.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1686 The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1687 Dhu al-Hijjah. If an Islamic date diary entry begins with a
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1688 `diary-nonmarking-symbol', the entry will appear in the diary listing, but will
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1689 not be marked in the calendar. This function is provided for use with the
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1690 `nongregorian-diary-listing-hook'."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1691 (if (< 0 number)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1692 (let ((buffer-read-only nil)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1693 (diary-modified (buffer-modified-p))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1694 (gdate original-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1695 (mark (regexp-quote diary-nonmarking-symbol)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1696 (calendar-for-loop i from 1 to number do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1697 (let* ((d diary-date-forms)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1698 (idate (calendar-islamic-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1699 (calendar-absolute-from-gregorian gdate)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1700 (month (extract-calendar-month idate))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1701 (day (extract-calendar-day idate))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1702 (year (extract-calendar-year idate)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1703 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1704 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1705 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1706 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1707 (car d)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1708 (backup (equal (car (car d)) 'backup))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1709 (dayname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1710 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1711 (calendar-day-name gdate) "\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1712 (substring (calendar-day-name gdate) 0 3) ".?"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1713 (calendar-month-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1714 calendar-islamic-month-name-array)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1715 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1716 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1717 "\\*\\|"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1718 (calendar-month-name month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1719 (month (concat "\\*\\|0*" (int-to-string month)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1720 (day (concat "\\*\\|0*" (int-to-string day)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1721 (year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1722 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1723 "\\*\\|0*" (int-to-string year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1724 (if abbreviated-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1725 (concat "\\|" (int-to-string (% year 100)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1726 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1727 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1728 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1729 "\\(\\`\\|\^M\\|\n\\)" mark "?"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1730 (regexp-quote islamic-diary-entry-symbol)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1731 "\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1732 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1733 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1734 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1735 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1736 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1737 (if backup (re-search-backward "\\<" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1738 (if (and (or (char-equal (preceding-char) ?\^M)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1739 (char-equal (preceding-char) ?\n))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1740 (not (looking-at " \\|\^I")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1741 ;; Diary entry that consists only of date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1742 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1743 ;; Found a nonempty diary entry--make it visible and
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1744 ;; add it to the list.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1745 (let ((entry-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1746 (date-start))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1747 (re-search-backward "\^M\\|\n\\|\\`")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1748 (setq date-start (point))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1749 (re-search-forward "\^M\\|\n" nil t 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1750 (while (looking-at " \\|\^I")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1751 (re-search-forward "\^M\\|\n" nil t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1752 (backward-char 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1753 (subst-char-in-region date-start (point) ?\^M ?\n t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1754 (add-to-diary-list
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1755 gdate (buffer-substring entry-start (point)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1756 (setq d (cdr d))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1757 (setq gdate
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1758 (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1759 (1+ (calendar-absolute-from-gregorian gdate)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1760 (set-buffer-modified-p diary-modified))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1761 (goto-char (point-min))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1762
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1763 (defun mark-islamic-diary-entries ()
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1764 "Mark days in the calendar window that have Islamic date diary entries.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1765 Each entry in diary-file (or included files) visible in the calendar window
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1766 is marked. Islamic date entries are prefaced by a islamic-diary-entry-symbol
958
cc82116a8f1c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
1767 (normally an `I'). The same diary-date-forms govern the style of the Islamic
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1768 calendar entries, except that the Islamic month names must be spelled in full.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1769 The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1770 Dhu al-Hijjah. Islamic date diary entries that begin with a
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1771 diary-nonmarking-symbol will not be marked in the calendar. This function is
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1772 provided for use as part of the nongregorian-diary-marking-hook."
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1773 (let ((d diary-date-forms))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1774 (while d
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1775 (let*
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1776 ((date-form (if (equal (car (car d)) 'backup)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1777 (cdr (car d))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1778 (car d)));; ignore 'backup directive
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1779 (dayname (diary-name-pattern calendar-day-name-array))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1780 (monthname
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1781 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1782 (diary-name-pattern calendar-islamic-month-name-array t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 "\\|\\*"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 (month "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1785 (day "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1786 (year "[0-9]+\\|\\*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1787 (l (length date-form))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1788 (d-name-pos (- l (length (memq 'dayname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1789 (d-name-pos (if (/= l d-name-pos) (+ 2 d-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1790 (m-name-pos (- l (length (memq 'monthname date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1791 (m-name-pos (if (/= l m-name-pos) (+ 2 m-name-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1792 (d-pos (- l (length (memq 'day date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1793 (d-pos (if (/= l d-pos) (+ 2 d-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1794 (m-pos (- l (length (memq 'month date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1795 (m-pos (if (/= l m-pos) (+ 2 m-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1796 (y-pos (- l (length (memq 'year date-form))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1797 (y-pos (if (/= l y-pos) (+ 2 y-pos)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1798 (regexp
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1799 (concat
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1800 "\\(\\`\\|\^M\\|\n\\)"
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1801 (regexp-quote islamic-diary-entry-symbol)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1802 "\\("
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1803 (mapconcat 'eval date-form "\\)\\(")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1804 "\\)"))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1805 (case-fold-search t))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1806 (goto-char (point-min))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1807 (while (re-search-forward regexp nil t)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808 (let* ((dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1809 (if d-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1810 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1811 (match-beginning d-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1812 (match-end d-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1813 (mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1814 (if m-name-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1815 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1816 (match-beginning m-name-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1817 (match-end m-name-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 (mm (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 (if m-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 (match-beginning m-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1822 (match-end m-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 (dd (string-to-int
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825 (if d-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1826 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827 (match-beginning d-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 (match-end d-pos))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 "")))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 (y-str (if y-pos
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831 (buffer-substring
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832 (match-beginning y-pos)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1833 (match-end y-pos))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1834 (yy (if (not y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1835 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1836 (if (and (= (length y-str) 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1837 abbreviated-calendar-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1838 (let* ((current-y
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1839 (extract-calendar-year
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1840 (calendar-islamic-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1841 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1842 (calendar-current-date)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1843 (y (+ (string-to-int y-str)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1844 (* 100 (/ current-y 100)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1845 (if (> (- y current-y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1846 (- y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1847 (if (> (- current-y y) 50)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1848 (+ y 100)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1849 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1850 (string-to-int y-str)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1851 (if dd-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1852 (mark-calendar-days-named
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1853 (cdr (assoc (capitalize (substring dd-name 0 3))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1854 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1855 calendar-day-name-array
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1856 0
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1857 '(lambda (x) (substring x 0 3))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1858 (if mm-name
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1859 (if (string-equal mm-name "*")
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1860 (setq mm 0)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1861 (setq mm
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1862 (cdr (assoc
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1863 (capitalize mm-name)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1864 (calendar-make-alist
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1865 calendar-islamic-month-name-array))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1866 (mark-islamic-calendar-date-pattern mm dd yy)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1867 (setq d (cdr d)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1868
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1869 (defun mark-islamic-calendar-date-pattern (month day year)
1357
d1bd58483c59 Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1183
diff changeset
1870 "Mark dates in calendar window that conform to Islamic date MONTH/DAY/YEAR.
4297
3de2d5ae27a7 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3867
diff changeset
1871 A value of 0 in any position is a wildcard."
406
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1872 (save-excursion
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1873 (set-buffer calendar-buffer)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1874 (if (and (/= 0 month) (/= 0 day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1875 (if (/= 0 year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1876 ;; Fully specified Islamic date.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1877 (let ((date (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1878 (calendar-absolute-from-islamic
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1879 (list month day year)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1880 (if (calendar-date-is-visible-p date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1881 (mark-visible-calendar-date date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1882 ;; Month and day in any year--this taken from the holiday stuff.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1883 (let* ((islamic-date (calendar-islamic-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1884 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1885 (list displayed-month 15 displayed-year))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1886 (m (extract-calendar-month islamic-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1887 (y (extract-calendar-year islamic-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1888 (date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1889 (if (< m 1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1890 nil;; Islamic calendar doesn't apply.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1891 (increment-calendar-month m y (- 10 month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1892 (if (> m 7);; Islamic date might be visible
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1893 (let ((date (calendar-gregorian-from-absolute
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1894 (calendar-absolute-from-islamic
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1895 (list month day y)))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1896 (if (calendar-date-is-visible-p date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1897 (mark-visible-calendar-date date)))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1898 ;; Not one of the simple cases--check all visible dates for match.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1899 ;; Actually, the following code takes care of ALL of the cases, but
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1900 ;; it's much too slow to be used for the simple (common) cases.
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 (let ((m displayed-month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1902 (y displayed-year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903 (first-date)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904 (last-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905 (increment-calendar-month m y -1)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1906 (setq first-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1907 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1908 (list m 1 y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1909 (increment-calendar-month m y 2)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1910 (setq last-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1911 (calendar-absolute-from-gregorian
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1912 (list m (calendar-last-day-of-month m y) y)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1913 (calendar-for-loop date from first-date to last-date do
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1914 (let* ((i-date (calendar-islamic-from-absolute date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1915 (i-month (extract-calendar-month i-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1916 (i-day (extract-calendar-day i-date))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1917 (i-year (extract-calendar-year i-date)))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1918 (and (or (zerop month)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919 (= month i-month))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 (or (zerop day)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1921 (= day i-day))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1922 (or (zerop year)
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1923 (= year i-year))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1924 (mark-visible-calendar-date
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1925 (calendar-gregorian-from-absolute date)))))))))
bd0533ed9b5a Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1926
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 406
diff changeset
1927 (provide 'diary)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 406
diff changeset
1928
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1929 ;;; diary.el ends here