annotate lisp/=diary-lib.el @ 30408:e3e2c9051c5f

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