Mercurial > emacs
annotate lisp/calendar/diary-lib.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | be6132068051 |
children | 87d704ff4a52 |
rev | line source |
---|---|
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37001
diff
changeset
|
1 ;;; diary-lib.el --- diary functions |
13053 | 2 |
67465
a55ee709ec8d
Update copyright pending Emacs 22.
Glenn Morris <rgm@gnu.org>
parents:
66929
diff
changeset
|
3 ;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2001, 2002, 2003, |
106815 | 4 ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
13053 | 5 |
6 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> | |
65919
5c09efcfc1d9
Update maintainer email address.
Glenn Morris <rgm@gnu.org>
parents:
65875
diff
changeset
|
7 ;; Maintainer: Glenn Morris <rgm@gnu.org> |
13053 | 8 ;; Keywords: calendar |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
94653
e49abd957e81
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94455
diff
changeset
|
12 ;; GNU Emacs is free software: you can redistribute it and/or modify |
13053 | 13 ;; it under the terms of the GNU General Public License as published by |
94653
e49abd957e81
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94455
diff
changeset
|
14 ;; the Free Software Foundation, either version 3 of the License, or |
e49abd957e81
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94455
diff
changeset
|
15 ;; (at your option) any later version. |
13053 | 16 |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
94653
e49abd957e81
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94455
diff
changeset
|
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
13053 | 24 |
25 ;;; Commentary: | |
26 | |
93493 | 27 ;; See calendar.el. |
13053 | 28 |
29 ;;; Code: | |
30 | |
31 (require 'calendar) | |
105857
900207956538
(top-level): Make load behave more like require.
Glenn Morris <rgm@gnu.org>
parents:
105844
diff
changeset
|
32 (eval-and-compile (load "diary-loaddefs" nil t)) |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
33 |
93994
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
34 (defgroup diary nil |
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
35 "Emacs diary." |
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
36 :prefix "diary-" |
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
37 :group 'calendar) |
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
38 |
92595 | 39 (defcustom diary-include-string "#include" |
40 "The string indicating inclusion of another file of diary entries. | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
41 See the documentation for the function `diary-include-other-diary-files'." |
92595 | 42 :type 'string |
43 :group 'diary) | |
44 | |
45 (defcustom diary-list-include-blanks nil | |
46 "If nil, do not include days with no diary entry in the list of diary entries. | |
47 Such days will then not be shown in the fancy diary buffer, even if they | |
48 are holidays." | |
49 :type 'boolean | |
50 :group 'diary) | |
51 | |
52 (defcustom diary-face 'diary | |
53 "Face name to use for diary entries." | |
54 :type 'face | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
55 :group 'calendar-faces) |
92595 | 56 (make-obsolete-variable 'diary-face "customize the face `diary' instead." |
92859 | 57 "23.1") |
92595 | 58 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
59 (defface diary-anniversary '((t :inherit font-lock-keyword-face)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
60 "Face used for anniversaries in the fancy diary display." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
61 :version "22.1" |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
62 :group 'calendar-faces) |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
63 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
64 (defface diary-time '((t :inherit font-lock-variable-name-face)) |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
65 "Face used for times of day in the fancy diary display." |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
66 :version "22.1" |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
67 :group 'calendar-faces) |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
68 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
69 (defface diary-button '((((type pc) (class color)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
70 (:foreground "lightblue"))) |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
71 "Face used for buttons in the fancy diary display." |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
72 :version "22.1" |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
73 :group 'calendar-faces) |
104755
bd9100bc8627
(diary-button-face): Mark this face alias as obsolete.
Glenn Morris <rgm@gnu.org>
parents:
104661
diff
changeset
|
74 |
bd9100bc8627
(diary-button-face): Mark this face alias as obsolete.
Glenn Morris <rgm@gnu.org>
parents:
104661
diff
changeset
|
75 (define-obsolete-face-alias 'diary-button-face 'diary-button "22.1") |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
76 |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
77 ;; Face markup of calendar and diary displays: Any entry line that |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
78 ;; ends with [foo:value] where foo is a face attribute (except :box |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
79 ;; :stipple) or with [face:blah] tags, will have these values applied |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
80 ;; to the calendar and fancy diary displays. These attributes "stack" |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
81 ;; on calendar displays. File-wide attributes can be defined as |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
82 ;; follows: the first line matching "^# [tag:value]" defines the value |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
83 ;; for that particular tag. |
92595 | 84 (defcustom diary-face-attrs |
85 '((" *\\[foreground:\\([-a-z]+\\)\\]$" 1 :foreground string) | |
86 (" *\\[background:\\([-a-z]+\\)\\]$" 1 :background string) | |
93274
177806bc3b1b
(diary-face-attrs): Revert previous change to `weight' type. Fix
Glenn Morris <rgm@gnu.org>
parents:
93270
diff
changeset
|
87 (" *\\[width:\\([-a-z]+\\)\\]$" 1 :width symbol) |
177806bc3b1b
(diary-face-attrs): Revert previous change to `weight' type. Fix
Glenn Morris <rgm@gnu.org>
parents:
93270
diff
changeset
|
88 (" *\\[height:\\([.0-9]+\\)\\]$" 1 :height int) |
92595 | 89 (" *\\[weight:\\([-a-z]+\\)\\]$" 1 :weight symbol) |
90 (" *\\[slant:\\([-a-z]+\\)\\]$" 1 :slant symbol) | |
91 (" *\\[underline:\\([-a-z]+\\)\\]$" 1 :underline stringtnil) | |
92 (" *\\[overline:\\([-a-z]+\\)\\]$" 1 :overline stringtnil) | |
93 (" *\\[strike-through:\\([-a-z]+\\)\\]$" 1 :strike-through stringtnil) | |
94 (" *\\[inverse-video:\\([-a-z]+\\)\\]$" 1 :inverse-video tnil) | |
95 (" *\\[face:\\([-0-9a-z]+\\)\\]$" 1 :face string) | |
96 (" *\\[font:\\([-a-z0-9]+\\)\\]$" 1 :font string) | |
97 ;; Unsupported. | |
98 ;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box) | |
99 ;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple) | |
100 ) | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
101 "Alist of (REGEXP SUBEXP ATTRIBUTE TYPE) elements. |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
102 This is used by `diary-pull-attrs' to fontify certain diary |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
103 elements. REGEXP is a regular expression to for, and SUBEXP is |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
104 the numbered sub-expression to extract. `diary-glob-file-regexp-prefix' |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
105 is pre-pended to REGEXP for file-wide specifiers. ATTRIBUTE |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
106 specifies which face attribute (e.g. `:foreground') to modify, or |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
107 that this is a face (`:face') to apply. TYPE is the type of |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
108 attribute being applied. Available TYPES (see `diary-attrtype-convert') |
99540
c5c8f07bc47c
* w32-fns.el (w32-shell-dos-semantics):
Juanma Barranquero <lekktu@gmail.com>
parents:
96465
diff
changeset
|
109 are: `string', `symbol', `int', `tnil', `stringtnil.'" |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
110 :type '(repeat (list (string :tag "Regular expression") |
92859 | 111 (integer :tag "Sub-expression") |
112 (symbol :tag "Attribute (e.g. :foreground)") | |
113 (choice (const string :tag "A string") | |
114 (const symbol :tag "A symbol") | |
115 (const int :tag "An integer") | |
116 (const tnil :tag "`t' or `nil'") | |
117 (const stringtnil | |
118 :tag "A string, `t', or `nil'")))) | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
119 :group 'diary) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
120 |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
121 (defcustom diary-glob-file-regexp-prefix "^\\#" |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
122 "Regular expression pre-pended to `diary-face-attrs' for file-wide specifiers." |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
123 :type 'regexp |
92595 | 124 :group 'diary) |
125 | |
126 (defcustom diary-file-name-prefix nil | |
127 "Non-nil means prefix each diary entry with the name of the file defining it." | |
128 :type 'boolean | |
129 :group 'diary) | |
130 | |
131 (defcustom diary-file-name-prefix-function 'identity | |
132 "The function that will take a diary file name and return the desired prefix." | |
133 :type 'function | |
134 :group 'diary) | |
135 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
136 (define-obsolete-variable-alias 'sexp-diary-entry-symbol |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
137 'diary-sexp-entry-symbol "23.1") |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
138 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
139 (defcustom diary-sexp-entry-symbol "%%" |
92595 | 140 "The string used to indicate a sexp diary entry in `diary-file'. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
141 See the documentation for the function `diary-list-sexp-entries'." |
92595 | 142 :type 'string |
143 :group 'diary) | |
144 | |
93950
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
145 (defcustom diary-hook nil |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
146 "List of functions called after the display of the diary. |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
147 Used for example by the appointment package - see `appt-activate'." |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
148 :type 'hook |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
149 :group 'diary) |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
150 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
151 (define-obsolete-variable-alias 'diary-display-hook 'diary-display-function |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
152 "23.1") |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
153 |
105021
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
154 (defcustom diary-display-function 'diary-fancy-display |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
155 "Function used to display the diary. |
105021
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
156 The two standard options are `diary-fancy-display' and `diary-simple-display'. |
93950
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
157 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
158 For historical reasons, `nil' is the same as `diary-simple-display' |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
159 \(so you must use `ignore' for no display). Also for historical |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
160 reasons, this variable can be a list of functions to run. These |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
161 uses are not recommended and may be removed at some point. |
93950
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
162 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
163 When this function is called, the variable `diary-entries-list' |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
164 is a list, in order by date, of all relevant diary entries in the |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
165 form of ((MONTH DAY YEAR) STRING), where string is the diary |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
166 entry for the given date. This can be used, for example, to |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
167 produce a different buffer for display (perhaps combined with |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
168 holidays), or hard copy output." |
105021
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
169 :type '(choice (const diary-fancy-display :tag "Fancy display") |
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
170 (const diary-simple-display :tag "Basic display") |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
171 (const ignore :tag "No display") |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
172 (const nil :tag "Obsolete way to choose basic display") |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
173 (hook :tag "Obsolete form with list of display functions")) |
93950
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
174 :initialize 'custom-initialize-default |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
175 :set 'diary-set-maybe-redraw |
105021
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
176 :version "23.2" ; simple->fancy |
93950
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
177 :group 'diary) |
1a435b435254
(diary-hook, diary-display-hook): Move here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93809
diff
changeset
|
178 |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
179 (define-obsolete-variable-alias 'list-diary-entries-hook |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
180 'diary-list-entries-hook "23.1") |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
181 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
182 (defcustom diary-list-entries-hook nil |
92595 | 183 "List of functions called after diary file is culled for relevant entries. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
184 You might wish to add `diary-include-other-diary-files', in which case |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
185 you will probably also want to add `diary-mark-included-diary-files' to |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
186 `diary-mark-entries-hook'. For example, you could use |
92595 | 187 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
188 (setq diary-display-function 'diary-fancy-display) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
189 (add-hook 'diary-list-entries-hook 'diary-include-other-diary-files) |
110355
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
190 (add-hook 'diary-list-entries-hook 'diary-sort-entries t) |
92595 | 191 |
192 in your `.emacs' file to cause the fancy diary buffer to be displayed with | |
193 diary entries from various included files, each day's entries sorted into | |
110355
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
194 lexicographic order. Note how the sort function is placed last, |
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
195 so that it can sort the entries included from other files." |
92595 | 196 :type 'hook |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
197 :options '(diary-include-other-diary-files diary-sort-entries) |
92595 | 198 :group 'diary) |
199 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
200 (define-obsolete-variable-alias 'mark-diary-entries-hook |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
201 'diary-mark-entries-hook "23.1") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
202 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
203 (defcustom diary-mark-entries-hook nil |
92595 | 204 "List of functions called after marking diary entries in the calendar. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
205 You might wish to add `diary-mark-included-diary-files', in which case |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
206 you will probably also want to add `diary-include-other-diary-files' to |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
207 `diary-list-entries-hook'." |
92595 | 208 :type 'hook |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
209 :options '(diary-mark-included-diary-files) |
92595 | 210 :group 'diary) |
211 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
212 (define-obsolete-variable-alias 'nongregorian-diary-listing-hook |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
213 'diary-nongregorian-listing-hook "23.1") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
214 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
215 (defcustom diary-nongregorian-listing-hook nil |
92595 | 216 "List of functions called for listing diary file and included files. |
217 As the files are processed for diary entries, these functions are used | |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
218 to cull relevant entries. You can use any or all of |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
219 `diary-bahai-list-entries', `diary-hebrew-list-entries', and |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
220 `diary-islamic-list-entries'. The documentation for these functions |
92595 | 221 describes the style of such diary entries." |
222 :type 'hook | |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
223 :options '(diary-bahai-list-entries |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
224 diary-hebrew-list-entries |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
225 diary-islamic-list-entries) |
92595 | 226 :group 'diary) |
227 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
228 (define-obsolete-variable-alias 'nongregorian-diary-marking-hook |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
229 'diary-nongregorian-marking-hook "23.1") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
230 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
231 (defcustom diary-nongregorian-marking-hook nil |
92595 | 232 "List of functions called for marking diary file and included files. |
233 As the files are processed for diary entries, these functions are used | |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
234 to cull relevant entries. You can use any or all of |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
235 `diary-bahai-mark-entries', `diary-hebrew-mark-entries' and |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
236 `diary-islamic-mark-entries'. The documentation for these functions |
92595 | 237 describes the style of such diary entries." |
238 :type 'hook | |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
239 :options '(diary-bahai-mark-entries |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
240 diary-hebrew-mark-entries |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
241 diary-islamic-mark-entries) |
92595 | 242 :group 'diary) |
243 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
244 (define-obsolete-variable-alias 'print-diary-entries-hook |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
245 'diary-print-entries-hook "23.1") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
246 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
247 (defcustom diary-print-entries-hook 'lpr-buffer |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
248 "Run by `diary-print-entries' after preparing a temporary diary buffer. |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
249 The buffer shows only the diary entries currently visible in the |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
250 diary buffer. The default just does the printing. Other uses |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
251 might include, for example, rearranging the lines into order by |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
252 day and time, saving the buffer instead of deleting it, or |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
253 changing the function used to do the printing." |
92595 | 254 :type 'hook |
255 :group 'diary) | |
256 | |
257 (defcustom diary-unknown-time -9999 | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
258 "Value returned by `diary-entry-time' when no time is found. |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
259 The default value -9999 causes entries with no recognizable time |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
260 to be placed before those with times; 9999 would place entries |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
261 with no recognizable time after those with times." |
92595 | 262 :type 'integer |
263 :group 'diary | |
264 :version "20.3") | |
265 | |
266 (defcustom diary-mail-addr | |
93567
de3ea5f0a49b
(diary-mail-addr): Use bound-and-true-p.
Glenn Morris <rgm@gnu.org>
parents:
93527
diff
changeset
|
267 (or (bound-and-true-p user-mail-address) "") |
92595 | 268 "Email address that `diary-mail-entries' will send email to." |
269 :group 'diary | |
270 :type 'string | |
271 :version "20.3") | |
272 | |
273 (defcustom diary-mail-days 7 | |
274 "Default number of days for `diary-mail-entries' to check." | |
275 :group 'diary | |
276 :type 'integer | |
277 :version "20.3") | |
278 | |
279 (defcustom diary-remind-message | |
280 '("Reminder: Only " | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
281 (if (zerop (% days 7)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
282 (format "%d week%s" (/ days 7) (if (= 7 days) "" "s")) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
283 (format "%d day%s" days (if (= 1 days) "" "s"))) |
92595 | 284 " until " |
285 diary-entry) | |
286 "Pseudo-pattern giving form of reminder messages in the fancy diary display. | |
287 | |
288 Used by the function `diary-remind', a pseudo-pattern is a list of | |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
289 expressions that can involve the keywords `days' (a number), `date' |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
290 \(a list of month, day, year), and `diary-entry' (a string)." |
92595 | 291 :type 'sexp |
292 :group 'diary) | |
293 | |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
294 (define-obsolete-variable-alias 'abbreviated-calendar-year |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
295 'diary-abbreviated-year-flag "23.1") |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
296 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
297 (defcustom diary-abbreviated-year-flag t |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
298 "Interpret a two-digit year DD in a diary entry as either 19DD or 20DD. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
299 This applies to the Gregorian, Hebrew, Islamic, and Baha'i calendars. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
300 When the current century is added to a two-digit year, if the result |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
301 is more than 50 years in the future, the previous century is assumed. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
302 If the result is more than 50 years in the past, the next century is assumed. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
303 If this variable is nil, years must be written in full." |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
304 :type 'boolean |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
305 :group 'diary) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
306 |
92595 | 307 (defcustom diary-outlook-formats |
308 '( | |
309 ;; When: 11 October 2001 12:00-14:00 (GMT) Greenwich Mean Time : Dublin, ... | |
310 ;; [Current UK format? The timezone is meaningless. Sometimes the | |
311 ;; Where is missing.] | |
312 ("When: \\([0-9]+ [[:alpha:]]+ [0-9]+\\) \ | |
313 \\([^ ]+\\) [^\n]+ | |
314 \[^\n]+ | |
315 \\(?:Where: \\([^\n]+\\)\n+\\)? | |
316 \\*~\\*~\\*~\\*~\\*~\\*~\\*~\\*~\\*~\\*" | |
317 . "\\1\n \\2 %s, \\3") | |
318 ;; When: Tuesday, April 30, 2002 03:00 PM-03:30 PM (GMT) Greenwich Mean ... | |
319 ;; [Old UK format?] | |
320 ("^When: [[:alpha:]]+, \\([[:alpha:]]+\\) \\([0-9][0-9]*\\), \\([0-9]\\{4\\}\\) \ | |
321 \\([^ ]+\\) [^\n]+ | |
322 \[^\n]+ | |
323 \\(?:Where: \\([^\n]+\\)\\)?\n+" | |
324 . "\\2 \\1 \\3\n \\4 %s, \\5") | |
325 ( | |
326 ;; German format, apparently. | |
327 "^Zeit: [^ ]+, +\\([0-9]+\\)\. +\\([[:upper:]][[:lower:]][[:lower:]]\\)[^ ]* +\\([0-9]+\\) +\\([^ ]+\\).*$" | |
328 . "\\1 \\2 \\3\n \\4 %s")) | |
329 "Alist of regexps matching message text and replacement text. | |
330 | |
331 The regexp must match the start of the message text containing an | |
332 appointment, but need not include a leading `^'. If it matches the | |
333 current message, a diary entry is made from the corresponding | |
334 template. If the template is a string, it should be suitable for | |
335 passing to `replace-match', and so will have occurrences of `\\D' to | |
336 substitute the match for the Dth subexpression. It must also contain | |
337 a single `%s' which will be replaced with the text of the message's | |
338 Subject field. Any other `%' characters must be doubled, so that the | |
339 template can be passed to `format'. | |
340 | |
341 If the template is actually a function, it is called with the message | |
342 body text as argument, and may use `match-string' etc. to make a | |
343 template following the rules above." | |
344 :type '(alist :key-type (regexp :tag "Regexp matching time/place") | |
92859 | 345 :value-type (choice |
346 (string :tag "Template for entry") | |
347 (function :tag | |
348 "Unary function providing template"))) | |
92595 | 349 :version "22.1" |
350 :group 'diary) | |
351 | |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
352 (defvar diary-header-line-flag) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
353 (defvar diary-header-line-format) |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
354 |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
355 (defun diary-set-header (symbol value) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
356 "Set SYMBOL's value to VALUE, and redraw the diary header if necessary." |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
357 (let ((oldvalue (symbol-value symbol)) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
358 (dbuff (and diary-file (find-buffer-visiting diary-file)))) |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
359 (custom-set-default symbol value) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
360 (and dbuff |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
361 (not (equal value oldvalue)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
362 (with-current-buffer dbuff |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
363 (if (eq major-mode 'diary-mode) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
364 (setq header-line-format (and diary-header-line-flag |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
365 diary-header-line-format))))))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
366 |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
367 ;; This can be removed once the kill/yank treatment of invisible text |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
368 ;; (see etc/TODO) is fixed. -- gm |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
369 (defcustom diary-header-line-flag t |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
370 "Non-nil means `diary-simple-display' will show a header line. |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
371 The format of the header is specified by `diary-header-line-format'." |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
372 :group 'diary |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
373 :type 'boolean |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
374 :initialize 'custom-initialize-default |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
375 :set 'diary-set-header |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
376 :version "22.1") |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
377 |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
378 (defvar diary-selective-display nil |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
379 "Internal diary variable; non-nil if some diary text is hidden.") |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
380 |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
381 (defcustom diary-header-line-format |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
382 '(:eval (calendar-string-spread |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
383 (list (if diary-selective-display |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
384 "Some text is hidden - press \"s\" in calendar \ |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
385 before edit/copy" |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
386 "Diary")) |
109921 | 387 ?\s (window-width))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
388 "Format of the header line displayed by `diary-simple-display'. |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
389 Only used if `diary-header-line-flag' is non-nil." |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
390 :group 'diary |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
391 :type 'sexp |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
392 :initialize 'custom-initialize-default |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
393 :set 'diary-set-header |
109922
91b062787a2c
* lisp/calendar/diary-lib.el: Bump custom :version for previous change.
Glenn Morris <rgm@gnu.org>
parents:
109921
diff
changeset
|
394 :version "23.3") ; frame-width -> window-width |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
395 |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
396 ;; The first version of this also checked for diary-selective-display |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
397 ;; in the non-fancy case. This was an attempt to distinguish between |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
398 ;; displaying the diary and just visiting the diary file. However, |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
399 ;; when using fancy diary, calling diary when there are no entries to |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
400 ;; display does not create the fancy buffer, nor does it set |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
401 ;; diary-selective-display in the diary buffer. This means some |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
402 ;; customizations will not take effect, eg: |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
403 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00466.html |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
404 ;; So the check for diary-selective-display was dropped. This means the |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
405 ;; diary will be displayed if one customizes a diary variable while |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
406 ;; just visiting the diary-file. This is i) unlikely, and ii) no great loss. |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
407 ;;;###cal-autoload |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
408 (defun diary-live-p () |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
409 "Return non-nil if the diary is being displayed." |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
410 (or (get-buffer diary-fancy-buffer) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
411 (and diary-file (find-buffer-visiting diary-file)))) |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
412 |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
413 ;;;###cal-autoload |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
414 (defun diary-set-maybe-redraw (symbol value) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
415 "Set SYMBOL's value to VALUE, and redraw the diary if necessary. |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
416 Redraws the diary if it is being displayed (note this is not the same as |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
417 just visiting the `diary-file'), and SYMBOL's value is to be changed." |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
418 (let ((oldvalue (symbol-value symbol))) |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
419 (custom-set-default symbol value) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
420 (and (not (equal value oldvalue)) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
421 (diary-live-p) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
422 ;; Note this assumes diary was called without prefix arg. |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
423 (diary)))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
424 |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
425 (define-obsolete-variable-alias 'number-of-diary-entries |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
426 'diary-number-of-entries "23.1") |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
427 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
428 (defcustom diary-number-of-entries 1 |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
429 "Specifies how many days of diary entries are to be displayed initially. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
430 This variable affects the diary display when the command \\[diary] is |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
431 used, or if the value of the variable `calendar-view-diary-initially-flag' |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
432 is non-nil. For example, if the default value 1 is used, then only the |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
433 current day's diary entries will be displayed. If the value 2 is used, |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
434 then both the current day's and the next day's entries will be displayed. |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
435 |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
436 The value can also be a vector such as [0 2 2 2 2 4 1]; this value says |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
437 to display no diary entries on Sunday, the entries for the current date |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
438 and the day after on Monday through Thursday, Friday through Monday's |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
439 entries on Friday, and only Saturday's entries on Saturday. |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
440 |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
441 This variable does not affect the diary display with the `d' command |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
442 from the calendar; in that case, the prefix argument controls the number |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
443 of days of diary entries displayed." |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
444 :type '(choice (integer :tag "Entries") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
445 (vector :value [0 0 0 0 0 0 0] |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
446 (integer :tag "Sunday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
447 (integer :tag "Monday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
448 (integer :tag "Tuesday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
449 (integer :tag "Wednesday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
450 (integer :tag "Thursday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
451 (integer :tag "Friday") |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
452 (integer :tag "Saturday"))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
453 :initialize 'custom-initialize-default |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
454 :set 'diary-set-maybe-redraw |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
455 :group 'diary) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
456 |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
457 ;;; More user options in calendar.el, holidays.el. |
92595 | 458 |
459 | |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
460 (defun diary-check-diary-file () |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
461 "Check that the file specified by `diary-file' exists and is readable. |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
462 If so, return the expanded file name, otherwise signal an error." |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
463 (if (and diary-file (file-exists-p diary-file)) |
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
464 (if (file-readable-p diary-file) |
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
465 diary-file |
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
466 (error "Diary file `%s' is not readable" diary-file)) |
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
467 (error "Diary file `%s' does not exist" diary-file))) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
468 |
13053 | 469 ;;;###autoload |
470 (defun diary (&optional arg) | |
471 "Generate the diary window for ARG days starting with the current date. | |
472 If no argument is provided, the number of days of diary entries is governed | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
473 by the variable `diary-number-of-entries'. A value of ARG less than 1 |
53557 | 474 does nothing. This function is suitable for execution in a `.emacs' file." |
13053 | 475 (interactive "P") |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
476 (diary-check-diary-file) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
477 (diary-list-entries (calendar-current-date) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
478 (if arg (prefix-numeric-value arg)))) |
13053 | 479 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
480 ;;;###cal-autoload |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
481 (defun diary-view-entries (&optional arg) |
13053 | 482 "Prepare and display a buffer with diary entries. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
483 Searches the file named in `diary-file' for entries that match |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
484 ARG days starting with the date indicated by the cursor position |
13053 | 485 in the displayed three-month calendar." |
486 (interactive "p") | |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
487 (diary-check-diary-file) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
488 (diary-list-entries (calendar-cursor-to-date t) arg)) |
13053 | 489 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
490 (define-obsolete-function-alias 'view-diary-entries 'diary-view-entries "22.1") |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
491 |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
492 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
493 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
494 (defun diary-view-other-diary-entries (arg dfile) |
13053 | 495 "Prepare and display buffer of diary entries from an alternative diary file. |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
496 Searches for entries that match ARG days, starting with the date indicated |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
497 by the cursor position in the displayed three-month calendar. |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
498 DFILE specifies the file to use as the diary file." |
13053 | 499 (interactive |
59043
5ddb0b71254b
(view-other-diary-entries): Use current-prefix-arg in interactive spec.
Glenn Morris <rgm@gnu.org>
parents:
58101
diff
changeset
|
500 (list (prefix-numeric-value current-prefix-arg) |
22412
6fdc14d2b071
Don't overide default value of diary-file.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents:
21957
diff
changeset
|
501 (read-file-name "Enter diary file name: " default-directory nil t))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
502 (let ((diary-file dfile)) |
70183
2febbeb39125
(view-other-diary-entries): Refer to `diary-view-entries' rather than
Glenn Morris <rgm@gnu.org>
parents:
68721
diff
changeset
|
503 (diary-view-entries arg))) |
13053 | 504 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
505 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
506 (define-obsolete-function-alias 'view-other-diary-entries |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
507 'diary-view-other-diary-entries "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
508 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
509 (defvar diary-syntax-table |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
510 (let ((st (copy-syntax-table (standard-syntax-table)))) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
511 (modify-syntax-entry ?* "w" st) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
512 (modify-syntax-entry ?: "w" st) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
513 st) |
13053 | 514 "The syntax table used when parsing dates in the diary file. |
515 It is the standard syntax table used in Fundamental mode, but with the | |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
516 syntax of `*' and `:' changed to be word constituents.") |
13053 | 517 |
49737
a8a5fd61aada
(diary-attrtype-convert): Convert an attribute value string to the desired type.
Juanma Barranquero <lekktu@gmail.com>
parents:
49598
diff
changeset
|
518 (defun diary-attrtype-convert (attrvalue type) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
519 "Convert string ATTRVALUE to TYPE appropriate for a face description. |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
520 Valid TYPEs are: string, symbol, int, stringtnil, tnil." |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
521 (cond ((eq type 'string) attrvalue) |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
522 ((eq type 'symbol) (intern-soft attrvalue)) |
92859 | 523 ((eq type 'int) (string-to-number attrvalue)) |
524 ((eq type 'stringtnil) | |
525 (cond ((string-equal "t" attrvalue) t) | |
526 ((string-equal "nil" attrvalue) nil) | |
527 (t attrvalue))) | |
528 ((eq type 'tnil) (string-equal "t" attrvalue)))) | |
49737
a8a5fd61aada
(diary-attrtype-convert): Convert an attribute value string to the desired type.
Juanma Barranquero <lekktu@gmail.com>
parents:
49598
diff
changeset
|
529 |
a8a5fd61aada
(diary-attrtype-convert): Convert an attribute value string to the desired type.
Juanma Barranquero <lekktu@gmail.com>
parents:
49598
diff
changeset
|
530 (defun diary-pull-attrs (entry fileglobattrs) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
531 "Search for matches for regexps from `diary-face-attrs'. |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
532 If ENTRY is nil, searches from the start of the current buffer, and |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
533 prepends all regexps with `diary-glob-file-regexp-prefix'. |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
534 If ENTRY is a string, search for matches in that string, and remove them. |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
535 Returns a list of ENTRY followed by (ATTRIBUTE VALUE) pairs. |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
536 When ENTRY is non-nil, FILEGLOBATTRS forms the start of the (ATTRIBUTE VALUE) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
537 pairs." |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
538 (let (regexp regnum attrname attrname attrvalue type ret-attr) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
539 (if (null entry) |
92859 | 540 (save-excursion |
541 (dolist (attr diary-face-attrs) | |
542 ;; FIXME inefficient searching. | |
543 (goto-char (point-min)) | |
544 (setq regexp (concat diary-glob-file-regexp-prefix (car attr)) | |
545 regnum (cadr attr) | |
546 attrname (nth 2 attr) | |
547 type (nth 3 attr) | |
548 attrvalue (if (re-search-forward regexp nil t) | |
549 (match-string-no-properties regnum))) | |
550 (and attrvalue | |
551 (setq attrvalue (diary-attrtype-convert attrvalue type)) | |
552 (setq ret-attr (append ret-attr | |
553 (list attrname attrvalue)))))) | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
554 (setq ret-attr fileglobattrs) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
555 (dolist (attr diary-face-attrs) |
92859 | 556 (setq regexp (car attr) |
557 regnum (cadr attr) | |
558 attrname (nth 2 attr) | |
559 type (nth 3 attr) | |
560 attrvalue nil) | |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
561 ;; If multiple matches, replace all, use the last (which may |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
562 ;; be the first instance in the line, if the regexp is |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
563 ;; anchored with $). |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
564 (while (string-match regexp entry) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
565 (setq attrvalue (match-string-no-properties regnum entry) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
566 entry (replace-match "" t t entry))) |
92859 | 567 (and attrvalue |
568 (setq attrvalue (diary-attrtype-convert attrvalue type)) | |
569 (setq ret-attr (append ret-attr (list attrname attrvalue)))))) | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
570 (list entry ret-attr))) |
50699
fa4e7ecda348
(fancy-diary-display-mode): Bind "q" to `quit-window'
Sam Steingold <sds@gnu.org>
parents:
49737
diff
changeset
|
571 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
572 |
70728 | 573 |
574 (defvar diary-modify-entry-list-string-function nil | |
575 "Function applied to entry string before putting it into the entries list. | |
576 Can be used by programs integrating a diary list into other buffers (e.g. | |
577 org.el and planner.el) to modify the string or add properties to it. | |
578 The function takes a string argument and must return a string.") | |
579 | |
92859 | 580 (defvar diary-entries-list) ; bound in diary-list-entries |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
581 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
582 (defun diary-add-to-list (date string specifier &optional marker |
70728 | 583 globcolor literal) |
584 "Add an entry to `diary-entries-list'. | |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
585 Do nothing if DATE or STRING are nil. DATE is the (MONTH DAY |
70728 | 586 YEAR) for which the entry applies; STRING is the text of the |
587 entry as it will appear in the diary (i.e. with any format | |
70729
9a90863c52b1
(add-to-diary-list): Fix typo in previous doc fix.
Glenn Morris <rgm@gnu.org>
parents:
70728
diff
changeset
|
588 strings such as \"%d\" expanded); SPECIFIER is the date part of |
70728 | 589 the entry as it appears in the diary-file; LITERAL is the entry |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
590 as it appears in the diary-file (i.e. before expansion). |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
591 If LITERAL is nil, it is taken to be the same as STRING. |
70728 | 592 |
593 The entry is added to the list as (DATE STRING SPECIFIER LOCATOR | |
594 GLOBCOLOR), where LOCATOR has the form (MARKER FILENAME LITERAL), | |
595 FILENAME being the file containing the diary entry." | |
596 (when (and date string) | |
597 (if diary-file-name-prefix | |
598 (let ((prefix (funcall diary-file-name-prefix-function | |
599 (buffer-file-name)))) | |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
600 (or (string-equal prefix "") |
70728 | 601 (setq string (format "[%s] %s" prefix string))))) |
602 (and diary-modify-entry-list-string-function | |
92859 | 603 (setq string (funcall diary-modify-entry-list-string-function |
604 string))) | |
70728 | 605 (setq diary-entries-list |
606 (append diary-entries-list | |
607 (list (list date string specifier | |
608 (list marker (buffer-file-name) literal) | |
609 globcolor)))))) | |
610 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
611 (define-obsolete-function-alias 'add-to-diary-list 'diary-add-to-list "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
612 |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
613 (defun diary-list-entries-2 (date mark globattr list-only |
95810
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
614 &optional months symbol gdate) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
615 "Internal subroutine of `diary-list-entries'. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
616 Find diary entries applying to DATE, by searching from point-min for |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
617 each element of `diary-date-forms'. MARK indicates an entry is non-marking. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
618 GLOBATTR is the list of global file attributes. If LIST-ONLY is |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
619 non-nil, don't change the buffer, only return a list of entries. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
620 Optional array MONTHS replaces `calendar-month-name-array', and |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
621 means months cannot be abbreviated. Optional string SYMBOL marks diary |
95810
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
622 entries of the desired type. If DATE is not Gregorian, then the |
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
623 Gregorian equivalent should be provided via GDATE. Returns non-nil if |
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
624 any entries were found." |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
625 (let* ((month (calendar-extract-month date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
626 (day (calendar-extract-day date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
627 (year (calendar-extract-year date)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
628 (dayname (format "%s\\|%s\\.?" (calendar-day-name date) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
629 (calendar-day-name date 'abbrev))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
630 (calendar-month-name-array (or months calendar-month-name-array)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
631 (monthname (format "\\*\\|%s%s" (calendar-month-name month) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
632 (if months "" |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
633 (format "\\|%s\\.?" |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
634 (calendar-month-name month 'abbrev))))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
635 (month (format "\\*\\|0*%d" month)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
636 (day (format "\\*\\|0*%d" day)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
637 (year (format "\\*\\|0*%d%s" year |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
638 (if diary-abbreviated-year-flag |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
639 (format "\\|%02d" (% year 100)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
640 ""))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
641 (case-fold-search t) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
642 entry-found) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
643 (dolist (date-form diary-date-forms) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
644 (let ((backup (when (eq (car date-form) 'backup) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
645 (setq date-form (cdr date-form)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
646 t)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
647 ;; date-form uses day etc as set above. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
648 (regexp (format "^%s?%s\\(%s\\)" (regexp-quote mark) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
649 (if symbol (regexp-quote symbol) "") |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
650 (mapconcat 'eval date-form "\\)\\(?:"))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
651 entry-start date-start temp) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
652 (goto-char (point-min)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
653 (while (re-search-forward regexp nil t) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
654 (if backup (re-search-backward "\\<" nil t)) |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
655 ;; regexp moves us past the end of date, onto the next line. |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
656 ;; Trailing whitespace after date not allowed (see diary-file). |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
657 (if (and (bolp) (not (looking-at "[ \t]"))) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
658 ;; Diary entry that consists only of date. |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
659 (backward-char 1) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
660 ;; Found a nonempty diary entry--make it |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
661 ;; visible and add it to the list. |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
662 (setq date-start (line-end-position 0)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
663 ;; Actual entry starts on the next-line? |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
664 (if (looking-at "[ \t]*\n[ \t]") (forward-line 1)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
665 (setq entry-found t |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
666 entry-start (point)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
667 (forward-line 1) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
668 (while (looking-at "[ \t]") ; continued entry |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
669 (forward-line 1)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
670 (unless (and (eobp) (not (bolp))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
671 (backward-char 1)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
672 (unless list-only |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
673 (remove-overlays date-start (point) 'invisible 'diary)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
674 (setq temp (diary-pull-attrs |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
675 (buffer-substring-no-properties |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
676 entry-start (point)) globattr)) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
677 (diary-add-to-list |
95810
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
678 (or gdate date) (car temp) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
679 (buffer-substring-no-properties (1+ date-start) (1- entry-start)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
680 (copy-marker entry-start) (cadr temp)))))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
681 entry-found)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
682 |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
683 (defvar original-date) ; from diary-list-entries |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
684 (defvar file-glob-attrs) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
685 (defvar list-only) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
686 (defvar number) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
687 |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
688 (defun diary-list-entries-1 (months symbol absfunc) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
689 "List diary entries of a certain type. |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
690 MONTHS is an array of month names. SYMBOL marks diary entries of the type |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
691 in question. ABSFUNC is a function that converts absolute dates to dates |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
692 of the appropriate type." |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
693 (let ((gdate original-date)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
694 (dotimes (idummy number) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
695 (diary-list-entries-2 |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
696 (funcall absfunc (calendar-absolute-from-gregorian gdate)) |
95810
57ade7d79485
(diary-list-entries-2): Accept optional Gregorian date, and add it,
Glenn Morris <rgm@gnu.org>
parents:
95410
diff
changeset
|
697 diary-nonmarking-symbol file-glob-attrs list-only months symbol gdate) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
698 (setq gdate |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
699 (calendar-gregorian-from-absolute |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
700 (1+ (calendar-absolute-from-gregorian gdate)))))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
701 (goto-char (point-min))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
702 |
110352 | 703 (defvar diary-including) ; dynamically bound in diary-include-other-diary-files |
704 (defvar diary-included-files nil | |
705 "List of any diary files included in the last call to `diary-list-entries'.") | |
706 | |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
707 ;; FIXME non-greg and list hooks run same number of times? |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
708 (defun diary-list-entries (date number &optional list-only) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
709 "Create and display a buffer containing the relevant lines in `diary-file'. |
13053 | 710 The arguments are DATE and NUMBER; the entries selected are those |
711 for NUMBER days starting with date DATE. The other entries are hidden | |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
712 using overlays. If NUMBER is less than 1, this function does nothing. |
13053 | 713 |
714 Returns a list of all relevant diary entries found, if any, in order by date. | |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
715 The list entries have the form ((MONTH DAY YEAR) STRING SPECIFIER) where |
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
716 \(MONTH DAY YEAR) is the date of the entry, STRING is the entry text, and |
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
717 SPECIFIER is the applicability. If the variable `diary-list-include-blanks' |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
718 is non-nil, this list includes a dummy diary entry consisting of the empty |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
719 string for a date with no diary entries. |
13053 | 720 |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
721 After the list is prepared, the following hooks are run: |
13053 | 722 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
723 `diary-nongregorian-listing-hook' can cull dates from the diary |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
724 and each included file, for example to process Islamic diary |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
725 entries. Applied to *each* file. |
13053 | 726 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
727 `diary-list-entries-hook' adds or manipulates diary entries from |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
728 external sources. Used, for example, to include diary entries |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
729 from other files or to sort the diary entries. Invoked *once* |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
730 only, before the display hook is run. |
13053 | 731 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
732 `diary-hook' is run last, after the diary is displayed. |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
733 This is used e.g. by `appt-check'. |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
734 |
92683
95412a4235fc
(diary-list-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
92675
diff
changeset
|
735 Functions called by these hooks may use the variables ORIGINAL-DATE |
95412a4235fc
(diary-list-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
92675
diff
changeset
|
736 and NUMBER, which are the arguments with which this function was called. |
95412a4235fc
(diary-list-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
92675
diff
changeset
|
737 Note that hook functions should _not_ use DATE, but ORIGINAL-DATE. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
738 \(Sexp diary entries may use DATE - see `diary-list-sexp-entries'.) |
92675
141c5cc6c6fe
(nongregorian-diary-marking-hook, list-sexp-diary-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
92672
diff
changeset
|
739 |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
740 This function displays the list using `diary-display-function', unless |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
741 LIST-ONLY is non-nil, in which case it just returns the list." |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
742 (unless number |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
743 (setq number (if (vectorp diary-number-of-entries) |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
744 (aref diary-number-of-entries (calendar-day-of-week date)) |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
745 diary-number-of-entries))) |
53557 | 746 (when (> number 0) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
747 (let* ((original-date date) ; save for possible use in the hooks |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
748 (date-string (calendar-date-string date)) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
749 (diary-buffer (find-buffer-visiting diary-file)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
750 diary-entries-list file-glob-attrs) |
110352 | 751 (or (bound-and-true-p diary-including) |
752 (setq diary-included-files nil)) | |
53557 | 753 (message "Preparing diary...") |
106369
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
754 (save-current-buffer |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
755 (if (not diary-buffer) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
756 (set-buffer (find-file-noselect diary-file t)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
757 (set-buffer diary-buffer) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
758 (or (verify-visited-file-modtime diary-buffer) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
759 (revert-buffer t t))) |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
760 ;; Setup things like the header-line-format and invisibility-spec. |
104661
4144d6c5c447
(diary-list-entries, diary-goto-entry)
Glenn Morris <rgm@gnu.org>
parents:
104548
diff
changeset
|
761 (if (eq major-mode (default-value 'major-mode)) |
77292
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
762 (diary-mode) |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
763 ;; This kludge is to make customizations to |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
764 ;; diary-header-line-flag after diary has been displayed |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
765 ;; take effect. Unconditionally calling (diary-mode) |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
766 ;; clobbers file local variables. |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
767 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00363.html |
c15c7123019d
(diary-header-line-format): Add a custom :set function.
Glenn Morris <rgm@gnu.org>
parents:
77279
diff
changeset
|
768 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00404.html |
77293
e262afb73c6e
Improve previous fix by only setting header-line-format in diary-mode.
Glenn Morris <rgm@gnu.org>
parents:
77292
diff
changeset
|
769 (if (eq major-mode 'diary-mode) |
e262afb73c6e
Improve previous fix by only setting header-line-format in diary-mode.
Glenn Morris <rgm@gnu.org>
parents:
77292
diff
changeset
|
770 (setq header-line-format (and diary-header-line-flag |
e262afb73c6e
Improve previous fix by only setting header-line-format in diary-mode.
Glenn Morris <rgm@gnu.org>
parents:
77292
diff
changeset
|
771 diary-header-line-format)))) |
57255 | 772 ;; d-s-p is passed to the diary display function. |
773 (let ((diary-saved-point (point))) | |
774 (save-excursion | |
106369
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
775 (save-restriction |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
776 (widen) ; bug#5093 |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
777 (setq file-glob-attrs (cadr (diary-pull-attrs nil ""))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
778 (with-syntax-table diary-syntax-table |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
779 (goto-char (point-min)) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
780 (unless list-only |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
781 (let ((ol (make-overlay (point-min) (point-max) nil t nil))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
782 (set (make-local-variable 'diary-selective-display) t) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
783 (overlay-put ol 'invisible 'diary) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
784 (overlay-put ol 'evaporate t))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
785 (dotimes (idummy number) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
786 (let ((sexp-found (diary-list-sexp-entries date)) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
787 (entry-found (diary-list-entries-2 |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
788 date diary-nonmarking-symbol |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
789 file-glob-attrs list-only))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
790 (if diary-list-include-blanks |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
791 (or sexp-found entry-found |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
792 (diary-add-to-list date "" "" "" ""))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
793 (setq date |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
794 (calendar-gregorian-from-absolute |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
795 (1+ (calendar-absolute-from-gregorian date))))))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
796 (goto-char (point-min)) |
106369
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
797 (run-hooks 'diary-nongregorian-listing-hook |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
798 'diary-list-entries-hook) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
799 (unless list-only |
106369
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
800 (if (and diary-display-function |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
801 (listp diary-display-function)) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
802 ;; Backwards compatibility. |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
803 (run-hooks 'diary-display-function) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
804 (funcall (or diary-display-function |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
805 'diary-simple-display)))) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
806 (run-hooks 'diary-hook) |
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
807 diary-entries-list))))))) |
13053 | 808 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
809 (define-obsolete-function-alias 'list-diary-entries 'diary-list-entries "22.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
810 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
811 (defun diary-unhide-everything () |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
812 "Show all invisible text in the diary." |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
813 (kill-local-variable 'diary-selective-display) |
106993 | 814 (save-restriction ; bug#5477 |
815 (widen) | |
816 (remove-overlays (point-min) (point-max) 'invisible 'diary)) | |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
817 (kill-local-variable 'mode-line-format)) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
818 |
92859 | 819 (defvar original-date) ; bound in diary-list-entries |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
820 (defvar number) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
821 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
822 (defun diary-include-other-diary-files () |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
823 "Include the diary entries from other diary files with those of `diary-file'. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
824 This function is suitable for use with `diary-list-entries-hook'; |
13053 | 825 it enables you to use shared diary files together with your own. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
826 The files included are specified in the `diary-file' by lines of this form: |
13053 | 827 #include \"filename\" |
828 This is recursive; that is, #include directives in diary files thus included | |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
829 are obeyed. You can change the `#include' to some other string by changing |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
830 the variable `diary-include-string'." |
13053 | 831 (goto-char (point-min)) |
832 (while (re-search-forward | |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
833 (format "^%s \"\\([^\"]*\\)\"" (regexp-quote diary-include-string)) |
13053 | 834 nil t) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
835 (let ((diary-file (match-string-no-properties 1)) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
836 (diary-list-entries-hook 'diary-include-other-diary-files) |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
837 (diary-display-function 'ignore) |
110352 | 838 (diary-including t) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
839 diary-hook diary-list-include-blanks) |
13053 | 840 (if (file-exists-p diary-file) |
841 (if (file-readable-p diary-file) | |
842 (unwind-protect | |
110352 | 843 (setq diary-included-files |
844 (append diary-included-files | |
845 (list (expand-file-name diary-file))) | |
846 diary-entries-list | |
13053 | 847 (append diary-entries-list |
70635
dcac2668b45d
(include-other-diary-files, diary-mail-entries): Refer to
Glenn Morris <rgm@gnu.org>
parents:
70183
diff
changeset
|
848 (diary-list-entries original-date number))) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
849 (with-current-buffer (find-buffer-visiting diary-file) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
850 (diary-unhide-everything))) |
13053 | 851 (beep) |
852 (message "Can't read included diary file %s" diary-file) | |
853 (sleep-for 2)) | |
854 (beep) | |
855 (message "Can't find included diary file %s" diary-file) | |
856 (sleep-for 2)))) | |
92859 | 857 (goto-char (point-min))) |
13053 | 858 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
859 (define-obsolete-function-alias 'include-other-diary-files |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
860 'diary-include-other-diary-files "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
861 |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
862 (defvar date-string) ; bound in diary-list-entries |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
863 |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
864 (defun diary-display-no-entries () |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
865 "Common subroutine of `diary-simple-display' and `diary-fancy-display'. |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
866 Handles the case where there are no diary entries. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
867 Returns a cons (NOENTRIES . HOLIDAY-STRING)." |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
868 (let* ((holiday-list (if diary-show-holidays-flag |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
869 (calendar-check-holidays original-date))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
870 (hol-string (format "%s%s%s" |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
871 date-string |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
872 (if holiday-list ": " "") |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
873 (mapconcat 'identity holiday-list "; "))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
874 (msg (format "No diary entries for %s" hol-string)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
875 ;; Empty list, or single item with no text. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
876 ;; FIXME multiple items with no text? |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
877 (noentries (or (not diary-entries-list) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
878 (and (not (cdr diary-entries-list)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
879 (string-equal "" (cadr |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
880 (car diary-entries-list))))))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
881 ;; Inconsistency: whether or not the holidays are displayed in a |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
882 ;; separate buffer depends on if there are diary entries. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
883 (when noentries |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
884 (if (or (< (length msg) (frame-width)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
885 (not holiday-list)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
886 (message "%s" msg) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
887 ;; holiday-list which is too wide for a message gets a buffer. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
888 (calendar-in-read-only-buffer holiday-buffer |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
889 (calendar-set-mode-line (format "Holidays for %s" date-string)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
890 (insert (mapconcat 'identity holiday-list "\n"))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
891 (message "No diary entries for %s" date-string))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
892 (cons noentries hol-string))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
893 |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
894 |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
895 (defvar diary-saved-point) ; bound in diary-list-entries |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
896 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
897 (defun diary-simple-display () |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
898 "Display the diary buffer if there are any relevant entries or holidays. |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
899 Entries that do not apply are made invisible. Holidays are shown |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
900 in the mode line. This is an option for `diary-display-function'." |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
901 ;; If selected window is dedicated (to the calendar), need a new one |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
902 ;; to display the diary. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
903 (let* ((pop-up-frames (or pop-up-frames |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
904 (window-dedicated-p (selected-window)))) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
905 (dbuff (find-buffer-visiting diary-file)) |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
906 (empty (diary-display-no-entries))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
907 ;; This may be too wide, but when simple diary is used there is |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
908 ;; nowhere else for the holidays to go. Also, it is documented in |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
909 ;; diary-show-holidays-flag that the holidays go in the mode-line. |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
910 ;; FIXME however if there are no diary entries a separate buffer |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
911 ;; is displayed - this is inconsistent. |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
912 (with-current-buffer dbuff |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
913 (calendar-set-mode-line (format "Diary for %s" (cdr empty)))) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
914 (unless (car empty) ; no entries |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
915 (with-current-buffer dbuff |
57255 | 916 (let ((window (display-buffer (current-buffer)))) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
917 ;; d-s-p is passed from diary-list-entries. |
57255 | 918 (set-window-point window diary-saved-point) |
919 (set-window-start window (point-min)))) | |
13053 | 920 (message "Preparing diary...done")))) |
921 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
922 (define-obsolete-function-alias 'simple-diary-display |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
923 'diary-simple-display "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
924 |
104865
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
925 (define-button-type 'diary-entry 'action #'diary-goto-entry |
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
926 'face 'diary-button 'help-echo "Find this diary entry" |
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
927 'follow-link t) |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
928 |
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
929 (defun diary-goto-entry (button) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
930 "Jump to the diary entry for the BUTTON at point." |
70728 | 931 (let* ((locator (button-get button 'locator)) |
932 (marker (car locator)) | |
933 markbuf file) | |
934 ;; If marker pointing to diary location is valid, use that. | |
935 (if (and marker (setq markbuf (marker-buffer marker))) | |
936 (progn | |
937 (pop-to-buffer markbuf) | |
938 (goto-char (marker-position marker))) | |
939 ;; Marker is invalid (eg buffer has been killed). | |
940 (or (and (setq file (cadr locator)) | |
941 (file-exists-p file) | |
942 (find-file-other-window file) | |
943 (progn | |
104661
4144d6c5c447
(diary-list-entries, diary-goto-entry)
Glenn Morris <rgm@gnu.org>
parents:
104548
diff
changeset
|
944 (when (eq major-mode (default-value 'major-mode)) (diary-mode)) |
70728 | 945 (goto-char (point-min)) |
946 (if (re-search-forward (format "%s.*\\(%s\\)" | |
947 (regexp-quote (nth 2 locator)) | |
948 (regexp-quote (nth 3 locator))) | |
949 nil t) | |
950 (goto-char (match-beginning 1))))) | |
951 (message "Unable to locate this diary entry"))))) | |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
952 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
953 (defun diary-fancy-display () |
13053 | 954 "Prepare a diary buffer with relevant entries in a fancy, noneditable form. |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
955 Holidays are shown unless `diary-show-holidays-flag' is nil. |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
956 Days with no diary entries are not shown (even if that day is a |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
957 holiday), unless `diary-list-include-blanks' is non-nil. |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
958 |
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
959 This is an option for `diary-display-function'." |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
960 ;; Turn off selective-display in the diary file's buffer. |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
961 (with-current-buffer (find-buffer-visiting diary-file) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
962 (diary-unhide-everything)) |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
963 (unless (car (diary-display-no-entries)) ; no entries |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
964 ;; Prepare the fancy diary buffer. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
965 (calendar-in-read-only-buffer diary-fancy-buffer |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
966 (calendar-set-mode-line "Diary Entries") |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
967 (let ((holiday-list-last-month 1) |
13053 | 968 (holiday-list-last-year 1) |
93270
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
969 (date (list 0 0 0)) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
970 holiday-list) |
639cd5027418
(diary-face-attrs): Fix type of `width'.
Glenn Morris <rgm@gnu.org>
parents:
93232
diff
changeset
|
971 (dolist (entry diary-entries-list) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
972 (unless (calendar-date-equal date (car entry)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
973 (setq date (car entry)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
974 (and diary-show-holidays-flag |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
975 (calendar-date-compare |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
976 (list (list holiday-list-last-month |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
977 (calendar-last-day-of-month |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
978 holiday-list-last-month |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
979 holiday-list-last-year) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
980 holiday-list-last-year)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
981 (list date)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
982 ;; We need to get the holidays for the next 3 months. |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
983 (setq holiday-list-last-month |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
984 (calendar-extract-month date) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
985 holiday-list-last-year |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
986 (calendar-extract-year date)) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
987 (progn |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
988 (calendar-increment-month |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
989 holiday-list-last-month holiday-list-last-year 1) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
990 t) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
991 (setq holiday-list |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
992 (let ((displayed-month holiday-list-last-month) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
993 (displayed-year holiday-list-last-year)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
994 (calendar-holiday-list))) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
995 (calendar-increment-month |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
996 holiday-list-last-month holiday-list-last-year 1)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
997 (let ((longest 0) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
998 date-holiday-list cc) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
999 ;; Make a list of all holidays for date. |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1000 (dolist (h holiday-list) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1001 (if (calendar-date-equal date (car h)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1002 (setq date-holiday-list (append date-holiday-list |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1003 (cdr h))))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1004 (insert (if (bobp) "" ?\n) (calendar-date-string date)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1005 (if date-holiday-list (insert ": ")) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1006 (setq cc (current-column)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1007 (insert (mapconcat (lambda (x) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1008 (setq longest (max longest (length x))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1009 x) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1010 date-holiday-list |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1011 (concat "\n" (make-string cc ?\s)))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1012 (insert ?\n (make-string (+ cc longest) ?=) ?\n))) |
92859 | 1013 (let ((this-entry (cadr entry)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1014 this-loc marks temp-face) |
92859 | 1015 (unless (zerop (length this-entry)) |
1016 (if (setq this-loc (nth 3 entry)) | |
104865
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
1017 (insert-button this-entry |
92859 | 1018 ;; (MARKER FILENAME SPECIFIER LITERAL) |
1019 'locator (list (car this-loc) | |
1020 (cadr this-loc) | |
1021 (nth 2 entry) | |
1022 (or (nth 2 this-loc) | |
1023 (nth 1 entry))) | |
1024 :type 'diary-entry) | |
104865
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
1025 (insert this-entry)) |
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
1026 (insert ?\n) |
101900
f0a6af6c77e8
(diary-fancy-display): It doesn't make sense to check font-lock-mode
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
1027 ;; Doesn't make sense to check font-lock-mode - see |
f0a6af6c77e8
(diary-fancy-display): It doesn't make sense to check font-lock-mode
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
1028 ;; comments above diary-entry-marker in calendar.el. |
f0a6af6c77e8
(diary-fancy-display): It doesn't make sense to check font-lock-mode
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
1029 (and ; font-lock-mode |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1030 (setq marks (nth 4 entry)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1031 (save-excursion |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1032 (setq temp-face (calendar-make-temp-face marks)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1033 (search-backward this-entry) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1034 (overlay-put |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1035 (make-overlay (match-beginning 0) (match-end 0)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1036 'face temp-face))))))) |
105178
d0f5b10b5fb4
(diary-fancy-display): Always run the hook.
Glenn Morris <rgm@gnu.org>
parents:
105021
diff
changeset
|
1037 ;; FIXME can't remember what this check was for. |
d0f5b10b5fb4
(diary-fancy-display): Always run the hook.
Glenn Morris <rgm@gnu.org>
parents:
105021
diff
changeset
|
1038 ;; To prevent something looping, or a minor optimization? |
d0f5b10b5fb4
(diary-fancy-display): Always run the hook.
Glenn Morris <rgm@gnu.org>
parents:
105021
diff
changeset
|
1039 (if (eq major-mode 'diary-fancy-display-mode) |
d0f5b10b5fb4
(diary-fancy-display): Always run the hook.
Glenn Morris <rgm@gnu.org>
parents:
105021
diff
changeset
|
1040 (run-hooks 'diary-fancy-display-mode-hook) |
d0f5b10b5fb4
(diary-fancy-display): Always run the hook.
Glenn Morris <rgm@gnu.org>
parents:
105021
diff
changeset
|
1041 (diary-fancy-display-mode)) |
54537 | 1042 (calendar-set-mode-line date-string) |
13053 | 1043 (message "Preparing diary...done")))) |
1044 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1045 (define-obsolete-function-alias 'fancy-diary-display |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1046 'diary-fancy-display "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1047 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1048 ;; FIXME modernize? |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1049 (defun diary-print-entries () |
13053 | 1050 "Print a hard copy of the diary display. |
1051 | |
1052 If the simple diary display is being used, prepare a temp buffer with the | |
1053 visible lines of the diary buffer, add a heading line composed from the mode | |
1054 line, print the temp buffer, and destroy it. | |
1055 | |
1056 If the fancy diary display is being used, just print the buffer. | |
1057 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1058 The hooks given by the variable `diary-print-entries-hook' are called to do |
13053 | 1059 the actual printing." |
1060 (interactive) | |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1061 (let ((diary-buffer (get-buffer diary-fancy-buffer)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1062 temp-buffer heading start end) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1063 (if diary-buffer |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1064 (with-current-buffer diary-buffer |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1065 (run-hooks 'diary-print-entries-hook)) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
1066 (or (setq diary-buffer (find-buffer-visiting diary-file)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1067 (error "You don't have a diary buffer!")) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1068 ;; Name affects printing? |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1069 (setq temp-buffer (get-buffer-create " *Printable Diary Entries*")) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1070 (with-current-buffer diary-buffer |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1071 (setq heading |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1072 (if (not (stringp mode-line-format)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1073 "All Diary Entries" |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1074 (string-match "^-*\\([^-].*[^-]\\)-*$" mode-line-format) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1075 (match-string 1 mode-line-format)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1076 start (point-min)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1077 (while |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1078 (progn |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1079 (setq end (next-single-char-property-change start 'invisible)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1080 (unless (get-char-property start 'invisible) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1081 (with-current-buffer temp-buffer |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1082 (insert-buffer-substring diary-buffer start end))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1083 (setq start end) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1084 (and end (< end (point-max)))))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1085 (set-buffer temp-buffer) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1086 (goto-char (point-min)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1087 (insert heading "\n" |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1088 (make-string (length heading) ?=) "\n") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1089 (run-hooks 'diary-print-entries-hook) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1090 (kill-buffer temp-buffer)))) |
13053 | 1091 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1092 (define-obsolete-function-alias 'print-diary-entries |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1093 'diary-print-entries "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1094 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
1095 ;;;###cal-autoload |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1096 (defun diary-show-all-entries () |
13053 | 1097 "Show all of the diary entries in the diary file. |
1098 This function gets rid of the selective display of the diary file so that | |
1099 all entries, not just some, are visible. If there is no diary buffer, one | |
1100 is created." | |
1101 (interactive) | |
105451
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1102 (let* ((d-file (diary-check-diary-file)) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1103 (pop-up-frames (or pop-up-frames |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1104 (window-dedicated-p (selected-window)))) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1105 (win (selected-window)) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1106 (height (window-height))) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1107 (with-current-buffer (or (find-buffer-visiting d-file) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1108 (find-file-noselect d-file t)) |
104661
4144d6c5c447
(diary-list-entries, diary-goto-entry)
Glenn Morris <rgm@gnu.org>
parents:
104548
diff
changeset
|
1109 (when (eq major-mode (default-value 'major-mode)) (diary-mode)) |
65509
56d6dbdf0600
(diary-show-all-entries): Fix last change,
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65476
diff
changeset
|
1110 (diary-unhide-everything) |
105451
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1111 (display-buffer (current-buffer)) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1112 (when (and (/= height (window-height win)) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1113 (with-current-buffer (window-buffer win) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1114 (derived-mode-p 'calendar-mode))) |
816590cee63a
(diary-show-all-entries): Re-fit the calendar window if necessary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105178
diff
changeset
|
1115 (fit-window-to-buffer win))))) |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1116 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1117 (define-obsolete-function-alias 'show-all-diary-entries |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1118 'diary-show-all-entries "22.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1119 |
21957
a74e1cee89bf
(diary-mail-entries): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
21893
diff
changeset
|
1120 ;;;###autoload |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1121 (defun diary-mail-entries (&optional ndays) |
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1122 "Send a mail message showing diary entries for next NDAYS days. |
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1123 If no prefix argument is given, NDAYS is set to `diary-mail-days'. |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1124 Mail is sent to the address specified by `diary-mail-addr'. |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1125 |
93284
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1126 Here is an example of a script to call `diary-mail-entries', |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1127 suitable for regular scheduling using cron (or at). Note that |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1128 since `emacs -script' does not load your `.emacs' file, you |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1129 should ensure that all relevant variables are set. |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1130 |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1131 #!/usr/bin/emacs -script |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1132 ;; diary-rem.el - run the Emacs diary-reminder |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1133 |
93284
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1134 \(setq diary-mail-days 3 |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1135 diary-file \"/path/to/diary.file\" |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1136 calendar-date-style 'european |
93284
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1137 diary-mail-addr \"user@host.name\") |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1138 |
93284
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1139 \(diary-mail-entries) |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1140 |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1141 # diary-rem.el ends here |
1a0fa935a13b
(diary-mail-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93280
diff
changeset
|
1142 " |
35500
38b437f4134e
(diary-float): Fix case of MONTH
Gerd Moellmann <gerd@gnu.org>
parents:
34036
diff
changeset
|
1143 (interactive "P") |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1144 (if (string-equal diary-mail-addr "") |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1145 (error "You must set `diary-mail-addr' to use this command") |
95410
d933144b818e
(diary-display-function): New name for diary-display-hook. Keep old
Glenn Morris <rgm@gnu.org>
parents:
94653
diff
changeset
|
1146 (let ((diary-display-function 'diary-fancy-display)) |
70635
dcac2668b45d
(include-other-diary-files, diary-mail-entries): Refer to
Glenn Morris <rgm@gnu.org>
parents:
70183
diff
changeset
|
1147 (diary-list-entries (calendar-current-date) (or ndays diary-mail-days))) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1148 (compose-mail diary-mail-addr |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1149 (concat "Diary entries generated " |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1150 (calendar-date-string (calendar-current-date)))) |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1151 (insert |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1152 (if (get-buffer diary-fancy-buffer) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1153 (with-current-buffer diary-fancy-buffer (buffer-string)) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1154 "No entries found")) |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1155 (call-interactively (get mail-user-agent 'sendfunc)))) |
20345
69818ee01344
(diary-mail-addr, diary-mail-days): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
20269
diff
changeset
|
1156 |
52117
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1157 (defun diary-name-pattern (string-array &optional abbrev-array paren) |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1158 "Return a regexp matching the strings in the array STRING-ARRAY. |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1159 If the optional argument ABBREV-ARRAY is present, then the function |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1160 `calendar-abbrev-construct' is used to construct abbreviations from the |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1161 two supplied arrays. The returned regexp will then also match these |
52117
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1162 abbreviations, with or without final `.' characters. If the optional |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1163 argument PAREN is non-nil, the regexp is surrounded by parentheses." |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1164 (regexp-opt (append string-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1165 (if abbrev-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1166 (calendar-abbrev-construct abbrev-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1167 string-array)) |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1168 (if abbrev-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1169 (calendar-abbrev-construct abbrev-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1170 string-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1171 'period)) |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1172 nil) |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
1173 paren)) |
13053 | 1174 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1175 (defvar diary-marking-entries-flag nil |
13053 | 1176 "True during the marking of diary entries, nil otherwise.") |
1177 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1178 (defvar diary-marking-entry-flag nil |
13053 | 1179 "True during the marking of diary entries, if current entry is marking.") |
1180 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1181 ;; file-glob-attrs bound in diary-mark-entries. |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1182 (defun diary-mark-entries-1 (markfunc &optional months symbol absfunc) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1183 "Mark diary entries of a certain type. |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1184 MARKFUNC is a function that marks entries of the appropriate type |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1185 matching a given date pattern. MONTHS is an array of month names. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1186 SYMBOL marks diary entries of the type in question. ABSFUNC is a |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1187 function that converts absolute dates to dates of the appropriate type. " |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1188 (let ((dayname (diary-name-pattern calendar-day-name-array |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1189 calendar-day-abbrev-array)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1190 (monthname (format "%s\\|\\*" |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1191 (if months |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1192 (diary-name-pattern months) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1193 (diary-name-pattern calendar-month-name-array |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1194 calendar-month-abbrev-array)))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1195 (month "[0-9]+\\|\\*") |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1196 (day "[0-9]+\\|\\*") |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1197 (year "[0-9]+\\|\\*") |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1198 (case-fold-search t) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1199 marks) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1200 (dolist (date-form diary-date-forms) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1201 (if (eq (car date-form) 'backup) ; ignore 'backup directive |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1202 (setq date-form (cdr date-form))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1203 (let* ((l (length date-form)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1204 (d-name-pos (- l (length (memq 'dayname date-form)))) |
93276
487270d1d4da
(diary-mark-entries-1): Fix position offsets in non-gregorian case.
Glenn Morris <rgm@gnu.org>
parents:
93274
diff
changeset
|
1205 (d-name-pos (if (/= l d-name-pos) (1+ d-name-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1206 (m-name-pos (- l (length (memq 'monthname date-form)))) |
93276
487270d1d4da
(diary-mark-entries-1): Fix position offsets in non-gregorian case.
Glenn Morris <rgm@gnu.org>
parents:
93274
diff
changeset
|
1207 (m-name-pos (if (/= l m-name-pos) (1+ m-name-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1208 (d-pos (- l (length (memq 'day date-form)))) |
93276
487270d1d4da
(diary-mark-entries-1): Fix position offsets in non-gregorian case.
Glenn Morris <rgm@gnu.org>
parents:
93274
diff
changeset
|
1209 (d-pos (if (/= l d-pos) (1+ d-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1210 (m-pos (- l (length (memq 'month date-form)))) |
93276
487270d1d4da
(diary-mark-entries-1): Fix position offsets in non-gregorian case.
Glenn Morris <rgm@gnu.org>
parents:
93274
diff
changeset
|
1211 (m-pos (if (/= l m-pos) (1+ m-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1212 (y-pos (- l (length (memq 'year date-form)))) |
93276
487270d1d4da
(diary-mark-entries-1): Fix position offsets in non-gregorian case.
Glenn Morris <rgm@gnu.org>
parents:
93274
diff
changeset
|
1213 (y-pos (if (/= l y-pos) (1+ y-pos))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1214 (regexp (format "^%s\\(%s\\)" |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1215 (if symbol (regexp-quote symbol) "") |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1216 (mapconcat 'eval date-form "\\)\\(")))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1217 (goto-char (point-min)) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1218 (while (re-search-forward regexp nil t) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1219 (let* ((dd-name |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1220 (if d-name-pos |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1221 (match-string-no-properties d-name-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1222 (mm-name |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1223 (if m-name-pos |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1224 (match-string-no-properties m-name-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1225 (mm (string-to-number |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1226 (if m-pos |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1227 (match-string-no-properties m-pos) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1228 ""))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1229 (dd (string-to-number |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1230 (if d-pos |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1231 (match-string-no-properties d-pos) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1232 ""))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1233 (y-str (if y-pos |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1234 (match-string-no-properties y-pos))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1235 (yy (if (not y-str) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1236 0 |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1237 (if (and (= (length y-str) 2) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1238 diary-abbreviated-year-flag) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1239 (let* ((current-y |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1240 (calendar-extract-year |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1241 (if absfunc |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1242 (funcall |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1243 absfunc |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1244 (calendar-absolute-from-gregorian |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1245 (calendar-current-date))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1246 (calendar-current-date)))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1247 (y (+ (string-to-number y-str) |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1248 ;; Current century, eg 2000. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1249 (* 100 (/ current-y 100)))) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1250 (offset (- y current-y))) |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1251 ;; Add 2-digit year to current century. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1252 ;; If more than 50 years in the future, |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1253 ;; assume last century. If more than 50 |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1254 ;; years in the past, assume next century. |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1255 (if (> offset 50) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1256 (- y 100) |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1257 (if (< offset -50) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1258 (+ y 100) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1259 y))) |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1260 (string-to-number y-str))))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1261 (setq marks (cadr (diary-pull-attrs |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1262 (buffer-substring-no-properties |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1263 (point) (line-end-position)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1264 file-glob-attrs))) |
104548
d787a9b6a87e
(diary-mark-entries-1): Only mark all days of a given name if the
Glenn Morris <rgm@gnu.org>
parents:
102818
diff
changeset
|
1265 ;; Only mark all days of a given name if the pattern |
d787a9b6a87e
(diary-mark-entries-1): Only mark all days of a given name if the
Glenn Morris <rgm@gnu.org>
parents:
102818
diff
changeset
|
1266 ;; contains no more specific elements. |
d787a9b6a87e
(diary-mark-entries-1): Only mark all days of a given name if the
Glenn Morris <rgm@gnu.org>
parents:
102818
diff
changeset
|
1267 (if (and dd-name (not (or d-pos m-pos y-pos))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1268 (calendar-mark-days-named |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1269 (cdr (assoc-string dd-name |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1270 (calendar-make-alist |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1271 calendar-day-name-array |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1272 0 nil calendar-day-abbrev-array) t)) marks) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1273 (if mm-name |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1274 (setq mm |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1275 (if (string-equal mm-name "*") 0 |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1276 (cdr (assoc-string |
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1277 mm-name |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1278 (if months (calendar-make-alist months) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1279 (calendar-make-alist |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1280 calendar-month-name-array |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1281 1 nil calendar-month-abbrev-array)) t))))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1282 (funcall markfunc mm dd yy marks)))))))) |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1283 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
1284 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1285 (defun diary-mark-entries (&optional redraw) |
13053 | 1286 "Mark days in the calendar window that have diary entries. |
60650
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1287 Each entry in the diary file visible in the calendar window is |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1288 marked. After the entries are marked, the hooks |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1289 `diary-nongregorian-marking-hook' and `diary-mark-entries-hook' |
60650
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1290 are run. If the optional argument REDRAW is non-nil (which is |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1291 the case interactively, for example) then any existing diary |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1292 marks are first removed. This is intended to deal with deleted |
60650
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1293 diary entries." |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1294 (interactive "p") |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1295 ;; To remove any deleted diary entries. Do not redraw when: |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1296 ;; i) processing #include diary files (else only get the marks from |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1297 ;; the last #include file processed). |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1298 ;; ii) called via calendar-redraw (since calendar has already been |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1299 ;; erased). |
5294e5833aef
(mark-diary-entries): Use new optional argument REDRAW rather than
Glenn Morris <rgm@gnu.org>
parents:
60567
diff
changeset
|
1300 ;; Use of REDRAW handles both of these cases. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1301 (when (and redraw calendar-mark-diary-entries-flag) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1302 (setq calendar-mark-diary-entries-flag nil) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1303 (calendar-redraw)) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1304 (let ((diary-marking-entries-flag t) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1305 file-glob-attrs) |
65619
e09cff91900a
(mark-diary-entries): Revert last change.
Romain Francoise <romain@orebokech.com>
parents:
65597
diff
changeset
|
1306 (with-current-buffer (find-file-noselect (diary-check-diary-file) t) |
e09cff91900a
(mark-diary-entries): Revert last change.
Romain Francoise <romain@orebokech.com>
parents:
65597
diff
changeset
|
1307 (save-excursion |
104661
4144d6c5c447
(diary-list-entries, diary-goto-entry)
Glenn Morris <rgm@gnu.org>
parents:
104548
diff
changeset
|
1308 (when (eq major-mode (default-value 'major-mode)) (diary-mode)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1309 (setq calendar-mark-diary-entries-flag t) |
65552
2f26d67eea8d
(mark-diary-entries): Don't move point. Use with-syntax-table and dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65509
diff
changeset
|
1310 (message "Marking diary entries...") |
2f26d67eea8d
(mark-diary-entries): Don't move point. Use with-syntax-table and dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65509
diff
changeset
|
1311 (setq file-glob-attrs (nth 1 (diary-pull-attrs nil '()))) |
2f26d67eea8d
(mark-diary-entries): Don't move point. Use with-syntax-table and dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65509
diff
changeset
|
1312 (with-syntax-table diary-syntax-table |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1313 (diary-mark-entries-1 'calendar-mark-date-pattern) |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1314 (diary-mark-sexp-entries) |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1315 (run-hooks 'diary-nongregorian-marking-hook |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1316 'diary-mark-entries-hook)) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1317 (message "Marking diary entries...done"))))) |
13053 | 1318 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1319 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1320 (define-obsolete-function-alias 'mark-diary-entries 'diary-mark-entries "23.1") |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1321 |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1322 (defun diary-sexp-entry (sexp entry date) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1323 "Process a SEXP diary ENTRY for DATE." |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1324 (let ((result (if calendar-debug-sexp |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1325 (let ((stack-trace-on-error t)) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1326 (eval (car (read-from-string sexp)))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1327 (condition-case nil |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1328 (eval (car (read-from-string sexp))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1329 (error |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1330 (beep) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1331 (message "Bad sexp at line %d in %s: %s" |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1332 (count-lines (point-min) (point)) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1333 diary-file sexp) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1334 (sleep-for 2)))))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1335 (cond ((stringp result) result) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1336 ((and (consp result) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1337 (stringp (cdr result))) result) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1338 (result entry) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1339 (t nil)))) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1340 |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1341 (defvar displayed-year) ; bound in calendar-generate |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1342 (defvar displayed-month) |
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1343 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1344 (defun diary-mark-sexp-entries () |
13053 | 1345 "Mark days in the calendar window that have sexp diary entries. |
1346 Each entry in the diary file (or included files) visible in the calendar window | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1347 is marked. See the documentation for the function `diary-list-sexp-entries'." |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1348 (let* ((sexp-mark (regexp-quote diary-sexp-entry-symbol)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1349 (s-entry (format "^\\(%s(\\)\\|\\(%s%s(diary-remind\\)" sexp-mark |
13053 | 1350 (regexp-quote diary-nonmarking-symbol) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1351 sexp-mark)) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
1352 (file-glob-attrs (nth 1 (diary-pull-attrs nil '()))) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1353 m y first-date last-date date mark file-glob-attrs |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1354 sexp-start sexp entry entry-start) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1355 (with-current-buffer calendar-buffer |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1356 (setq m displayed-month |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1357 y displayed-year)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1358 (calendar-increment-month m y -1) |
93954
3784131a315f
(diary-mark-sexp-entries): Fix replacement of calendar-for-loop.
Glenn Morris <rgm@gnu.org>
parents:
93950
diff
changeset
|
1359 (setq first-date (calendar-absolute-from-gregorian (list m 1 y))) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1360 (calendar-increment-month m y 2) |
13053 | 1361 (setq last-date |
1362 (calendar-absolute-from-gregorian | |
1363 (list m (calendar-last-day-of-month m y) y))) | |
1364 (goto-char (point-min)) | |
1365 (while (re-search-forward s-entry nil t) | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1366 (setq diary-marking-entry-flag (char-equal (preceding-char) ?\()) |
13053 | 1367 (re-search-backward "(") |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1368 (setq sexp-start (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1369 (forward-sexp) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1370 (setq sexp (buffer-substring-no-properties sexp-start (point))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1371 (forward-char 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1372 (if (and (bolp) (not (looking-at "[ \t]"))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1373 ;; Diary entry consists only of the sexp. |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1374 (progn |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1375 (backward-char 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1376 (setq entry "")) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1377 (setq entry-start (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1378 ;; Find end of entry. |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1379 (forward-line 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1380 (while (looking-at "[ \t]") |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1381 (forward-line 1)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1382 (if (bolp) (backward-char 1)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1383 (setq entry (buffer-substring-no-properties entry-start (point)))) |
93954
3784131a315f
(diary-mark-sexp-entries): Fix replacement of calendar-for-loop.
Glenn Morris <rgm@gnu.org>
parents:
93950
diff
changeset
|
1384 (setq date (1- first-date)) |
93994
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
1385 ;; FIXME this loops over all visible dates. |
601131d03e75
Move custom group here from calendar.el.
Glenn Morris <rgm@gnu.org>
parents:
93954
diff
changeset
|
1386 ;; Could be optimized in many cases. Depends on whether t or * present. |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1387 (while (<= (setq date (1+ date)) last-date) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1388 (when (setq mark (diary-sexp-entry |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1389 sexp entry |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1390 (calendar-gregorian-from-absolute date))) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1391 (calendar-mark-visible-date |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1392 (calendar-gregorian-from-absolute date) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1393 (or (cadr (diary-pull-attrs entry file-glob-attrs)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1394 (if (consp mark) (car mark))))))))) |
13053 | 1395 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1396 (define-obsolete-function-alias 'mark-sexp-diary-entries |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1397 'diary-mark-sexp-entries "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1398 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1399 (defun diary-mark-included-diary-files () |
13053 | 1400 "Mark the diary entries from other diary files with those of the diary file. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1401 This function is suitable for use with `diary-mark-entries-hook'; it enables |
13053 | 1402 you to use shared diary files together with your own. The files included are |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1403 specified in the `diary-file' by lines of this form: |
13053 | 1404 #include \"filename\" |
1405 This is recursive; that is, #include directives in diary files thus included | |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1406 are obeyed. You can change the `#include' to some other string by changing |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1407 the variable `diary-include-string'." |
13053 | 1408 (goto-char (point-min)) |
1409 (while (re-search-forward | |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
1410 (format "^%s \"\\([^\"]*\\)\"" (regexp-quote diary-include-string)) |
13053 | 1411 nil t) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
1412 (let* ((diary-file (match-string-no-properties 1)) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1413 (diary-mark-entries-hook 'diary-mark-included-diary-files) |
62901
555a704ce217
(mark-included-diary-files): Only kill included diary buffer if it was
Glenn Morris <rgm@gnu.org>
parents:
62402
diff
changeset
|
1414 (dbuff (find-buffer-visiting diary-file))) |
13053 | 1415 (if (file-exists-p diary-file) |
1416 (if (file-readable-p diary-file) | |
1417 (progn | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1418 (diary-mark-entries) |
62901
555a704ce217
(mark-included-diary-files): Only kill included diary buffer if it was
Glenn Morris <rgm@gnu.org>
parents:
62402
diff
changeset
|
1419 (unless dbuff |
555a704ce217
(mark-included-diary-files): Only kill included diary buffer if it was
Glenn Morris <rgm@gnu.org>
parents:
62402
diff
changeset
|
1420 (kill-buffer (find-buffer-visiting diary-file)))) |
13053 | 1421 (beep) |
1422 (message "Can't read included diary file %s" diary-file) | |
1423 (sleep-for 2)) | |
1424 (beep) | |
1425 (message "Can't find included diary file %s" diary-file) | |
1426 (sleep-for 2)))) | |
1427 (goto-char (point-min))) | |
1428 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1429 (define-obsolete-function-alias 'mark-included-diary-files |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1430 'diary-mark-included-diary-files "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1431 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1432 (defun calendar-mark-days-named (dayname &optional color) |
13053 | 1433 "Mark all dates in the calendar window that are day DAYNAME of the week. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1434 0 means all Sundays, 1 means all Mondays, and so on. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1435 Optional argument COLOR is passed to `calendar-mark-visible-date' as MARK." |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1436 (with-current-buffer calendar-buffer |
13053 | 1437 (let ((prev-month displayed-month) |
1438 (prev-year displayed-year) | |
1439 (succ-month displayed-month) | |
1440 (succ-year displayed-year) | |
1441 (last-day) | |
1442 (day)) | |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1443 (calendar-increment-month succ-month succ-year 1) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1444 (calendar-increment-month prev-month prev-year -1) |
13053 | 1445 (setq day (calendar-absolute-from-gregorian |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1446 (calendar-nth-named-day 1 dayname prev-month prev-year)) |
92859 | 1447 last-day (calendar-absolute-from-gregorian |
92862 | 1448 (calendar-nth-named-day -1 dayname succ-month succ-year))) |
13053 | 1449 (while (<= day last-day) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1450 (calendar-mark-visible-date (calendar-gregorian-from-absolute day) |
92859 | 1451 color) |
13053 | 1452 (setq day (+ day 7)))))) |
1453 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1454 (define-obsolete-function-alias 'mark-calendar-days-named |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1455 'calendar-mark-days-named "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1456 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1457 (defun calendar-mark-month (month year p-month p-day p-year &optional color) |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1458 "Mark dates in the MONTH/YEAR that conform to pattern P-MONTH/P-DAY/P-YEAR. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1459 A value of 0 in any position of the pattern is a wildcard. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1460 Optional argument COLOR is passed to `calendar-mark-visible-date' as MARK." |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1461 (if (or (and (= month p-month) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1462 (or (zerop p-year) (= year p-year))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1463 (and (zerop p-month) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1464 (or (zerop p-year) (= year p-year)))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1465 (if (zerop p-day) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1466 (dotimes (i (calendar-last-day-of-month month year)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1467 (calendar-mark-visible-date (list month (1+ i) year) color)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1468 (calendar-mark-visible-date (list month p-day year) color)))) |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1469 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1470 (define-obsolete-function-alias 'mark-calendar-month |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1471 'calendar-mark-month "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1472 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1473 (defun calendar-mark-date-pattern (month day year &optional color) |
13053 | 1474 "Mark all dates in the calendar window that conform to MONTH/DAY/YEAR. |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1475 A value of 0 in any position is a wildcard. Optional argument COLOR is |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1476 passed to `calendar-mark-visible-date' as MARK." |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
1477 (with-current-buffer calendar-buffer |
13053 | 1478 (let ((m displayed-month) |
1479 (y displayed-year)) | |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1480 (calendar-increment-month m y -1) |
82085
85f6cb7c9558
(diary-list-entries, (mark-calendar-date-pattern): Use `dotimes'
Glenn Morris <rgm@gnu.org>
parents:
77293
diff
changeset
|
1481 (dotimes (idummy 3) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1482 (calendar-mark-month m y month day year color) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1483 (calendar-increment-month m y 1))))) |
13053 | 1484 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1485 (define-obsolete-function-alias 'mark-calendar-date-pattern |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1486 'calendar-mark-date-pattern "23.1") |
13053 | 1487 |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1488 ;; Bahai, Hebrew, Islamic. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1489 (defun calendar-mark-complex (month day year fromabs &optional color) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1490 "Mark dates in the calendar conforming to MONTH DAY YEAR of some system. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1491 The function FROMABS converts absolute dates to the appropriate date system. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1492 Optional argument COLOR is passed to `calendar-mark-visible-date' as MARK." |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1493 ;; Not one of the simple cases--check all visible dates for match. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1494 ;; Actually, the following code takes care of ALL of the cases, but |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1495 ;; it's much too slow to be used for the simple (common) cases. |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1496 (let* ((m displayed-month) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1497 (y displayed-year) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1498 (first-date (progn |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1499 (calendar-increment-month m y -1) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1500 (calendar-absolute-from-gregorian (list m 1 y)))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1501 (last-date (progn |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1502 (calendar-increment-month m y 2) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1503 (calendar-absolute-from-gregorian |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1504 (list m (calendar-last-day-of-month m y) y)))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1505 (date (1- first-date)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1506 local-date) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1507 (while (<= (setq date (1+ date)) last-date) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1508 (setq local-date (funcall fromabs date)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1509 (and (or (zerop month) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1510 (= month (calendar-extract-month local-date))) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1511 (or (zerop day) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1512 (= day (calendar-extract-day local-date))) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1513 (or (zerop year) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1514 (= year (calendar-extract-year local-date))) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1515 (calendar-mark-visible-date |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1516 (calendar-gregorian-from-absolute date) color))))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1517 |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1518 ;; Bahai, Islamic. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1519 (defun calendar-mark-1 (month day year fromabs toabs &optional color) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1520 "Mark dates in the calendar conforming to MONTH DAY YEAR of some system. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1521 The function FROMABS converts absolute dates to the appropriate date system. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1522 The function TOABS carries out the inverse operation. Optional argument |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1523 COLOR is passed to `calendar-mark-visible-date' as MARK." |
105829
328150f0cf76
* url-util.el (url-insert-entities-in-string):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105451
diff
changeset
|
1524 (with-current-buffer calendar-buffer |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1525 (if (and (not (zerop month)) (not (zerop day))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1526 (if (not (zerop year)) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1527 ;; Fully specified date. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1528 (let ((date (calendar-gregorian-from-absolute |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1529 (funcall toabs (list month day year))))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1530 (if (calendar-date-is-visible-p date) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1531 (calendar-mark-visible-date date color))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1532 ;; Month and day in any year--this taken from the holiday stuff. |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1533 (let* ((i-date (funcall fromabs |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1534 (calendar-absolute-from-gregorian |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1535 (list displayed-month 15 displayed-year)))) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1536 (m (calendar-extract-month i-date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1537 (y (calendar-extract-year i-date)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1538 date) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1539 (unless (< m 1) ; calendar doesn't apply |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1540 (calendar-increment-month m y (- 10 month)) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1541 (and (> m 7) ; date might be visible |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1542 (calendar-date-is-visible-p |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1543 (setq date (calendar-gregorian-from-absolute |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1544 (funcall toabs (list month day y))))) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1545 (calendar-mark-visible-date date color))))) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1546 (calendar-mark-complex month day year |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1547 'calendar-bahai-from-absolute color)))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1548 |
13053 | 1549 |
1550 (defun diary-entry-time (s) | |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1551 "Return time at the beginning of the string S as a military-style integer. |
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1552 For example, returns 1325 for 1:25pm. |
53548
65fe9b0d6ac6
(diary-entry-time): Also accept time in the form XX[.XX][am/pm/AM/PM].
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52412
diff
changeset
|
1553 |
65fe9b0d6ac6
(diary-entry-time): Also accept time in the form XX[.XX][am/pm/AM/PM].
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52412
diff
changeset
|
1554 Returns `diary-unknown-time' (default value -9999) if no time is recognized. |
65fe9b0d6ac6
(diary-entry-time): Also accept time in the form XX[.XX][am/pm/AM/PM].
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52412
diff
changeset
|
1555 The recognized forms are XXXX, X:XX, or XX:XX (military time), and XXam, |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1556 XXAM, XXpm, XXPM, XX:XXam, XX:XXAM, XX:XXpm, or XX:XXPM. A period (.) can |
53557 | 1557 be used instead of a colon (:) to separate the hour and minute parts." |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1558 (let (case-fold-search) |
92859 | 1559 (cond ((string-match ; military time |
1560 "\\`[ \t\n]*\\([0-9]?[0-9]\\)[:.]?\\([0-9][0-9]\\)\\(\\>\\|[^ap]\\)" | |
53548
65fe9b0d6ac6
(diary-entry-time): Also accept time in the form XX[.XX][am/pm/AM/PM].
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52412
diff
changeset
|
1561 s) |
92859 | 1562 (+ (* 100 (string-to-number (match-string 1 s))) |
1563 (string-to-number (match-string 2 s)))) | |
1564 ((string-match ; hour only (XXam or XXpm) | |
1565 "\\`[ \t\n]*\\([0-9]?[0-9]\\)\\([ap]\\)m\\>" s) | |
1566 (+ (* 100 (% (string-to-number (match-string 1 s)) 12)) | |
1567 (if (equal ?a (downcase (aref s (match-beginning 2)))) | |
1568 0 1200))) | |
92862 | 1569 ((string-match ; hour and minute (XX:XXam or XX:XXpm) |
92859 | 1570 "\\`[ \t\n]*\\([0-9]?[0-9]\\)[:.]\\([0-9][0-9]\\)\\([ap]\\)m\\>" s) |
1571 (+ (* 100 (% (string-to-number (match-string 1 s)) 12)) | |
1572 (string-to-number (match-string 2 s)) | |
1573 (if (equal ?a (downcase (aref s (match-beginning 3)))) | |
1574 0 1200))) | |
1575 (t diary-unknown-time)))) ; unrecognizable | |
34036
c2a8edb5b5ec
(diary-entry-time): Anchor pattern correctly
Gerd Moellmann <gerd@gnu.org>
parents:
32415
diff
changeset
|
1576 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1577 (defun diary-entry-compare (e1 e2) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1578 "Return t if E1 is earlier than E2." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1579 (or (calendar-date-compare e1 e2) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1580 (and (calendar-date-equal (car e1) (car e2)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1581 (let* ((ts1 (cadr e1)) (t1 (diary-entry-time ts1)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1582 (ts2 (cadr e2)) (t2 (diary-entry-time ts2))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1583 (or (< t1 t2) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1584 (and (= t1 t2) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1585 (string-lessp ts1 ts2))))))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1586 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1587 (defun diary-sort-entries () |
110355
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
1588 "Sort the list of diary entries by time of day. |
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
1589 If you add this function to `diary-list-entries-hook', it should |
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
1590 be the last item in the hook, in case earlier items add diary |
be6132068051
Doc fixes related to diary-sort-entries.
Glenn Morris <rgm@gnu.org>
parents:
110352
diff
changeset
|
1591 entries, or change the order." |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1592 (setq diary-entries-list (sort diary-entries-list 'diary-entry-compare))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1593 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1594 (define-obsolete-function-alias 'sort-diary-entries 'diary-sort-entries "23.1") |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1595 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1596 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1597 (defun diary-list-sexp-entries (date) |
13053 | 1598 "Add sexp entries for DATE from the diary file to `diary-entries-list'. |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1599 Also, make them visible in the diary. Returns t if any entries are found. |
13053 | 1600 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1601 Sexp diary entries must be prefaced by a `diary-sexp-entry-symbol' |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1602 \(normally `%%'). The form of a sexp diary entry is |
13053 | 1603 |
1604 %%(SEXP) ENTRY | |
1605 | |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1606 Both ENTRY and DATE are available when the SEXP is evaluated. If |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1607 the SEXP returns nil, the diary entry does not apply. If it |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1608 returns a non-nil value, ENTRY will be taken to apply to DATE; if |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1609 the value is a string, that string will be the diary entry in the |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1610 fancy diary display. |
13053 | 1611 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1612 For example, the following diary entry will apply to the 21st of |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1613 the month if it is a weekday and the Friday before if the 21st is |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1614 on a weekend: |
13053 | 1615 |
1616 &%%(let ((dayname (calendar-day-of-week date)) | |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1617 (day (calendar-extract-day date))) |
13053 | 1618 (or |
1619 (and (= day 21) (memq dayname '(1 2 3 4 5))) | |
1620 (and (memq day '(19 20)) (= dayname 5))) | |
1621 ) UIUC pay checks deposited | |
1622 | |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1623 A number of built-in functions are available for this type of |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1624 diary entry. In the following, the optional parameter MARK |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1625 specifies a face or single-character string to use when |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1626 highlighting the day in the calendar. For those functions that |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1627 take MONTH, DAY, and YEAR as arguments, the order of the input |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1628 parameters changes according to `calendar-date-style' (e.g. to |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1629 DAY MONTH YEAR in the European style). |
13053 | 1630 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1631 %%(diary-date MONTH DAY YEAR &optional MARK) text |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1632 Entry applies if date is MONTH, DAY, YEAR. DAY, MONTH, and YEAR can |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1633 be a list of integers, `t' (meaning all values), or an integer. |
13053 | 1634 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1635 %%(diary-float MONTH DAYNAME N &optional DAY MARK) text |
94455
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1636 Entry will appear on the Nth DAYNAME after/before MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1637 DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1638 If N>0, use the Nth DAYNAME after MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1639 If N<0, use the Nth DAYNAME before MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1640 DAY defaults to 1 if N>0, and MONTH's last day otherwise. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1641 MONTH can be a list of months, a single month, or `t' to |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1642 specify all months. |
13053 | 1643 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1644 %%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1645 Entry will appear on dates between M1/D1/Y1 and M2/D2/Y2, |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1646 inclusive. |
13053 | 1647 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1648 %%(diary-anniversary MONTH DAY YEAR &optional MARK) text |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1649 Entry will appear on anniversary dates of MONTH DAY, YEAR. |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1650 Text can contain `%d' or `%d%s'; `%d' will be replaced by the |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1651 number of years since the MONTH DAY, YEAR, and `%s' by the |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1652 ordinal ending of that number (i.e. `st', `nd', `rd' or `th', |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1653 as appropriate). The anniversary of February 29 is |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1654 considered to be March 1 in a non-leap year. |
13053 | 1655 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1656 %%(diary-cyclic N MONTH DAY YEAR &optional MARK) text |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1657 Entry will appear every N days, starting MONTH DAY, YEAR. |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1658 Text can contain `%d' or `%d%s'; `%d' will be replaced by the |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1659 number of repetitions since the MONTH DAY, YEAR and `%s' by |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1660 the ordinal ending of that number (i.e. `st', `nd', `rd' or |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1661 `th', as appropriate). |
13053 | 1662 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1663 %%(diary-remind SEXP DAYS &optional MARKING) text |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1664 Entry is a reminder for diary sexp SEXP. DAYS is either a |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1665 single number or a list of numbers indicating the number(s) |
94283
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1666 of days before the event that the warning(s) should occur. |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1667 A negative number -DAYS has the same meaning as a list (1 2 ... DAYS). |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1668 If the current date is (one of) DAYS before the event indicated |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1669 by EXPR, then a suitable message (as specified by |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1670 `diary-remind-message') appears. In addition to the |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1671 reminders beforehand, the diary entry also appears on the |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1672 date itself. If optional MARKING is non-nil then the |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1673 *reminders* are marked on the calendar. Marking of reminders |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1674 is independent of whether the entry *itself* is a marking or |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1675 non-marking one. |
13053 | 1676 |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
1677 %%(diary-hebrew-yahrzeit MONTH DAY YEAR) text |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1678 Text is assumed to be the name of the person; the date is the |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1679 date of death on the *civil* calendar. The diary entry will |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1680 appear on the proper Hebrew-date anniversary and on the day |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1681 before. |
13053 | 1682 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1683 All the remaining functions do not accept any text, and so only |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1684 make sense with `diary-fancy-display'. Most produce output every day. |
13053 | 1685 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1686 `diary-day-of-year' - day of year and number of days remaining |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1687 `diary-iso-date' - ISO commercial date |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1688 `diary-astro-day-number' - astronomical (Julian) day number |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1689 `diary-sunrise-sunset' - local times of sunrise and sunset |
13053 | 1690 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1691 These functions give the date in alternative calendrical systems: |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1692 |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1693 `diary-bahai-date', `diary-chinese-date', `diary-coptic-date', |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1694 `diary-ethiopic-date', `diary-french-date', `diary-hebrew-date', |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1695 `diary-islamic-date', `diary-julian-date', `diary-mayan-date', |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1696 `diary-persian-date' |
13053 | 1697 |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1698 Theses functions only produce output on certain dates: |
13053 | 1699 |
96351
58d55b9662d9
(diary-list-sexp-entries): Doc update.
Glenn Morris <rgm@gnu.org>
parents:
96047
diff
changeset
|
1700 `diary-lunar-phases' - phases of moon (on the appropriate days) |
93751
243401294d46
(list-sexp-diary-entries): Update doc for rename.
Glenn Morris <rgm@gnu.org>
parents:
93741
diff
changeset
|
1701 `diary-hebrew-omer' - Omer count, within 50 days after Passover |
243401294d46
(list-sexp-diary-entries): Update doc for rename.
Glenn Morris <rgm@gnu.org>
parents:
93741
diff
changeset
|
1702 `diary-hebrew-parasha' - weekly parasha, every Saturday |
243401294d46
(list-sexp-diary-entries): Update doc for rename.
Glenn Morris <rgm@gnu.org>
parents:
93741
diff
changeset
|
1703 `diary-hebrew-rosh-hodesh' - Rosh Hodesh, or the day or Saturday before |
243401294d46
(list-sexp-diary-entries): Update doc for rename.
Glenn Morris <rgm@gnu.org>
parents:
93741
diff
changeset
|
1704 `diary-hebrew-sabbath-candles' - local time of candle lighting, on Fridays |
13053 | 1705 |
1706 | |
93280
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1707 Marking these entries is *extremely* time consuming, so it is |
e4f021df35fd
(list-sexp-diary-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93276
diff
changeset
|
1708 best if they are non-marking." |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
1709 (let ((s-entry (format "^%s?%s(" (regexp-quote diary-nonmarking-symbol) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1710 (regexp-quote diary-sexp-entry-symbol))) |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1711 entry-found file-glob-attrs marks |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1712 sexp-start sexp entry specifier entry-start line-start |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1713 diary-entry temp literal) |
13053 | 1714 (goto-char (point-min)) |
106369
74b7ca95d469
(diary-list-entries): Replace superfluous save-excursion with
Glenn Morris <rgm@gnu.org>
parents:
105857
diff
changeset
|
1715 (setq file-glob-attrs (nth 1 (diary-pull-attrs nil '()))) |
13053 | 1716 (while (re-search-forward s-entry nil t) |
1717 (backward-char 1) | |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1718 (setq sexp-start (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1719 (forward-sexp) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1720 (setq sexp (buffer-substring-no-properties sexp-start (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1721 line-start (line-end-position 0) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1722 specifier |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1723 (buffer-substring-no-properties (1+ line-start) (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1724 entry-start (1+ line-start)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1725 (forward-char 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1726 (if (and (bolp) (not (looking-at "[ \t]"))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1727 ;; Diary entry consists only of the sexp. |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1728 (progn |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1729 (backward-char 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1730 (setq entry "")) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1731 (setq entry-start (point)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1732 (forward-line 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1733 (while (looking-at "[ \t]") |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1734 (forward-line 1)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1735 (backward-char 1) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1736 (setq entry (buffer-substring-no-properties entry-start (point)))) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1737 (setq diary-entry (diary-sexp-entry sexp entry date) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1738 literal entry ; before evaluation |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1739 entry (if (consp diary-entry) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1740 (cdr diary-entry) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1741 diary-entry)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1742 (when diary-entry |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1743 (remove-overlays line-start (point) 'invisible 'diary) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1744 (if (< 0 (length entry)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1745 (setq temp (diary-pull-attrs entry file-glob-attrs) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1746 entry (nth 0 temp) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1747 marks (nth 1 temp)))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1748 (diary-add-to-list date entry specifier |
93527
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1749 (if entry-start (copy-marker entry-start)) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1750 marks literal) |
9854e685368d
(fancy-diary-display): Check for font-lock-mode before using faces.
Glenn Morris <rgm@gnu.org>
parents:
93503
diff
changeset
|
1751 (setq entry-found (or entry-found diary-entry))) |
13053 | 1752 entry-found)) |
1753 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1754 (define-obsolete-function-alias 'list-sexp-diary-entries |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1755 'diary-list-sexp-entries "23.1") |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1756 |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1757 (defun diary-make-date (a b c) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1758 "Convert A B C into the internal calendar date form. |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1759 The expected order of the inputs depends on `calendar-date-style', |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1760 e.g. in the European case, A = day, B = month, C = year. Returns |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1761 a list (MONTH DAY YEAR), i.e. the American style, which is the |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1762 form used internally by the calendar and diary." |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1763 (cond ((eq calendar-date-style 'iso) ; YMD |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1764 (list b c a)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1765 ((eq calendar-date-style 'european) ; DMY |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1766 (list b a c)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1767 (t (list a b c)))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1768 |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1769 |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1770 ;;; Sexp diary functions. |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1771 |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1772 (defvar date) |
92672
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1773 (defvar entry) |
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1774 |
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1775 ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1776 (defun diary-date (month day year &optional mark) |
13053 | 1777 "Specific date(s) diary entry. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1778 Entry applies if date is MONTH, DAY, YEAR. Each parameter can be a |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1779 list of integers, `t' (meaning all values), or an integer. The order |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1780 of the input parameters changes according to `calendar-date-style' |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1781 \(e.g. to DAY MONTH YEAR in the European style). |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1782 |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1783 An optional parameter MARK specifies a face or single-character string |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1784 to use when highlighting the day in the calendar." |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1785 (let* ((ddate (diary-make-date month day year)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1786 (dd (calendar-extract-day ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1787 (mm (calendar-extract-month ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1788 (yy (calendar-extract-year ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1789 (m (calendar-extract-month date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1790 (y (calendar-extract-year date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1791 (d (calendar-extract-day date))) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1792 (and |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1793 (or (and (listp dd) (memq d dd)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1794 (equal d dd) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1795 (eq dd t)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1796 (or (and (listp mm) (memq m mm)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1797 (equal m mm) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1798 (eq mm t)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1799 (or (and (listp yy) (memq y yy)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1800 (equal y yy) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1801 (eq yy t)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1802 (cons mark entry)))) |
13053 | 1803 |
92672
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1804 ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1805 (defun diary-block (m1 d1 y1 m2 d2 y2 &optional mark) |
13053 | 1806 "Block diary entry. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1807 Entry applies if date is between, or on one of, two dates. The order |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1808 of the input parameters changes according to `calendar-date-style' |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1809 \(e.g. to D1, M1, Y1, D2, M2, Y2 in the European style). |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1810 |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1811 An optional parameter MARK specifies a face or single-character string |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1812 to use when highlighting the day in the calendar." |
13053 | 1813 (let ((date1 (calendar-absolute-from-gregorian |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1814 (diary-make-date m1 d1 y1))) |
13053 | 1815 (date2 (calendar-absolute-from-gregorian |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1816 (diary-make-date m2 d2 y2))) |
13053 | 1817 (d (calendar-absolute-from-gregorian date))) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1818 (and (<= date1 d) (<= d date2) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1819 (cons mark entry)))) |
13053 | 1820 |
92672
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1821 ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1822 (defun diary-float (month dayname n &optional day mark) |
94455
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1823 "Diary entry for the Nth DAYNAME after/before MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1824 DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1825 If N>0, use the Nth DAYNAME after MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1826 If N<0, use the Nth DAYNAME before MONTH DAY. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1827 DAY defaults to 1 if N>0, and MONTH's last day otherwise. |
4c39d8bea007
(diary-list-sexp-entries, diary-float): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94283
diff
changeset
|
1828 MONTH can be a list of months, an integer, or `t' (meaning all months). |
46826
e020f18c490a
(diary-mail-entries): Use `compose-mail'
Sam Steingold <sds@gnu.org>
parents:
46620
diff
changeset
|
1829 Optional MARK specifies a face or single-character string to use when |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1830 highlighting the day in the calendar." |
92859 | 1831 ;; This is messy because the diary entry may apply, but the date on which it |
1832 ;; is based can be in a different month/year. For example, asking for the | |
1833 ;; first Monday after December 30. For large values of |n| the problem is | |
1834 ;; more grotesque. | |
17892
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1835 (and (= dayname (calendar-day-of-week date)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1836 (let* ((m (calendar-extract-month date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1837 (d (calendar-extract-day date)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1838 (y (calendar-extract-year date)) |
92859 | 1839 ;; Last (n>0) or first (n<0) possible base date for entry. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1840 (limit |
17892
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1841 (calendar-nth-named-absday (- n) dayname m y d)) |
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1842 (last-abs (if (> n 0) limit (+ limit 6))) |
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1843 (first-abs (if (> n 0) (- limit 6) limit)) |
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1844 (last (calendar-gregorian-from-absolute last-abs)) |
b3514551f08d
(diary-float): Rewritten to fix bug when base date
Richard M. Stallman <rms@gnu.org>
parents:
17626
diff
changeset
|
1845 (first (calendar-gregorian-from-absolute first-abs)) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1846 ;; m1, d1 is first possible base date. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1847 (m1 (calendar-extract-month first)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1848 (d1 (calendar-extract-day first)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1849 (y1 (calendar-extract-year first)) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1850 ;; m2, d2 is last possible base date. |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1851 (m2 (calendar-extract-month last)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1852 (d2 (calendar-extract-day last)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1853 (y2 (calendar-extract-year last))) |
92859 | 1854 (if (or (and (= m1 m2) ; only possible base dates in one month |
1855 (or (eq month t) | |
1856 (if (listp month) | |
35500
38b437f4134e
(diary-float): Fix case of MONTH
Gerd Moellmann <gerd@gnu.org>
parents:
34036
diff
changeset
|
1857 (memq m1 month) |
92859 | 1858 (= m1 month))) |
1859 (let ((d (or day (if (> n 0) | |
1860 1 | |
1861 (calendar-last-day-of-month m1 y1))))) | |
1862 (and (<= d1 d) (<= d d2)))) | |
1863 ;; Only possible base dates straddle two months. | |
1864 (and (or (< y1 y2) | |
1865 (and (= y1 y2) (< m1 m2))) | |
1866 (or | |
1867 ;; m1, d1 works as a base date. | |
1868 (and | |
1869 (or (eq month t) | |
1870 (if (listp month) | |
35500
38b437f4134e
(diary-float): Fix case of MONTH
Gerd Moellmann <gerd@gnu.org>
parents:
34036
diff
changeset
|
1871 (memq m1 month) |
92859 | 1872 (= m1 month))) |
1873 (<= d1 (or day (if (> n 0) | |
1874 1 | |
1875 (calendar-last-day-of-month m1 y1))))) | |
1876 ;; m2, d2 works as a base date. | |
1877 (and (or (eq month t) | |
1878 (if (listp month) | |
35500
38b437f4134e
(diary-float): Fix case of MONTH
Gerd Moellmann <gerd@gnu.org>
parents:
34036
diff
changeset
|
1879 (memq m2 month) |
92859 | 1880 (= m2 month))) |
1881 (<= (or day (if (> n 0) | |
1882 1 | |
1883 (calendar-last-day-of-month m2 y2))) | |
1884 d2))))) | |
1885 (cons mark entry))))) | |
13053 | 1886 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1887 (defun diary-ordinal-suffix (n) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1888 "Ordinal suffix for N. (That is, `st', `nd', `rd', or `th', as appropriate.)" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1889 (if (or (memq (% n 100) '(11 12 13)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1890 (< 3 (% n 10))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1891 "th" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1892 (aref ["th" "st" "nd" "rd"] (% n 10)))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
1893 |
92672
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1894 ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
1895 (defun diary-anniversary (month day &optional year mark) |
13053 | 1896 "Anniversary diary entry. |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1897 Entry applies if date is the anniversary of MONTH, DAY, YEAR. |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1898 The order of the input parameters changes according to |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1899 `calendar-date-style' (e.g. to DAY MONTH YEAR in the European style). |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1900 |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1901 The diary entry can contain `%d' or `%d%s'; the %d will be replaced |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1902 by the number of years since the MONTH, DAY, YEAR, and the %s will |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1903 be replaced by the ordinal ending of that number (that is, `st', |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1904 `nd', `rd' or `th', as appropriate). The anniversary of February 29 |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1905 is considered to be March 1 in non-leap years. |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1906 |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1907 An optional parameter MARK specifies a face or single-character |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1908 string to use when highlighting the day in the calendar." |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1909 (let* ((ddate (diary-make-date month day year)) |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1910 (dd (calendar-extract-day ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1911 (mm (calendar-extract-month ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1912 (yy (calendar-extract-year ddate)) |
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
1913 (y (calendar-extract-year date)) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1914 (diff (if yy (- y yy) 100))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1915 (and (= mm 2) (= dd 29) (not (calendar-leap-year-p y)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1916 (setq mm 3 |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1917 dd 1)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1918 (and (> diff 0) (calendar-date-equal (list mm dd y) date) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1919 (cons mark (format entry diff (diary-ordinal-suffix diff)))))) |
13053 | 1920 |
92672
6f28457f84ac
(entry): Declare for compiler part-way through.
Glenn Morris <rgm@gnu.org>
parents:
92664
diff
changeset
|
1921 ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1922 (defun diary-cyclic (n month day year &optional mark) |
13053 | 1923 "Cycle diary entry--entry applies every N days starting at MONTH, DAY, YEAR. |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1924 The order of the input parameters changes according to |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1925 `calendar-date-style' (e.g. to N DAY MONTH YEAR in the European |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1926 style). The entry can contain `%d' or `%d%s'; the %d will be |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1927 replaced by the number of repetitions since the MONTH DAY YEAR, |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1928 and %s by the ordinal ending of that number (that is, `st', `nd', |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
1929 `rd' or `th', as appropriate). |
46620
f367f20901c0
(mark-sexp-diary-entries): Retrieve mark
Richard M. Stallman <rms@gnu.org>
parents:
44732
diff
changeset
|
1930 |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1931 An optional parameter MARK specifies a face or single-character |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1932 string to use when highlighting the day in the calendar." |
102818
076b74f811b6
(diary-cyclic): Check for +ve N.
Glenn Morris <rgm@gnu.org>
parents:
101900
diff
changeset
|
1933 (or (> n 0) |
076b74f811b6
(diary-cyclic): Check for +ve N.
Glenn Morris <rgm@gnu.org>
parents:
101900
diff
changeset
|
1934 (error "Day count must be positive")) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1935 (let* ((diff (- (calendar-absolute-from-gregorian date) |
13053 | 1936 (calendar-absolute-from-gregorian |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1937 (diary-make-date month day year)))) |
13053 | 1938 (cycle (/ diff n))) |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1939 (and (>= diff 0) (zerop (% diff n)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
1940 (cons mark (format entry cycle (diary-ordinal-suffix cycle)))))) |
13053 | 1941 |
1942 (defun diary-day-of-year () | |
1943 "Day of year and number of days remaining in the year of date diary entry." | |
1944 (calendar-day-of-year-string date)) | |
1945 | |
1946 (defun diary-remind (sexp days &optional marking) | |
1947 "Provide a reminder of a diary entry. | |
94283
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1948 SEXP is a diary-sexp. DAYS is either a single number or a list |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1949 of numbers indicating the number(s) of days before the event that |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1950 the warning(s) should occur on. A negative number -DAYS has the |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1951 same meaning as a list (1 2 ... DAYS). If the current date |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1952 is (one of) DAYS before the event indicated by SEXP, then this function |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1953 returns a suitable message (as specified by `diary-remind-message'). |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1954 |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1955 In addition to the reminders beforehand, the diary entry also |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1956 appears on the date itself. |
13053 | 1957 |
94283
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1958 A `diary-nonmarking-symbol' at the beginning of the line of the |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1959 `diary-remind' entry specifies that the diary entry (not the |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1960 reminder) is non-marking. Marking of reminders is independent of |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1961 whether the entry itself is a marking or nonmarking; if optional |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1962 parameter MARKING is non-nil then the reminders are marked on the |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1963 calendar." |
94110
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1964 ;; `date' has a value at this point, from diary-sexp-entry. |
94283
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1965 ;; Convert a negative number to a list of days. |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1966 (and (integerp days) |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1967 (< days 0) |
71ec8fd62188
(diary-list-sexp-entries): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
94110
diff
changeset
|
1968 (setq days (number-sequence 1 (- days)))) |
94110
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1969 (let ((diary-entry (eval sexp))) |
24684
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1970 (cond |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1971 ;; Diary entry applies on date. |
24684
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1972 ((and diary-entry |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1973 (or (not diary-marking-entries-flag) diary-marking-entry-flag)) |
24684
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1974 diary-entry) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1975 ;; Diary entry may apply to `days' before date. |
24684
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1976 ((and (integerp days) |
92859 | 1977 (not diary-entry) ; diary entry does not apply to date |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1978 (or (not diary-marking-entries-flag) marking)) |
94110
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1979 ;; Adjust date, and re-evaluate. |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1980 (let ((date (calendar-gregorian-from-absolute |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1981 (+ (calendar-absolute-from-gregorian date) days)))) |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1982 (when (setq diary-entry (eval sexp)) |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1983 ;; Discard any mark portion from diary-anniversary, etc. |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1984 (if (consp diary-entry) (setq diary-entry (cdr diary-entry))) |
d7d3cc08c6cd
(diary-remind): Don't clobber `date' passed by diary-sexp-entry.
Glenn Morris <rgm@gnu.org>
parents:
94020
diff
changeset
|
1985 (mapconcat 'eval diary-remind-message "")))) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
1986 ;; Diary entry may apply to one of a list of days before date. |
24684
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1987 ((and (listp days) days) |
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1988 (or (diary-remind sexp (car days) marking) |
cca41b0e7ae7
(diary-remind): Rewritten to behave sensibly for
Karl Heuer <kwzh@gnu.org>
parents:
24192
diff
changeset
|
1989 (diary-remind sexp (cdr days) marking)))))) |
13053 | 1990 |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1991 |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
1992 ;;; Diary insertion functions. |
60321
efcf9ada3122
(mark-diary-entries): Remove any old marks first.
Glenn Morris <rgm@gnu.org>
parents:
60298
diff
changeset
|
1993 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
1994 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
1995 (defun diary-make-entry (string &optional nonmarking file) |
13053 | 1996 "Insert a diary entry STRING which may be NONMARKING in FILE. |
60321
efcf9ada3122
(mark-diary-entries): Remove any old marks first.
Glenn Morris <rgm@gnu.org>
parents:
60298
diff
changeset
|
1997 If omitted, NONMARKING defaults to nil and FILE defaults to |
65875
8c8c651e39cc
Use overlays rather than selective-display.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65619
diff
changeset
|
1998 `diary-file'." |
93331
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
1999 (let ((pop-up-frames (or pop-up-frames |
1edfec53a698
(print-diary-entries-hook, diary-list-entries): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents:
93284
diff
changeset
|
2000 (window-dedicated-p (selected-window))))) |
104819
1468c5df344a
(diary-set-header, diary-live-p)
Glenn Morris <rgm@gnu.org>
parents:
104755
diff
changeset
|
2001 (find-file-other-window (or file diary-file))) |
104661
4144d6c5c447
(diary-list-entries, diary-goto-entry)
Glenn Morris <rgm@gnu.org>
parents:
104548
diff
changeset
|
2002 (when (eq major-mode (default-value 'major-mode)) (diary-mode)) |
48312
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2003 (widen) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2004 (diary-unhide-everything) |
13053 | 2005 (goto-char (point-max)) |
48312
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2006 (when (let ((case-fold-search t)) |
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2007 (search-backward "Local Variables:" |
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2008 (max (- (point-max) 3000) (point-min)) |
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2009 t)) |
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2010 (beginning-of-line) |
67f6a633fe52
calendar/diary-lib.el (make-diary-entry): Allow for local variables at end of
Juanma Barranquero <lekktu@gmail.com>
parents:
47922
diff
changeset
|
2011 (insert "\n") |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2012 (forward-line -1)) |
13053 | 2013 (insert |
2014 (if (bolp) "" "\n") | |
2015 (if nonmarking diary-nonmarking-symbol "") | |
2016 string " ")) | |
2017 | |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2018 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2019 (define-obsolete-function-alias 'make-diary-entry 'diary-make-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2020 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2021 ;;;###cal-autoload |
96047
65c4c935e492
* calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95810
diff
changeset
|
2022 (defun diary-insert-entry (arg &optional event) |
13053 | 2023 "Insert a diary entry for the date indicated by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2024 Prefix argument ARG makes the entry nonmarking." |
96047
65c4c935e492
* calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95810
diff
changeset
|
2025 (interactive |
65c4c935e492
* calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95810
diff
changeset
|
2026 (list current-prefix-arg last-nonmenu-event)) |
65c4c935e492
* calendar/calendar.el (calendar-cursor-to-date): Add argument `event'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95810
diff
changeset
|
2027 (diary-make-entry (calendar-date-string (calendar-cursor-to-date t event) t t) |
13053 | 2028 arg)) |
2029 | |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2030 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2031 (define-obsolete-function-alias 'insert-diary-entry 'diary-insert-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2032 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2033 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2034 (defun diary-insert-weekly-entry (arg) |
13053 | 2035 "Insert a weekly diary entry for the day of the week indicated by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2036 Prefix argument ARG makes the entry nonmarking." |
13053 | 2037 (interactive "P") |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2038 (diary-make-entry (calendar-day-name (calendar-cursor-to-date t)) |
13053 | 2039 arg)) |
2040 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2041 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2042 (define-obsolete-function-alias 'insert-weekly-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2043 'diary-insert-weekly-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2044 |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2045 (defun diary-date-display-form (&optional type) |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2046 "Return value for `calendar-date-display-form' using `calendar-date-style'. |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2047 Optional symbol TYPE is either `monthly' or `yearly'." |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2048 (cond ((eq type 'monthly) (cond ((eq calendar-date-style 'iso) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2049 '((format "*-*-%.2d" |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2050 (string-to-number day)))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2051 ((eq calendar-date-style 'european) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2052 '(day " * ")) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2053 (t '("* " day )))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2054 ((eq type 'yearly) (cond ((eq calendar-date-style 'iso) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2055 '((format "*-%.2d-%.2d" |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2056 (string-to-number month) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2057 (string-to-number day)))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2058 ((eq calendar-date-style 'european) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2059 '(day " " monthname)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2060 (t '(monthname " " day)))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2061 ;; Iso cannot contain "-", because this form used eg by |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2062 ;; insert-anniversary-diary-entry. |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2063 (t (cond ((eq calendar-date-style 'iso) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2064 '((format "%s %.2d %.2d" year |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2065 (string-to-number month) (string-to-number day)))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2066 ((eq calendar-date-style 'european) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2067 '(day " " month " " year)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2068 (t '(month " " day " " year)))))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2069 |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2070 (defun diary-insert-entry-1 (&optional type nomark months symbol absfunc) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2071 "Subroutine to insert a diary entry related to the date at point. |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2072 TYPE is the type of entry (`monthly' or `yearly'). NOMARK non-nil |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2073 means make the entry non-marking. Array MONTHS is used in place |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2074 of `calendar-month-name-array'. String SYMBOL marks the type of |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2075 diary entry. Function ABSFUNC converts absolute dates to dates of |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2076 the appropriate type." |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2077 (let ((calendar-date-display-form (if type |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2078 (diary-date-display-form type) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2079 calendar-date-display-form)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2080 (calendar-month-name-array (or months calendar-month-name-array)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2081 (date (calendar-cursor-to-date t))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2082 (diary-make-entry |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2083 (format "%s%s" (or symbol "") |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2084 (calendar-date-string |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2085 (if absfunc |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2086 (funcall absfunc (calendar-absolute-from-gregorian date)) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2087 date) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2088 (not absfunc) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2089 (not type))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2090 nomark))) |
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2091 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2092 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2093 (defun diary-insert-monthly-entry (arg) |
13053 | 2094 "Insert a monthly diary entry for the day of the month indicated by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2095 Prefix argument ARG makes the entry nonmarking." |
13053 | 2096 (interactive "P") |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2097 (diary-insert-entry-1 'monthly arg)) |
13053 | 2098 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2099 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2100 (define-obsolete-function-alias 'insert-monthly-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2101 'diary-insert-monthly-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2102 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2103 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2104 (defun diary-insert-yearly-entry (arg) |
13053 | 2105 "Insert an annual diary entry for the day of the year indicated by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2106 Prefix argument ARG makes the entry nonmarking." |
13053 | 2107 (interactive "P") |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2108 (diary-insert-entry-1 'yearly arg)) |
13053 | 2109 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2110 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2111 (define-obsolete-function-alias 'insert-yearly-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2112 'diary-insert-yearly-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2113 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2114 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2115 (defun diary-insert-anniversary-entry (arg) |
13053 | 2116 "Insert an anniversary diary entry for the date given by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2117 Prefix argument ARG makes the entry nonmarking." |
13053 | 2118 (interactive "P") |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2119 (let ((calendar-date-display-form (diary-date-display-form))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2120 (diary-make-entry |
13053 | 2121 (format "%s(diary-anniversary %s)" |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2122 diary-sexp-entry-symbol |
13053 | 2123 (calendar-date-string (calendar-cursor-to-date t) nil t)) |
2124 arg))) | |
2125 | |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2126 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2127 (define-obsolete-function-alias 'insert-anniversary-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2128 'diary-insert-anniversary-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2129 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2130 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2131 (defun diary-insert-block-entry (arg) |
13053 | 2132 "Insert a block diary entry for the days between the point and marked date. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2133 Prefix argument ARG makes the entry nonmarking." |
13053 | 2134 (interactive "P") |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2135 (let ((calendar-date-display-form (diary-date-display-form)) |
92862 | 2136 (cursor (calendar-cursor-to-date t)) |
2137 (mark (or (car calendar-mark-ring) | |
2138 (error "No mark set in this buffer"))) | |
2139 start end) | |
13053 | 2140 (if (< (calendar-absolute-from-gregorian mark) |
2141 (calendar-absolute-from-gregorian cursor)) | |
2142 (setq start mark | |
2143 end cursor) | |
2144 (setq start cursor | |
92862 | 2145 end mark)) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2146 (diary-make-entry |
13053 | 2147 (format "%s(diary-block %s %s)" |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2148 diary-sexp-entry-symbol |
92862 | 2149 (calendar-date-string start nil t) |
2150 (calendar-date-string end nil t)) | |
13053 | 2151 arg))) |
2152 | |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2153 ;;;###cal-autoload |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2154 (define-obsolete-function-alias 'insert-block-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2155 'diary-insert-block-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2156 |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2157 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2158 (defun diary-insert-cyclic-entry (arg) |
13053 | 2159 "Insert a cyclic diary entry starting at the date given by point. |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2160 Prefix argument ARG makes the entry nonmarking." |
13053 | 2161 (interactive "P") |
93375
0d954ec4d752
(number): Move declaration where needed.
Glenn Morris <rgm@gnu.org>
parents:
93331
diff
changeset
|
2162 (let ((calendar-date-display-form (diary-date-display-form))) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2163 (diary-make-entry |
13053 | 2164 (format "%s(diary-cyclic %d %s)" |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2165 diary-sexp-entry-symbol |
13053 | 2166 (calendar-read "Repeat every how many days: " |
28615
4c6883cb70ab
(fancy-diary-display, mark-diary-entries)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28575
diff
changeset
|
2167 (lambda (x) (> x 0))) |
13053 | 2168 (calendar-date-string (calendar-cursor-to-date t) nil t)) |
2169 arg))) | |
2170 | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2171 ;;;###cal-autoload |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2172 (define-obsolete-function-alias 'insert-cyclic-diary-entry |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2173 'diary-insert-cyclic-entry "23.1") |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2174 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2175 ;;; Diary mode. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2176 |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2177 (defun diary-redraw-calendar () |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2178 "If `calendar-buffer' is live and diary entries are marked, redraw it." |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
2179 (and calendar-mark-diary-entries-flag |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2180 (save-excursion |
93809
3ff2b47de8f2
Update for calendar.el name changes.
Glenn Morris <rgm@gnu.org>
parents:
93789
diff
changeset
|
2181 (calendar-redraw))) |
93232
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2182 ;; Return value suitable for `write-contents-functions'. |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2183 nil) |
32f5a7f03231
Some re-ordering so that defcustoms are at start, functions defined
Glenn Morris <rgm@gnu.org>
parents:
93027
diff
changeset
|
2184 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2185 (defvar diary-mode-map |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2186 (let ((map (make-sparse-keymap))) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2187 (define-key map "\C-c\C-s" 'diary-show-all-entries) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2188 (define-key map "\C-c\C-q" 'quit-window) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2189 map) |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2190 "Keymap for `diary-mode'.") |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2191 |
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2192 (defun diary-font-lock-sexps (limit) |
92696
f656dd57b318
(diary-face-attrs): Fix custom :type.
Glenn Morris <rgm@gnu.org>
parents:
92685
diff
changeset
|
2193 "Recognize sexp diary entry up to LIMIT for font-locking." |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2194 (if (re-search-forward |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2195 (format "^%s?\\(%s\\)" (regexp-quote diary-nonmarking-symbol) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2196 (regexp-quote diary-sexp-entry-symbol)) |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2197 limit t) |
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2198 (condition-case nil |
92859 | 2199 (save-restriction |
2200 (narrow-to-region (point-min) limit) | |
2201 (let ((start (point))) | |
2202 (forward-sexp 1) | |
2203 (store-match-data (list start (point))) | |
2204 t)) | |
2205 (error t)))) | |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2206 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2207 (defun diary-font-lock-date-forms (month-array &optional symbol abbrev-array) |
52117
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2208 "Create font-lock patterns for `diary-date-forms' using MONTH-ARRAY. |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2209 If given, optional SYMBOL must be a prefix to entries. |
52117
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2210 If optional ABBREV-ARRAY is present, the abbreviations constructed |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2211 from this array by the function `calendar-abbrev-construct' are |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2212 matched (with or without a final `.'), in addition to the full month |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2213 names." |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2214 (let ((dayname (diary-name-pattern calendar-day-name-array |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2215 calendar-day-abbrev-array t)) |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2216 (monthname (format "\\(%s\\|\\*\\)" |
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2217 (diary-name-pattern month-array abbrev-array))) |
51640
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
2218 (month "\\([0-9]+\\|\\*\\)") |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
2219 (day "\\([0-9]+\\|\\*\\)") |
6732b4ce8c04
(diary-check-diary-file): New function.
Glenn Morris <rgm@gnu.org>
parents:
50908
diff
changeset
|
2220 (year "-?\\([0-9]+\\|\\*\\)")) |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2221 (mapcar (lambda (x) |
92862 | 2222 (cons |
2223 (concat "^" (regexp-quote diary-nonmarking-symbol) "?" | |
2224 (if symbol (regexp-quote symbol) "") "\\(" | |
2225 (mapconcat 'eval | |
2226 ;; If backup, omit first item (backup) | |
2227 ;; and last item (not part of date). | |
2228 (if (equal (car x) 'backup) | |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2229 (nreverse (cdr (reverse (cdr x)))) |
92862 | 2230 x) |
2231 "") | |
2232 ;; With backup, last item is not part of date. | |
2233 (if (equal (car x) 'backup) | |
2234 (concat "\\)" (eval (car (reverse x)))) | |
2235 "\\)")) | |
2236 '(1 diary-face))) | |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2237 diary-date-forms))) |
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2238 |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2239 (defmacro diary-font-lock-keywords-1 (markfunc listfunc feature months symbol) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2240 "Subroutine of the function `diary-font-lock-keywords'. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2241 If MARKFUNC is a member of `diary-nongregorian-marking-hook', or |
100054
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2242 LISTFUNC of `diary-nongregorian-listing-hook', then require FEATURE and |
01f0a0822eb9
* calendar/diary-lib.el (diary-cyclic): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
99540
diff
changeset
|
2243 return a font-lock pattern matching array of MONTHS and marking SYMBOL." |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2244 `(when (or (memq ',markfunc diary-nongregorian-marking-hook) |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2245 (memq ',listfunc diary-nongregorian-listing-hook)) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2246 (require ',feature) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2247 (diary-font-lock-date-forms ,months ,symbol))) |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2248 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2249 (defconst diary-time-regexp |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2250 ;; Accepted formats: 10:00 10.00 10h00 10h 10am 10:00am 10.00am |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2251 ;; Use of "." as a separator annoyingly matches numbers, eg "123.45". |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2252 ;; Hence often prefix this with "\\(^\\|\\s-\\)." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2253 (concat "[0-9]?[0-9]\\([AaPp][mM]\\|\\(" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2254 "[Hh]\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2255 "\\)\\([AaPp][Mm]\\)?\\)") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2256 "Regular expression matching a time of day.") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2257 |
92595 | 2258 (defvar calendar-hebrew-month-name-array-leap-year) |
2259 (defvar calendar-islamic-month-name-array) | |
2260 (defvar calendar-bahai-month-name-array) | |
52117
e8a77526768b
(list-diary-entries): Adapt for new behaviour of `calendar-day-name'
Glenn Morris <rgm@gnu.org>
parents:
51640
diff
changeset
|
2261 |
92843
de680a2b3b3b
(diary-loaddefs): Load this rather than explicit autoloads.
Glenn Morris <rgm@gnu.org>
parents:
92696
diff
changeset
|
2262 ;;;###cal-autoload |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2263 (defun diary-font-lock-keywords () |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2264 "Return a value for the variable `diary-font-lock-keywords'." |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2265 (append |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2266 (diary-font-lock-date-forms calendar-month-name-array |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2267 nil calendar-month-abbrev-array) |
93741
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
2268 (diary-font-lock-keywords-1 diary-hebrew-mark-entries |
58fa6a764efb
Update for hebrew name changes.
Glenn Morris <rgm@gnu.org>
parents:
93731
diff
changeset
|
2269 diary-hebrew-list-entries |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2270 cal-hebrew |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2271 calendar-hebrew-month-name-array-leap-year |
93731
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2272 diary-hebrew-entry-symbol) |
93648
52da900141b3
Update for islamic name changes.
Glenn Morris <rgm@gnu.org>
parents:
93567
diff
changeset
|
2273 (diary-font-lock-keywords-1 diary-islamic-mark-entries |
52da900141b3
Update for islamic name changes.
Glenn Morris <rgm@gnu.org>
parents:
93567
diff
changeset
|
2274 diary-islamic-list-entries |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2275 cal-islam |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2276 calendar-islamic-month-name-array |
93731
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2277 diary-islamic-entry-symbol) |
92994
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2278 (diary-font-lock-keywords-1 diary-bahai-mark-entries |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2279 diary-bahai-list-entries |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2280 cal-bahai |
deb2f6126df1
(diary-remind-message, mark-sexp-diary-entries, list-sexp-diary-entries)
Glenn Morris <rgm@gnu.org>
parents:
92973
diff
changeset
|
2281 calendar-bahai-month-name-array |
93731
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2282 diary-bahai-entry-symbol) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2283 (list |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2284 (cons |
92595 | 2285 (format "^%s.*$" (regexp-quote diary-include-string)) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2286 'font-lock-keyword-face) |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2287 (cons |
92595 | 2288 (format "^%s?\\(%s\\)" (regexp-quote diary-nonmarking-symbol) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2289 (regexp-quote diary-sexp-entry-symbol)) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2290 '(1 font-lock-reference-face)) |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2291 (cons |
92595 | 2292 (format "^%s" (regexp-quote diary-nonmarking-symbol)) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2293 'font-lock-reference-face) |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2294 (cons |
92595 | 2295 (format "^%s?%s" (regexp-quote diary-nonmarking-symbol) |
92859 | 2296 (regexp-opt (mapcar 'regexp-quote |
93731
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2297 (list diary-hebrew-entry-symbol |
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2298 diary-islamic-entry-symbol |
e0e1ee825fb6
Update for diary-entry-symbol renames.
Glenn Morris <rgm@gnu.org>
parents:
93713
diff
changeset
|
2299 diary-bahai-entry-symbol)) |
92859 | 2300 t)) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2301 '(1 font-lock-reference-face)) |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2302 '(diary-font-lock-sexps . font-lock-keyword-face) |
92595 | 2303 `(,(format "\\(^\\|\\s-\\)%s\\(-%s\\)?" diary-time-regexp |
92859 | 2304 diary-time-regexp) |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2305 . 'diary-time)))) |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48421
diff
changeset
|
2306 |
77043
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2307 (defvar diary-font-lock-keywords (diary-font-lock-keywords) |
694008dfe9c9
(diary-set-maybe-redraw): Move definition before first use.
Glenn Morris <rgm@gnu.org>
parents:
76754
diff
changeset
|
2308 "Forms to highlight in `diary-mode'.") |
48365
25f62a7a6efc
Patch of Alan Shutko <ats@acm.org> by way of rms.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48312
diff
changeset
|
2309 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2310 ;;;###autoload |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2311 (define-derived-mode diary-mode fundamental-mode "Diary" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2312 "Major mode for editing the diary file." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2313 (set (make-local-variable 'font-lock-defaults) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2314 '(diary-font-lock-keywords t)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2315 (add-to-invisibility-spec '(diary . nil)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2316 (add-hook 'after-save-hook 'diary-redraw-calendar nil t) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2317 (if diary-header-line-flag |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2318 (setq header-line-format diary-header-line-format))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2319 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2320 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2321 ;;; Fancy Diary Mode. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2322 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2323 (defvar diary-fancy-date-pattern |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2324 (concat |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2325 (let ((dayname (diary-name-pattern calendar-day-name-array nil t)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2326 (monthname (diary-name-pattern calendar-month-name-array nil t)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2327 (day "[0-9]+") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2328 (month "[0-9]+") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2329 (year "-?[0-9]+")) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2330 (mapconcat 'eval calendar-date-display-form "")) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2331 ;; Optional ": holiday name" after the date. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2332 "\\(: .*\\)?") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2333 "Regular expression matching a date header in Fancy Diary.") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2334 |
94020
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
2335 (define-obsolete-variable-alias 'fancy-diary-font-lock-keywords |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
2336 'diary-fancy-font-lock-keywords "23.1") |
4490d4f3ae50
(diary-face, diary-anniversary, diary-time, diary-button): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
93994
diff
changeset
|
2337 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2338 (defvar diary-fancy-font-lock-keywords |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2339 (list |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2340 (list |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2341 ;; Any number of " other holiday name" lines, followed by "==" line. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2342 (concat diary-fancy-date-pattern "\\(\n +.*\\)*\n=+$") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2343 '(0 (progn (put-text-property (match-beginning 0) (match-end 0) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2344 'font-lock-multiline t) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2345 diary-face))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2346 '("^.*\\([aA]nniversary\\|[bB]irthday\\).*$" . 'diary-anniversary) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2347 '("^.*Yahrzeit.*$" . font-lock-reference-face) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2348 '("^\\(Erev \\)?Rosh Hodesh.*" . font-lock-function-name-face) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2349 '("^Day.*omer.*$" . font-lock-builtin-face) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2350 '("^Parashat.*$" . font-lock-comment-face) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2351 `(,(format "\\(^\\|\\s-\\)%s\\(-%s\\)?" diary-time-regexp |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2352 diary-time-regexp) . 'diary-time)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2353 "Keywords to highlight in fancy diary display.") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2354 |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2355 ;; If region looks like it might start or end in the middle of a |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2356 ;; multiline pattern, extend the region to encompass the whole pattern. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2357 (defun diary-fancy-font-lock-fontify-region-function (beg end &optional verbose) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2358 "Function to use for `font-lock-fontify-region-function' in Fancy Diary. |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2359 Needed to handle multiline keyword in `diary-fancy-font-lock-keywords'. |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2360 Fontify the region between BEG and END, quietly unless VERBOSE is non-nil." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2361 (goto-char beg) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2362 (forward-line 0) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2363 (if (looking-at "=+$") (forward-line -1)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2364 (while (and (looking-at " +[^ ]") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2365 (zerop (forward-line -1)))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2366 ;; This check not essential. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2367 (if (looking-at diary-fancy-date-pattern) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2368 (setq beg (line-beginning-position))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2369 (goto-char end) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2370 (forward-line 0) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2371 (while (and (looking-at " +[^ ]") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2372 (zerop (forward-line 1)))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2373 (if (looking-at "=+$") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2374 (setq end (line-beginning-position 2))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2375 (font-lock-default-fontify-region beg end verbose)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2376 |
104838
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2377 (defvar diary-fancy-overriding-map (let ((map (make-sparse-keymap))) |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2378 (define-key map "q" 'quit-window) |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2379 map) |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2380 "Keymap overriding minor-mode maps in `diary-fancy-display-mode'.") |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2381 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2382 (define-derived-mode diary-fancy-display-mode fundamental-mode |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2383 "Diary" |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2384 "Major mode used while displaying diary entries using Fancy Display." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2385 (set (make-local-variable 'font-lock-defaults) |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2386 '(diary-fancy-font-lock-keywords |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2387 t nil nil nil |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2388 (font-lock-fontify-region-function |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2389 . diary-fancy-font-lock-fontify-region-function))) |
104865
68c0ccdf0374
(diary-entry): Add help-echo and follow-link properties to this button.
Glenn Morris <rgm@gnu.org>
parents:
104838
diff
changeset
|
2390 (local-set-key "q" 'quit-window) |
104838
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2391 (set (make-local-variable 'minor-mode-overriding-map-alist) |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2392 (list (cons t diary-fancy-overriding-map))) |
27450b6f6cf7
(diary-fancy-display): Only switch modes if necessary.
Glenn Morris <rgm@gnu.org>
parents:
104819
diff
changeset
|
2393 (view-mode 1)) |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2394 |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2395 (define-obsolete-function-alias 'fancy-diary-display-mode |
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2396 'diary-fancy-display-mode "23.1") |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2397 |
55249 | 2398 ;; Following code from Dave Love <fx@gnu.org>. |
2399 ;; Import Outlook-format appointments from mail messages in Gnus or | |
2400 ;; Rmail using command `diary-from-outlook'. This, or the specialized | |
2401 ;; functions `diary-from-outlook-gnus' and `diary-from-outlook-rmail', | |
2402 ;; could be run from hooks to notice appointments automatically (in | |
2403 ;; which case they will prompt about adding to the diary). The | |
2404 ;; message formats recognized are customizable through | |
2405 ;; `diary-outlook-formats'. | |
2406 | |
92973
122f4beea537
(diary-face-attrs, diary-glob-file-regexp-prefix, diary-selective-display)
Glenn Morris <rgm@gnu.org>
parents:
92898
diff
changeset
|
2407 (defvar subject) ; bound in diary-from-outlook-gnus |
105021
c1a58b7ba6a3
(diary-display-function): Change the default to fancy display.
Glenn Morris <rgm@gnu.org>
parents:
104865
diff
changeset
|
2408 (defvar body) |
55249 | 2409 |
2410 (defun diary-from-outlook-internal (&optional test-only) | |
2411 "Snarf a diary entry from a message assumed to be from MS Outlook. | |
2412 Assumes `body' is bound to a string comprising the body of the message and | |
2413 `subject' is bound to a string comprising its subject. | |
2414 Arg TEST-ONLY non-nil means return non-nil if and only if the | |
2415 message contains an appointment, don't make a diary entry." | |
2416 (catch 'finished | |
2417 (let (format-string) | |
2418 (dotimes (i (length diary-outlook-formats)) | |
92859 | 2419 (when (eq 0 (string-match (car (nth i diary-outlook-formats)) |
2420 body)) | |
2421 (unless test-only | |
2422 (setq format-string (cdr (nth i diary-outlook-formats))) | |
2423 (save-excursion | |
2424 (save-window-excursion | |
2425 ;; Fixme: References to optional fields in the format | |
2426 ;; are treated literally, not replaced by the empty | |
2427 ;; string. I think this is an Emacs bug. | |
93789
664ca9007b13
(diary-sexp-entry-symbol): Rename sexp-diary-entry-symbol.
Glenn Morris <rgm@gnu.org>
parents:
93751
diff
changeset
|
2428 (diary-make-entry |
92859 | 2429 (format (replace-match (if (functionp format-string) |
2430 (funcall format-string body) | |
2431 format-string) | |
2432 t nil (match-string 0 body)) | |
2433 subject)) | |
2434 (save-buffer)))) | |
2435 (throw 'finished t)))) | |
55249 | 2436 nil)) |
2437 | |
2438 (defvar gnus-article-mime-handles) | |
2439 (defvar gnus-article-buffer) | |
2440 | |
2441 (autoload 'gnus-fetch-field "gnus-util") | |
2442 (autoload 'gnus-narrow-to-body "gnus") | |
2443 (autoload 'mm-get-part "mm-decode") | |
2444 | |
58101
e47a5c4e43ff
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
58099
diff
changeset
|
2445 (defun diary-from-outlook-gnus (&optional noconfirm) |
55249 | 2446 "Maybe snarf diary entry from Outlook-generated message in Gnus. |
58101
e47a5c4e43ff
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
58099
diff
changeset
|
2447 Unless the optional argument NOCONFIRM is non-nil (which is the case when |
58099
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2448 this function is called interactively), then if an entry is found the |
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2449 user is asked to confirm its addition. |
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2450 Add this function to `gnus-article-prepare-hook' to notice appointments |
55249 | 2451 automatically." |
58099
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2452 (interactive "p") |
55249 | 2453 (with-current-buffer gnus-article-buffer |
2454 (let ((subject (gnus-fetch-field "subject")) | |
92859 | 2455 (body (if gnus-article-mime-handles |
2456 ;; We're multipart. Don't get confused by part | |
2457 ;; buttons &c. Assume info is in first part. | |
2458 (mm-get-part (nth 1 gnus-article-mime-handles)) | |
2459 (save-restriction | |
2460 (gnus-narrow-to-body) | |
2461 (buffer-string))))) | |
55249 | 2462 (when (diary-from-outlook-internal t) |
92859 | 2463 (when (or noconfirm (y-or-n-p "Snarf diary entry? ")) |
2464 (diary-from-outlook-internal) | |
2465 (message "Diary entry added")))))) | |
55249 | 2466 |
2467 (custom-add-option 'gnus-article-prepare-hook 'diary-from-outlook-gnus) | |
2468 | |
2469 (defvar rmail-buffer) | |
2470 | |
58101
e47a5c4e43ff
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
58099
diff
changeset
|
2471 (defun diary-from-outlook-rmail (&optional noconfirm) |
58099
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2472 "Maybe snarf diary entry from Outlook-generated message in Rmail. |
58101
e47a5c4e43ff
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
58099
diff
changeset
|
2473 Unless the optional argument NOCONFIRM is non-nil (which is the case when |
58099
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2474 this function is called interactively), then if an entry is found the |
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2475 user is asked to confirm its addition." |
0ff94b7bdea3
(diary-from-outlook, diary-from-outlook-gnus)
Glenn Morris <rgm@gnu.org>
parents:
57255
diff
changeset
|
2476 (interactive "p") |
55249 | 2477 (with-current-buffer rmail-buffer |
2478 (let ((subject (mail-fetch-field "subject")) | |
92859 | 2479 (body (buffer-substring (save-excursion |
2480 (rfc822-goto-eoh) | |
2481 (point)) | |
2482 (point-max)))) | |
55249 | 2483 (when (diary-from-outlook-internal t) |
92859 | 2484 (when (or noconfirm (y-or-n-p "Snarf diary entry? ")) |
2485 (diary-from-outlook-internal) | |
2486 (message "Diary entry added")))))) | |
55249 | 2487 |
93027
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2488 (defun diary-from-outlook (&optional noconfirm) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2489 "Maybe snarf diary entry from current Outlook-generated message. |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2490 Currently knows about Gnus and Rmail modes. Unless the optional |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2491 argument NOCONFIRM is non-nil (which is the case when this |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2492 function is called interactively), then if an entry is found the |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2493 user is asked to confirm its addition." |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2494 (interactive "p") |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2495 (let ((func (cond |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2496 ((eq major-mode 'rmail-mode) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2497 #'diary-from-outlook-rmail) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2498 ((memq major-mode '(gnus-summary-mode gnus-article-mode)) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2499 #'diary-from-outlook-gnus) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2500 (t (error "Don't know how to snarf in `%s'" major-mode))))) |
9c718a4c0412
Re-order some definitions before their use.
Glenn Morris <rgm@gnu.org>
parents:
92994
diff
changeset
|
2501 (funcall func noconfirm))) |
55249 | 2502 |
13650 | 2503 (provide 'diary-lib) |
13053 | 2504 |
65476
11058ae1650f
Use with-current-buffer, match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65108
diff
changeset
|
2505 ;; arch-tag: 22dd506e-2e33-410d-9ae1-095a0c1b2010 |
13650 | 2506 ;;; diary-lib.el ends here |