25829
|
1 @c This is part of the Emacs manual.
|
30794
|
2 @c Copyright (C) 1985,86,87,93,94,95,1997,2000 Free Software Foundation, Inc.
|
25829
|
3 @c See file emacs.texi for copying conditions.
|
|
4 @node Calendar/Diary, Gnus, Dired, Top
|
|
5 @chapter The Calendar and the Diary
|
|
6 @cindex calendar
|
|
7 @findex calendar
|
|
8
|
|
9 Emacs provides the functions of a desk calendar, with a diary of
|
30794
|
10 planned or past events. It also has facilities for other related tasks,
|
|
11 such as managing your appointments, or keeping track of how much time
|
|
12 you spend working on a certain project.
|
|
13
|
|
14 To enter the calendar, type @kbd{M-x calendar}; this displays a
|
|
15 three-month calendar centered on the current month, with point on the
|
|
16 current date. With a numeric argument, as in @kbd{C-u M-x calendar}, it
|
|
17 prompts you for the month and year to be the center of the three-month
|
|
18 calendar. The calendar uses its own buffer, whose major mode is
|
|
19 Calendar mode.
|
25829
|
20
|
|
21 @kbd{Mouse-2} in the calendar brings up a menu of operations on a
|
|
22 particular date; @kbd{C-Mouse-3} brings up a menu of commonly used
|
|
23 calendar features that are independent of any particular date. To exit
|
|
24 the calendar, type @kbd{q}. @xref{Calendar, Customizing the Calendar
|
|
25 and Diary,, elisp, The Emacs Lisp Reference Manual}, for customization
|
|
26 information about the calendar and diary.
|
|
27
|
|
28 @menu
|
|
29 * Calendar Motion:: Moving through the calendar; selecting a date.
|
|
30 * Scroll Calendar:: Bringing earlier or later months onto the screen.
|
|
31 * Counting Days:: How many days are there between two dates?
|
|
32 * General Calendar:: Exiting or recomputing the calendar.
|
|
33 * LaTeX Calendar:: Print a calendar using LaTeX.
|
|
34 * Holidays:: Displaying dates of holidays.
|
|
35 * Sunrise/Sunset:: Displaying local times of sunrise and sunset.
|
|
36 * Lunar Phases:: Displaying phases of the moon.
|
|
37 * Other Calendars:: Converting dates to other calendar systems.
|
|
38 * Diary:: Displaying events from your diary.
|
|
39 * Appointments:: Reminders when it's time to do something.
|
|
40 * Daylight Savings:: How to specify when daylight savings time is active.
|
30794
|
41 * Time Intervals:: Keeping track of time intervals.
|
25829
|
42 @end menu
|
|
43
|
|
44 @node Calendar Motion
|
|
45 @section Movement in the Calendar
|
|
46
|
|
47 @cindex moving inside the calendar
|
|
48 Calendar mode lets you move through the calendar in logical units of
|
|
49 time such as days, weeks, months, and years. If you move outside the
|
|
50 three months originally displayed, the calendar display ``scrolls''
|
|
51 automatically through time to make the selected date visible. Moving to
|
|
52 a date lets you view its holidays or diary entries, or convert it to other
|
|
53 calendars; moving longer time periods is also useful simply to scroll the
|
|
54 calendar.
|
|
55
|
|
56 @menu
|
|
57 * Calendar Unit Motion:: Moving by days, weeks, months, and years.
|
|
58 * Move to Beginning or End:: Moving to start/end of weeks, months, and years.
|
|
59 * Specified Dates:: Moving to the current date or another
|
|
60 specific date.
|
|
61 @end menu
|
|
62
|
|
63 @node Calendar Unit Motion
|
|
64 @subsection Motion by Standard Lengths of Time
|
|
65
|
|
66 The commands for movement in the calendar buffer parallel the
|
|
67 commands for movement in text. You can move forward and backward by
|
|
68 days, weeks, months, and years.
|
|
69
|
|
70 @table @kbd
|
|
71 @item C-f
|
|
72 Move point one day forward (@code{calendar-forward-day}).
|
|
73 @item C-b
|
|
74 Move point one day backward (@code{calendar-backward-day}).
|
|
75 @item C-n
|
|
76 Move point one week forward (@code{calendar-forward-week}).
|
|
77 @item C-p
|
|
78 Move point one week backward (@code{calendar-backward-week}).
|
|
79 @item M-@}
|
|
80 Move point one month forward (@code{calendar-forward-month}).
|
|
81 @item M-@{
|
|
82 Move point one month backward (@code{calendar-backward-month}).
|
|
83 @item C-x ]
|
|
84 Move point one year forward (@code{calendar-forward-year}).
|
|
85 @item C-x [
|
|
86 Move point one year backward (@code{calendar-backward-year}).
|
|
87 @end table
|
|
88
|
|
89 @kindex C-f @r{(Calendar mode)}
|
|
90 @findex calendar-forward-day
|
|
91 @kindex C-b @r{(Calendar mode)}
|
|
92 @findex calendar-backward-day
|
|
93 @kindex C-n @r{(Calendar mode)}
|
|
94 @findex calendar-forward-week
|
|
95 @kindex C-p @r{(Calendar mode)}
|
|
96 @findex calendar-backward-week
|
|
97 The day and week commands are natural analogues of the usual Emacs
|
|
98 commands for moving by characters and by lines. Just as @kbd{C-n}
|
|
99 usually moves to the same column in the following line, in Calendar
|
|
100 mode it moves to the same day in the following week. And @kbd{C-p}
|
|
101 moves to the same day in the previous week.
|
|
102
|
|
103 The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and
|
|
104 @kbd{C-p}, just as they normally are in other modes.
|
|
105
|
|
106 @kindex M-@} @r{(Calendar mode)}
|
|
107 @findex calendar-forward-month
|
|
108 @kindex M-@{ @r{(Calendar mode)}
|
|
109 @findex calendar-backward-month
|
|
110 @kindex C-x ] @r{(Calendar mode)}
|
|
111 @findex calendar-forward-year
|
|
112 @kindex C-x [ @r{(Calendar mode)}
|
|
113 @findex calendar-forward-year
|
|
114 The commands for motion by months and years work like those for
|
|
115 weeks, but move a larger distance. The month commands @kbd{M-@}} and
|
|
116 @kbd{M-@{} move forward or backward by an entire month's time. The
|
|
117 year commands @kbd{C-x ]} and @w{@kbd{C-x [}} move forward or backward a
|
|
118 whole year.
|
|
119
|
|
120 The easiest way to remember these commands is to consider months and
|
|
121 years analogous to paragraphs and pages of text, respectively. But the
|
|
122 commands themselves are not quite analogous. The ordinary Emacs paragraph
|
|
123 commands move to the beginning or end of a paragraph, whereas these month
|
|
124 and year commands move by an entire month or an entire year, which usually
|
|
125 involves skipping across the end of a month or year.
|
|
126
|
|
127 All these commands accept a numeric argument as a repeat count.
|
|
128 For convenience, the digit keys and the minus sign specify numeric
|
|
129 arguments in Calendar mode even without the Meta modifier. For example,
|
|
130 @kbd{100 C-f} moves point 100 days forward from its present location.
|
|
131
|
|
132 @node Move to Beginning or End
|
|
133 @subsection Beginning or End of Week, Month or Year
|
|
134
|
|
135 A week (or month, or year) is not just a quantity of days; we think of
|
|
136 weeks (months, years) as starting on particular dates. So Calendar mode
|
|
137 provides commands to move to the beginning or end of a week, month or
|
|
138 year:
|
|
139
|
|
140 @table @kbd
|
|
141 @kindex C-a @r{(Calendar mode)}
|
|
142 @findex calendar-beginning-of-week
|
|
143 @item C-a
|
|
144 Move point to start of week (@code{calendar-beginning-of-week}).
|
|
145 @kindex C-e @r{(Calendar mode)}
|
|
146 @findex calendar-end-of-week
|
|
147 @item C-e
|
|
148 Move point to end of week (@code{calendar-end-of-week}).
|
|
149 @kindex M-a @r{(Calendar mode)}
|
|
150 @findex calendar-beginning-of-month
|
|
151 @item M-a
|
|
152 Move point to start of month (@code{calendar-beginning-of-month}).
|
|
153 @kindex M-e @r{(Calendar mode)}
|
|
154 @findex calendar-end-of-month
|
|
155 @item M-e
|
|
156 Move point to end of month (@code{calendar-end-of-month}).
|
|
157 @kindex M-< @r{(Calendar mode)}
|
|
158 @findex calendar-beginning-of-year
|
|
159 @item M-<
|
|
160 Move point to start of year (@code{calendar-beginning-of-year}).
|
|
161 @kindex M-> @r{(Calendar mode)}
|
|
162 @findex calendar-end-of-year
|
|
163 @item M->
|
|
164 Move point to end of year (@code{calendar-end-of-year}).
|
|
165 @end table
|
|
166
|
|
167 These commands also take numeric arguments as repeat counts, with the
|
|
168 repeat count indicating how many weeks, months, or years to move
|
|
169 backward or forward.
|
|
170
|
|
171 @vindex calendar-week-start-day
|
|
172 @cindex weeks, which day they start on
|
|
173 @cindex calendar, first day of week
|
|
174 By default, weeks begin on Sunday. To make them begin on Monday
|
|
175 instead, set the variable @code{calendar-week-start-day} to 1.
|
|
176
|
|
177 @node Specified Dates
|
|
178 @subsection Specified Dates
|
|
179
|
|
180 Calendar mode provides commands for moving to a particular date
|
|
181 specified in various ways.
|
|
182
|
|
183 @table @kbd
|
|
184 @item g d
|
|
185 Move point to specified date (@code{calendar-goto-date}).
|
|
186 @item o
|
|
187 Center calendar around specified month (@code{calendar-other-month}).
|
|
188 @item .
|
|
189 Move point to today's date (@code{calendar-goto-today}).
|
|
190 @end table
|
|
191
|
|
192 @kindex g d @r{(Calendar mode)}
|
|
193 @findex calendar-goto-date
|
|
194 @kbd{g d} (@code{calendar-goto-date}) prompts for a year, a month, and a day
|
|
195 of the month, and then moves to that date. Because the calendar includes all
|
|
196 dates from the beginning of the current era, you must type the year in its
|
|
197 entirety; that is, type @samp{1990}, not @samp{90}.
|
|
198
|
|
199 @kindex o @r{(Calendar mode)}
|
|
200 @findex calendar-other-month
|
|
201 @kbd{o} (@code{calendar-other-month}) prompts for a month and year,
|
|
202 then centers the three-month calendar around that month.
|
|
203
|
|
204 @kindex . @r{(Calendar mode)}
|
|
205 @findex calendar-goto-today
|
|
206 You can return to today's date with @kbd{.}@:
|
|
207 (@code{calendar-goto-today}).
|
|
208
|
|
209 @node Scroll Calendar
|
|
210 @section Scrolling in the Calendar
|
|
211
|
|
212 @cindex scrolling in the calendar
|
|
213 The calendar display scrolls automatically through time when you move out
|
|
214 of the visible portion. You can also scroll it manually. Imagine that the
|
|
215 calendar window contains a long strip of paper with the months on it.
|
|
216 Scrolling it means moving the strip so that new months become visible in
|
|
217 the window.
|
|
218
|
|
219 @table @kbd
|
|
220 @item C-x <
|
|
221 Scroll calendar one month forward (@code{scroll-calendar-left}).
|
|
222 @item C-x >
|
|
223 Scroll calendar one month backward (@code{scroll-calendar-right}).
|
|
224 @item C-v
|
|
225 @itemx @key{NEXT}
|
|
226 Scroll calendar three months forward
|
|
227 (@code{scroll-calendar-left-three-months}).
|
|
228 @item M-v
|
|
229 @itemx @key{PRIOR}
|
|
230 Scroll calendar three months backward
|
|
231 (@code{scroll-calendar-right-three-months}).
|
|
232 @end table
|
|
233
|
|
234 @kindex C-x < @r{(Calendar mode)}
|
|
235 @findex scroll-calendar-left
|
|
236 @kindex C-x > @r{(Calendar mode)}
|
|
237 @findex scroll-calendar-right
|
|
238 The most basic calendar scroll commands scroll by one month at a
|
|
239 time. This means that there are two months of overlap between the
|
|
240 display before the command and the display after. @kbd{C-x <} scrolls
|
|
241 the calendar contents one month to the left; that is, it moves the
|
|
242 display forward in time. @kbd{C-x >} scrolls the contents to the
|
|
243 right, which moves backwards in time.
|
|
244
|
|
245 @kindex C-v @r{(Calendar mode)}
|
|
246 @findex scroll-calendar-left-three-months
|
|
247 @kindex M-v @r{(Calendar mode)}
|
|
248 @findex scroll-calendar-right-three-months
|
|
249 The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
|
|
250 ``screenful''---three months---in analogy with the usual meaning of
|
|
251 these commands. @kbd{C-v} makes later dates visible and @kbd{M-v} makes
|
|
252 earlier dates visible. These commands take a numeric argument as a
|
|
253 repeat count; in particular, since @kbd{C-u} multiplies the next command
|
|
254 by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and
|
|
255 typing @kbd{C-u M-v} scrolls the calendar backward by a year.
|
|
256
|
|
257 The function keys @key{NEXT} and @key{PRIOR} are equivalent to
|
|
258 @kbd{C-v} and @kbd{M-v}, just as they are in other modes.
|
|
259
|
|
260 @node Counting Days
|
|
261 @section Counting Days
|
|
262
|
|
263 @table @kbd
|
|
264 @item M-=
|
|
265 Display the number of days in the current region
|
|
266 (@code{calendar-count-days-region}).
|
|
267 @end table
|
|
268
|
|
269 @kindex M-= @r{(Calendar mode)}
|
|
270 @findex calendar-count-days-region
|
|
271 To determine the number of days in the region, type @kbd{M-=}
|
|
272 (@code{calendar-count-days-region}). The numbers of days printed is
|
|
273 @emph{inclusive}; that is, it includes the days specified by mark and
|
|
274 point.
|
|
275
|
|
276 @node General Calendar
|
|
277 @section Miscellaneous Calendar Commands
|
|
278
|
|
279 @table @kbd
|
|
280 @item p d
|
|
281 Display day-in-year (@code{calendar-print-day-of-year}).
|
|
282 @item C-c C-l
|
|
283 Regenerate the calendar window (@code{redraw-calendar}).
|
|
284 @item SPC
|
|
285 Scroll the next window (@code{scroll-other-window}).
|
|
286 @item q
|
|
287 Exit from calendar (@code{exit-calendar}).
|
|
288 @end table
|
|
289
|
|
290 @kindex p d @r{(Calendar mode)}
|
|
291 @cindex day of year
|
|
292 @findex calendar-print-day-of-year
|
|
293 To print the number of days elapsed since the start of the year, or
|
|
294 the number of days remaining in the year, type the @kbd{p d} command
|
|
295 (@code{calendar-print-day-of-year}). This displays both of those
|
|
296 numbers in the echo area. The number of days elapsed includes the
|
|
297 selected date. The number of days remaining does not include that
|
|
298 date.
|
|
299
|
|
300 @kindex C-c C-l @r{(Calendar mode)}
|
|
301 @findex redraw-calendar
|
|
302 If the calendar window text gets corrupted, type @kbd{C-c C-l}
|
|
303 (@code{redraw-calendar}) to redraw it. (This can only happen if you use
|
|
304 non-Calendar-mode editing commands.)
|
|
305
|
|
306 @kindex SPC @r{(Calendar mode)}
|
|
307 In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
|
|
308 to scroll the other window. This is handy when you display a list of
|
|
309 holidays or diary entries in another window.
|
|
310
|
|
311 @kindex q @r{(Calendar mode)}
|
|
312 @findex exit-calendar
|
|
313 To exit from the calendar, type @kbd{q} (@code{exit-calendar}). This
|
|
314 buries all buffers related to the calendar, selecting other buffers.
|
|
315 (If a frame contains a dedicated calendar window, exiting from the
|
|
316 calendar iconifies that frame.)
|
|
317
|
|
318 @node LaTeX Calendar
|
|
319 @section LaTeX Calendar
|
|
320 @cindex calendar and La@TeX{}
|
|
321
|
|
322 The Calendar La@TeX{} commands produce a buffer of La@TeX{} code that
|
|
323 prints as a calendar. Depending on the command you use, the printed
|
|
324 calendar covers the day, week, month or year that point is in.
|
|
325
|
|
326 @kindex t @r{(Calendar mode)}
|
|
327 @table @kbd
|
|
328 @item t m
|
|
329 Generate a one-month calendar (@code{cal-tex-cursor-month}).
|
|
330 @item t M
|
|
331 Generate a sideways-printing one-month calendar
|
|
332 (@code{cal-tex-cursor-month-landscape}).
|
|
333 @item t d
|
|
334 Generate a one-day calendar
|
|
335 (@code{cal-tex-cursor-day}).
|
|
336 @item t w 1
|
|
337 Generate a one-page calendar for one week
|
|
338 (@code{cal-tex-cursor-week}).
|
|
339 @item t w 2
|
|
340 Generate a two-page calendar for one week
|
|
341 (@code{cal-tex-cursor-week2}).
|
|
342 @item t w 3
|
|
343 Generate an ISO-style calendar for one week
|
|
344 (@code{cal-tex-cursor-week-iso}).
|
|
345 @item t w 4
|
|
346 Generate a calendar for one Monday-starting week
|
|
347 (@code{cal-tex-cursor-week-monday}).
|
|
348 @item t f w
|
|
349 Generate a Filofax-style two-weeks-at-a-glance calendar
|
|
350 (@code{cal-tex-cursor-filofax-2week}).
|
|
351 @item t f W
|
|
352 Generate a Filofax-style one-week-at-a-glance calendar
|
|
353 (@code{cal-tex-cursor-filofax-week}).
|
|
354 @item t y
|
|
355 Generate a calendar for one year
|
|
356 (@code{cal-tex-cursor-year}).
|
|
357 @item t Y
|
|
358 Generate a sideways-printing calendar for one year
|
|
359 (@code{cal-tex-cursor-year-landscape}).
|
|
360 @item t f y
|
|
361 Generate a Filofax-style calendar for one year
|
|
362 (@code{cal-tex-cursor-filofax-year}).
|
|
363 @end table
|
|
364
|
|
365 Some of these commands print the calendar sideways (in ``landscape
|
|
366 mode''), so it can be wider than it is long. Some of them use Filofax
|
|
367 paper size (3.75in x 6.75in). All of these commands accept a prefix
|
|
368 argument which specifies how many days, weeks, months or years to print
|
|
369 (starting always with the selected one).
|
|
370
|
|
371 If the variable @code{cal-tex-holidays} is non-@code{nil} (the default),
|
|
372 then the printed calendars show the holidays in @code{calendar-holidays}.
|
|
373 If the variable @code{cal-tex-diary} is non-@code{nil} (the default is
|
|
374 @code{nil}), diary entries are included also (in weekly and monthly
|
|
375 calendars only). If the variable @code{cal-tex-rules} is non-@code{nil}
|
|
376 (the default is @code{nil}), the calendar styles with sufficient room
|
|
377 have ruled pages.
|
|
378
|
|
379 @node Holidays
|
|
380 @section Holidays
|
|
381 @cindex holidays
|
|
382
|
|
383 The Emacs calendar knows about all major and many minor holidays,
|
|
384 and can display them.
|
|
385
|
|
386 @table @kbd
|
|
387 @item h
|
|
388 Display holidays for the selected date
|
|
389 (@code{calendar-cursor-holidays}).
|
|
390 @item Mouse-2 Holidays
|
|
391 Display any holidays for the date you click on.
|
|
392 @item x
|
|
393 Mark holidays in the calendar window (@code{mark-calendar-holidays}).
|
|
394 @item u
|
|
395 Unmark calendar window (@code{calendar-unmark}).
|
|
396 @item a
|
|
397 List all holidays for the displayed three months in another window
|
|
398 (@code{list-calendar-holidays}).
|
|
399 @item M-x holidays
|
|
400 List all holidays for three months around today's date in another
|
|
401 window.
|
|
402 @item M-x list-holidays
|
|
403 List holidays in another window for a specified range of years.
|
|
404 @end table
|
|
405
|
|
406 @kindex h @r{(Calendar mode)}
|
|
407 @findex calendar-cursor-holidays
|
|
408 To see if any holidays fall on a given date, position point on that
|
|
409 date in the calendar window and use the @kbd{h} command. Alternatively,
|
|
410 click on that date with @kbd{Mouse-2} and then choose @kbd{Holidays}
|
|
411 from the menu that appears. Either way, this displays the holidays for
|
|
412 that date, in the echo area if they fit there, otherwise in a separate
|
|
413 window.
|
|
414
|
|
415 @kindex x @r{(Calendar mode)}
|
|
416 @findex mark-calendar-holidays
|
|
417 @kindex u @r{(Calendar mode)}
|
|
418 @findex calendar-unmark
|
|
419 To view the distribution of holidays for all the dates shown in the
|
|
420 calendar, use the @kbd{x} command. This displays the dates that are
|
|
421 holidays in a different face (or places a @samp{*} after these dates, if
|
|
422 display with multiple faces is not available). The command applies both
|
|
423 to the currently visible months and to other months that subsequently
|
|
424 become visible by scrolling. To turn marking off and erase the current
|
|
425 marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}).
|
|
426
|
|
427 @kindex a @r{(Calendar mode)}
|
|
428 @findex list-calendar-holidays
|
|
429 To get even more detailed information, use the @kbd{a} command, which
|
|
430 displays a separate buffer containing a list of all holidays in the
|
|
431 current three-month range. You can use @key{SPC} in the calendar window
|
|
432 to scroll that list.
|
|
433
|
|
434 @findex holidays
|
|
435 The command @kbd{M-x holidays} displays the list of holidays for the
|
|
436 current month and the preceding and succeeding months; this works even
|
|
437 if you don't have a calendar window. If you want the list of holidays
|
|
438 centered around a different month, use @kbd{C-u M-x holidays}, which
|
|
439 prompts for the month and year.
|
|
440
|
|
441 The holidays known to Emacs include United States holidays and the
|
|
442 major Christian, Jewish, and Islamic holidays; also the solstices and
|
|
443 equinoxes.
|
|
444
|
|
445 @findex list-holidays
|
|
446 The command @kbd{M-x list-holidays} displays the list of holidays for
|
|
447 a range of years. This function asks you for the starting and stopping
|
|
448 years, and allows you to choose all the holidays or one of several
|
|
449 categories of holidays. You can use this command even if you don't have
|
|
450 a calendar window.
|
|
451
|
|
452 The dates used by Emacs for holidays are based on @emph{current
|
|
453 practice}, not historical fact. Historically, for instance, the start
|
|
454 of daylight savings time and even its existence have varied from year to
|
|
455 year, but present United States law mandates that daylight savings time
|
|
456 begins on the first Sunday in April. When the daylight savings rules
|
|
457 are set up for the United States, Emacs always uses the present
|
|
458 definition, even though it is wrong for some prior years.
|
|
459
|
|
460 @node Sunrise/Sunset
|
|
461 @section Times of Sunrise and Sunset
|
|
462 @cindex sunrise and sunset
|
|
463
|
|
464 Special calendar commands can tell you, to within a minute or two, the
|
|
465 times of sunrise and sunset for any date.
|
|
466
|
|
467 @table @kbd
|
|
468 @item S
|
|
469 Display times of sunrise and sunset for the selected date
|
|
470 (@code{calendar-sunrise-sunset}).
|
|
471 @item Mouse-2 Sunrise/Sunset
|
|
472 Display times of sunrise and sunset for the date you click on.
|
|
473 @item M-x sunrise-sunset
|
|
474 Display times of sunrise and sunset for today's date.
|
|
475 @item C-u M-x sunrise-sunset
|
|
476 Display times of sunrise and sunset for a specified date.
|
|
477 @end table
|
|
478
|
|
479 @kindex S @r{(Calendar mode)}
|
|
480 @findex calendar-sunrise-sunset
|
|
481 @findex sunrise-sunset
|
|
482 Within the calendar, to display the @emph{local times} of sunrise and
|
|
483 sunset in the echo area, move point to the date you want, and type
|
|
484 @kbd{S}. Alternatively, click @kbd{Mouse-2} on the date, then choose
|
|
485 @kbd{Sunrise/Sunset} from the menu that appears. The command @kbd{M-x
|
|
486 sunrise-sunset} is available outside the calendar to display this
|
|
487 information for today's date or a specified date. To specify a date
|
|
488 other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for
|
|
489 the year, month, and day.
|
|
490
|
|
491 You can display the times of sunrise and sunset for any location and
|
|
492 any date with @kbd{C-u C-u M-x sunrise-sunset}. This asks you for a
|
|
493 longitude, latitude, number of minutes difference from Coordinated
|
|
494 Universal Time, and date, and then tells you the times of sunrise and
|
|
495 sunset for that location on that date.
|
|
496
|
|
497 Because the times of sunrise and sunset depend on the location on
|
|
498 earth, you need to tell Emacs your latitude, longitude, and location
|
|
499 name before using these commands. Here is an example of what to set:
|
|
500
|
|
501 @vindex calendar-location-name
|
|
502 @vindex calendar-longitude
|
|
503 @vindex calendar-latitude
|
|
504 @example
|
|
505 (setq calendar-latitude 40.1)
|
|
506 (setq calendar-longitude -88.2)
|
|
507 (setq calendar-location-name "Urbana, IL")
|
|
508 @end example
|
|
509
|
|
510 @noindent
|
|
511 Use one decimal place in the values of @code{calendar-latitude} and
|
|
512 @code{calendar-longitude}.
|
|
513
|
|
514 Your time zone also affects the local time of sunrise and sunset.
|
|
515 Emacs usually gets time zone information from the operating system, but
|
|
516 if these values are not what you want (or if the operating system does
|
|
517 not supply them), you must set them yourself. Here is an example:
|
|
518
|
|
519 @vindex calendar-time-zone
|
|
520 @vindex calendar-standard-time-zone-name
|
|
521 @vindex calendar-daylight-time-zone-name
|
|
522 @example
|
|
523 (setq calendar-time-zone -360)
|
|
524 (setq calendar-standard-time-zone-name "CST")
|
|
525 (setq calendar-daylight-time-zone-name "CDT")
|
|
526 @end example
|
|
527
|
|
528 @noindent
|
|
529 The value of @code{calendar-time-zone} is the number of minutes
|
|
530 difference between your local standard time and Coordinated Universal
|
|
531 Time (Greenwich time). The values of
|
|
532 @code{calendar-standard-time-zone-name} and
|
|
533 @code{calendar-daylight-time-zone-name} are the abbreviations used in
|
|
534 your time zone. Emacs displays the times of sunrise and sunset
|
|
535 @emph{corrected for daylight savings time}. @xref{Daylight Savings},
|
|
536 for how daylight savings time is determined.
|
|
537
|
|
538 As a user, you might find it convenient to set the calendar location
|
|
539 variables for your usual physical location in your @file{.emacs} file.
|
|
540 And when you install Emacs on a machine, you can create a
|
|
541 @file{default.el} file which sets them properly for the typical location
|
|
542 of most users of that machine. @xref{Init File}.
|
|
543
|
|
544 @node Lunar Phases
|
|
545 @section Phases of the Moon
|
|
546 @cindex phases of the moon
|
|
547 @cindex moon, phases of
|
|
548
|
|
549 These calendar commands display the dates and times of the phases of
|
|
550 the moon (new moon, first quarter, full moon, last quarter). This
|
|
551 feature is useful for debugging problems that ``depend on the phase of
|
|
552 the moon.''
|
|
553
|
|
554 @table @kbd
|
|
555 @item M
|
|
556 Display the dates and times for all the quarters of the moon for the
|
|
557 three-month period shown (@code{calendar-phases-of-moon}).
|
|
558 @item M-x phases-of-moon
|
|
559 Display dates and times of the quarters of the moon for three months around
|
|
560 today's date.
|
|
561 @end table
|
|
562
|
|
563 @kindex M @r{(Calendar mode)}
|
|
564 @findex calendar-phases-of-moon
|
|
565 Within the calendar, use the @kbd{M} command to display a separate
|
|
566 buffer of the phases of the moon for the current three-month range. The
|
|
567 dates and times listed are accurate to within a few minutes.
|
|
568
|
|
569 @findex phases-of-moon
|
|
570 Outside the calendar, use the command @kbd{M-x phases-of-moon} to
|
|
571 display the list of the phases of the moon for the current month and the
|
|
572 preceding and succeeding months. For information about a different
|
|
573 month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and
|
|
574 year.
|
|
575
|
|
576 The dates and times given for the phases of the moon are given in
|
|
577 local time (corrected for daylight savings, when appropriate); but if
|
|
578 the variable @code{calendar-time-zone} is void, Coordinated Universal
|
|
579 Time (the Greenwich time zone) is used. @xref{Daylight Savings}.
|
|
580
|
|
581 @node Other Calendars
|
|
582 @section Conversion To and From Other Calendars
|
|
583
|
|
584 @cindex Gregorian calendar
|
|
585 The Emacs calendar displayed is @emph{always} the Gregorian calendar,
|
|
586 sometimes called the ``new style'' calendar, which is used in most of
|
|
587 the world today. However, this calendar did not exist before the
|
|
588 sixteenth century and was not widely used before the eighteenth century;
|
|
589 it did not fully displace the Julian calendar and gain universal
|
|
590 acceptance until the early twentieth century. The Emacs calendar can
|
|
591 display any month since January, year 1 of the current era, but the
|
|
592 calendar displayed is the Gregorian, even for a date at which the
|
|
593 Gregorian calendar did not exist.
|
|
594
|
|
595 While Emacs cannot display other calendars, it can convert dates to
|
|
596 and from several other calendars.
|
|
597
|
|
598 @menu
|
|
599 * Calendar Systems:: The calendars Emacs understands
|
|
600 (aside from Gregorian).
|
|
601 * To Other Calendar:: Converting the selected date to various calendars.
|
|
602 * From Other Calendar:: Moving to a date specified in another calendar.
|
|
603 * Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
|
604 @end menu
|
|
605
|
|
606 @node Calendar Systems
|
|
607 @subsection Supported Calendar Systems
|
|
608
|
|
609 @cindex ISO commercial calendar
|
|
610 The ISO commercial calendar is used largely in Europe.
|
|
611
|
|
612 @cindex Julian calendar
|
|
613 The Julian calendar, named after Julius Caesar, was the one used in Europe
|
|
614 throughout medieval times, and in many countries up until the nineteenth
|
|
615 century.
|
|
616
|
|
617 @cindex Julian day numbers
|
|
618 @cindex astronomical day numbers
|
|
619 Astronomers use a simple counting of days elapsed since noon, Monday,
|
|
620 January 1, 4713 B.C. on the Julian calendar. The number of days elapsed
|
|
621 is called the @emph{Julian day number} or the @emph{Astronomical day number}.
|
|
622
|
|
623 @cindex Hebrew calendar
|
|
624 The Hebrew calendar is used by tradition in the Jewish religion. The
|
|
625 Emacs calendar program uses the Hebrew calendar to determine the dates
|
|
626 of Jewish holidays. Hebrew calendar dates begin and end at sunset.
|
|
627
|
|
628 @cindex Islamic calendar
|
|
629 The Islamic calendar is used in many predominantly Islamic countries.
|
|
630 Emacs uses it to determine the dates of Islamic holidays. There is no
|
|
631 universal agreement in the Islamic world about the calendar; Emacs uses
|
|
632 a widely accepted version, but the precise dates of Islamic holidays
|
|
633 often depend on proclamation by religious authorities, not on
|
|
634 calculations. As a consequence, the actual dates of observance can vary
|
|
635 slightly from the dates computed by Emacs. Islamic calendar dates begin
|
|
636 and end at sunset.
|
|
637
|
|
638 @cindex French Revolutionary calendar
|
|
639 The French Revolutionary calendar was created by the Jacobins after the 1789
|
|
640 revolution, to represent a more secular and nature-based view of the annual
|
|
641 cycle, and to install a 10-day week in a rationalization measure similar to
|
|
642 the metric system. The French government officially abandoned this
|
|
643 calendar at the end of 1805.
|
|
644
|
|
645 @cindex Mayan calendar
|
|
646 The Maya of Central America used three separate, overlapping calendar
|
|
647 systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}.
|
|
648 Emacs knows about all three of these calendars. Experts dispute the
|
|
649 exact correlation between the Mayan calendar and our calendar; Emacs uses the
|
|
650 Goodman-Martinez-Thompson correlation in its calculations.
|
|
651
|
|
652 @cindex Coptic calendar
|
|
653 @cindex Ethiopic calendar
|
|
654 The Copts use a calendar based on the ancient Egyptian solar calendar.
|
|
655 Their calendar consists of twelve 30-day months followed by an extra
|
|
656 five-day period. Once every fourth year they add a leap day to this
|
|
657 extra period to make it six days. The Ethiopic calendar is identical in
|
|
658 structure, but has different year numbers and month names.
|
|
659
|
|
660 @cindex Persian calendar
|
|
661 The Persians use a solar calendar based on a design of Omar Khayyam.
|
|
662 Their calendar consists of twelve months of which the first six have 31
|
|
663 days, the next five have 30 days, and the last has 29 in ordinary years
|
|
664 and 30 in leap years. Leap years occur in a complicated pattern every
|
|
665 four or five years.
|
|
666
|
|
667 @cindex Chinese calendar
|
|
668 The Chinese calendar is a complicated system of lunar months arranged
|
|
669 into solar years. The years go in cycles of sixty, each year containing
|
|
670 either twelve months in an ordinary year or thirteen months in a leap
|
|
671 year; each month has either 29 or 30 days. Years, ordinary months, and
|
|
672 days are named by combining one of ten ``celestial stems'' with one of
|
|
673 twelve ``terrestrial branches'' for a total of sixty names that are
|
|
674 repeated in a cycle of sixty.
|
|
675
|
|
676 @node To Other Calendar
|
|
677 @subsection Converting To Other Calendars
|
|
678
|
|
679 The following commands describe the selected date (the date at point)
|
|
680 in various other calendar systems:
|
|
681
|
|
682 @table @kbd
|
|
683 @item Mouse-2 Other Calendars
|
|
684 Display the date that you click on, expressed in various other calendars.
|
|
685 @kindex p @r{(Calendar mode)}
|
|
686 @findex calendar-print-iso-date
|
|
687 @item p c
|
|
688 Display ISO commercial calendar equivalent for selected day
|
|
689 (@code{calendar-print-iso-date}).
|
|
690 @findex calendar-print-julian-date
|
|
691 @item p j
|
|
692 Display Julian date for selected day (@code{calendar-print-julian-date}).
|
|
693 @findex calendar-print-astro-day-number
|
|
694 @item p a
|
|
695 Display astronomical (Julian) day number for selected day
|
|
696 (@code{calendar-print-astro-day-number}).
|
|
697 @findex calendar-print-hebrew-date
|
|
698 @item p h
|
|
699 Display Hebrew date for selected day (@code{calendar-print-hebrew-date}).
|
|
700 @findex calendar-print-islamic-date
|
|
701 @item p i
|
|
702 Display Islamic date for selected day (@code{calendar-print-islamic-date}).
|
|
703 @findex calendar-print-french-date
|
|
704 @item p f
|
|
705 Display French Revolutionary date for selected day
|
|
706 (@code{calendar-print-french-date}).
|
|
707 @findex calendar-print-chinese-date
|
|
708 @item p C
|
|
709 Display Chinese date for selected day
|
|
710 (@code{calendar-print-chinese-date}).
|
|
711 @findex calendar-print-coptic-date
|
|
712 @item p k
|
|
713 Display Coptic date for selected day
|
|
714 (@code{calendar-print-coptic-date}).
|
|
715 @findex calendar-print-ethiopic-date
|
|
716 @item p e
|
|
717 Display Ethiopic date for selected day
|
|
718 (@code{calendar-print-ethiopic-date}).
|
|
719 @findex calendar-print-persian-date
|
|
720 @item p p
|
|
721 Display Persian date for selected day
|
|
722 (@code{calendar-print-persian-date}).
|
|
723 @findex calendar-print-mayan-date
|
|
724 @item p m
|
|
725 Display Mayan date for selected day (@code{calendar-print-mayan-date}).
|
|
726 @end table
|
|
727
|
|
728 If you are using X, the easiest way to translate a date into other
|
|
729 calendars is to click on it with @kbd{Mouse-2}, then choose @kbd{Other
|
|
730 Calendars} from the menu that appears. This displays the equivalent
|
|
731 forms of the date in all the calendars Emacs understands, in the form of
|
|
732 a menu. (Choosing an alternative from this menu doesn't actually do
|
|
733 anything---the menu is used only for display.)
|
|
734
|
|
735 Put point on the desired date of the Gregorian calendar, then type the
|
|
736 appropriate keys. The @kbd{p} is a mnemonic for ``print'' since Emacs
|
|
737 ``prints'' the equivalent date in the echo area.
|
|
738
|
|
739 @node From Other Calendar
|
|
740 @subsection Converting From Other Calendars
|
|
741
|
|
742 You can use the other supported calendars to specify a date to move
|
|
743 to. This section describes the commands for doing this using calendars
|
|
744 other than Mayan; for the Mayan calendar, see the following section.
|
|
745
|
|
746 @kindex g @var{char} @r{(Calendar mode)}
|
|
747 @findex calendar-goto-iso-date
|
|
748 @findex calendar-goto-julian-date
|
|
749 @findex calendar-goto-astro-day-number
|
|
750 @findex calendar-goto-hebrew-date
|
|
751 @findex calendar-goto-islamic-date
|
|
752 @findex calendar-goto-french-date
|
|
753 @findex calendar-goto-chinese-date
|
|
754 @findex calendar-goto-persian-date
|
|
755 @findex calendar-goto-coptic-date
|
|
756 @findex calendar-goto-ethiopic-date
|
|
757 @table @kbd
|
|
758 @item g c
|
|
759 Move to a date specified in the ISO commercial calendar
|
|
760 (@code{calendar-goto-iso-date}).
|
|
761 @item g j
|
|
762 Move to a date specified in the Julian calendar
|
|
763 (@code{calendar-goto-julian-date}).
|
|
764 @item g a
|
|
765 Move to a date specified in astronomical (Julian) day number
|
|
766 (@code{calendar-goto-astro-day-number}).
|
|
767 @item g h
|
|
768 Move to a date specified in the Hebrew calendar
|
|
769 (@code{calendar-goto-hebrew-date}).
|
|
770 @item g i
|
|
771 Move to a date specified in the Islamic calendar
|
|
772 (@code{calendar-goto-islamic-date}).
|
|
773 @item g f
|
|
774 Move to a date specified in the French Revolutionary calendar
|
|
775 (@code{calendar-goto-french-date}).
|
|
776 @item g C
|
|
777 Move to a date specified in the Chinese calendar
|
|
778 (@code{calendar-goto-chinese-date}).
|
|
779 @item g p
|
|
780 Move to a date specified in the Persian calendar
|
|
781 (@code{calendar-goto-persian-date}).
|
|
782 @item g k
|
|
783 Move to a date specified in the Coptic calendar
|
|
784 (@code{calendar-goto-coptic-date}).
|
|
785 @item g e
|
|
786 Move to a date specified in the Ethiopic calendar
|
|
787 (@code{calendar-goto-ethiopic-date}).
|
|
788 @end table
|
|
789
|
|
790 These commands ask you for a date on the other calendar, move point to
|
|
791 the Gregorian calendar date equivalent to that date, and display the
|
|
792 other calendar's date in the echo area. Emacs uses strict completion
|
|
793 (@pxref{Completion}) whenever it asks you to type a month name, so you
|
|
794 don't have to worry about the spelling of Hebrew, Islamic, or French names.
|
|
795
|
|
796 @findex list-yahrzeit-dates
|
|
797 @cindex yahrzeits
|
|
798 One common question concerning the Hebrew calendar is the computation
|
|
799 of the anniversary of a date of death, called a ``yahrzeit.'' The Emacs
|
|
800 calendar includes a facility for such calculations. If you are in the
|
|
801 calendar, the command @kbd{M-x list-yahrzeit-dates} asks you for a
|
|
802 range of years and then displays a list of the yahrzeit dates for those
|
|
803 years for the date given by point. If you are not in the calendar,
|
|
804 this command first asks you for the date of death and the range of
|
|
805 years, and then displays the list of yahrzeit dates.
|
|
806
|
|
807 @node Mayan Calendar
|
|
808 @subsection Converting from the Mayan Calendar
|
|
809
|
|
810 Here are the commands to select dates based on the Mayan calendar:
|
|
811
|
|
812 @table @kbd
|
|
813 @item g m l
|
|
814 Move to a date specified by the long count calendar
|
|
815 (@code{calendar-goto-mayan-long-count-date}).
|
|
816 @item g m n t
|
|
817 Move to the next occurrence of a place in the
|
|
818 tzolkin calendar (@code{calendar-next-tzolkin-date}).
|
|
819 @item g m p t
|
|
820 Move to the previous occurrence of a place in the
|
|
821 tzolkin calendar (@code{calendar-previous-tzolkin-date}).
|
|
822 @item g m n h
|
|
823 Move to the next occurrence of a place in the
|
|
824 haab calendar (@code{calendar-next-haab-date}).
|
|
825 @item g m p h
|
|
826 Move to the previous occurrence of a place in the
|
|
827 haab calendar (@code{calendar-previous-haab-date}).
|
|
828 @item g m n c
|
|
829 Move to the next occurrence of a place in the
|
|
830 calendar round (@code{calendar-next-calendar-round-date}).
|
|
831 @item g m p c
|
|
832 Move to the previous occurrence of a place in the
|
|
833 calendar round (@code{calendar-previous-calendar-round-date}).
|
|
834 @end table
|
|
835
|
|
836 @cindex Mayan long count
|
|
837 To understand these commands, you need to understand the Mayan calendars.
|
|
838 The @dfn{long count} is a counting of days with these units:
|
|
839
|
|
840 @display
|
|
841 1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
|
|
842 1 katun = 20 tun@ @ @ 1 baktun = 20 katun
|
|
843 @end display
|
|
844
|
|
845 @kindex g m @r{(Calendar mode)}
|
|
846 @findex calendar-goto-mayan-long-count-date
|
|
847 @noindent
|
|
848 Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
|
|
849 tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long
|
|
850 count dates as early as 7.17.18.13.1, but no earlier. When you use the
|
|
851 @kbd{g m l} command, type the Mayan long count date with the baktun,
|
|
852 katun, tun, uinal, and kin separated by periods.
|
|
853
|
|
854 @findex calendar-previous-tzolkin-date
|
|
855 @findex calendar-next-tzolkin-date
|
|
856 @cindex Mayan tzolkin calendar
|
|
857 The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
|
|
858 independent cycles of 13 and 20 days. Since this cycle repeats
|
|
859 endlessly, Emacs provides commands to move backward and forward to the
|
|
860 previous or next point in the cycle. Type @kbd{g m p t} to go to the
|
|
861 previous tzolkin date; Emacs asks you for a tzolkin date and moves point
|
|
862 to the previous occurrence of that date. Similarly, type @kbd{g m n t}
|
|
863 to go to the next occurrence of a tzolkin date.
|
|
864
|
|
865 @findex calendar-previous-haab-date
|
|
866 @findex calendar-next-haab-date
|
|
867 @cindex Mayan haab calendar
|
|
868 The Mayan haab calendar is a cycle of 365 days arranged as 18 months
|
|
869 of 20 days each, followed a 5-day monthless period. Like the tzolkin
|
|
870 cycle, this cycle repeats endlessly, and there are commands to move
|
|
871 backward and forward to the previous or next point in the cycle. Type
|
|
872 @kbd{g m p h} to go to the previous haab date; Emacs asks you for a haab
|
|
873 date and moves point to the previous occurrence of that date.
|
|
874 Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
|
|
875 date.
|
|
876
|
|
877 @c This is omitted because it is too long for smallbook format.
|
|
878 @c @findex calendar-previous-calendar-round-date
|
|
879 @findex calendar-next-calendar-round-date
|
|
880 @cindex Mayan calendar round
|
|
881 The Maya also used the combination of the tzolkin date and the haab
|
|
882 date. This combination is a cycle of about 52 years called a
|
|
883 @emph{calendar round}. If you type @kbd{g m p c}, Emacs asks you for
|
|
884 both a haab and a tzolkin date and then moves point to the previous
|
|
885 occurrence of that combination. Use @kbd{g m n c} to move point to the
|
|
886 next occurrence of a combination. These commands signal an error if the
|
|
887 haab/tzolkin date combination you have typed is impossible.
|
|
888
|
|
889 Emacs uses strict completion (@pxref{Strict Completion}) whenever it
|
|
890 asks you to type a Mayan name, so you don't have to worry about
|
|
891 spelling.
|
|
892
|
|
893 @node Diary
|
|
894 @section The Diary
|
|
895 @cindex diary
|
|
896
|
|
897 The Emacs diary keeps track of appointments or other events on a daily
|
|
898 basis, in conjunction with the calendar. To use the diary feature, you
|
|
899 must first create a @dfn{diary file} containing a list of events and
|
|
900 their dates. Then Emacs can automatically pick out and display the
|
|
901 events for today, for the immediate future, or for any specified
|
|
902 date.
|
|
903
|
|
904 By default, Emacs uses @file{~/diary} as the diary file. This is the
|
|
905 same file that the @code{calendar} utility uses. A sample
|
|
906 @file{~/diary} file is:
|
|
907
|
|
908 @example
|
|
909 12/22/1988 Twentieth wedding anniversary!!
|
|
910 &1/1. Happy New Year!
|
|
911 10/22 Ruth's birthday.
|
|
912 * 21, *: Payday
|
|
913 Tuesday--weekly meeting with grad students at 10am
|
|
914 Supowit, Shen, Bitner, and Kapoor to attend.
|
|
915 1/13/89 Friday the thirteenth!!
|
|
916 &thu 4pm squash game with Lloyd.
|
|
917 mar 16 Dad's birthday
|
|
918 April 15, 1989 Income tax due.
|
|
919 &* 15 time cards due.
|
|
920 @end example
|
|
921
|
|
922 @noindent
|
|
923 This example uses extra spaces to align the event descriptions of most
|
|
924 of the entries. Such formatting is purely a matter of taste.
|
|
925
|
|
926 Although you probably will start by creating a diary manually, Emacs
|
|
927 provides a number of commands to let you view, add, and change diary
|
|
928 entries.
|
|
929
|
|
930 @menu
|
|
931 * Diary Commands:: Viewing diary entries and associated calendar dates.
|
|
932 * Format of Diary File:: Entering events in your diary.
|
|
933 * Date Formats:: Various ways you can specify dates.
|
|
934 * Adding to Diary:: Commands to create diary entries.
|
|
935 * Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc.
|
|
936 @end menu
|
|
937
|
|
938 @node Diary Commands
|
|
939 @subsection Commands Displaying Diary Entries
|
|
940
|
|
941 Once you have created a @file{~/diary} file, you can use the calendar
|
|
942 to view it. You can also view today's events outside of Calendar mode.
|
|
943
|
|
944 @table @kbd
|
|
945 @item d
|
|
946 Display all diary entries for the selected date
|
|
947 (@code{view-diary-entries}).
|
|
948 @item Mouse-2 Diary
|
|
949 Display all diary entries for the date you click on.
|
|
950 @item s
|
|
951 Display the entire diary file (@code{show-all-diary-entries}).
|
|
952 @item m
|
|
953 Mark all visible dates that have diary entries
|
|
954 (@code{mark-diary-entries}).
|
|
955 @item u
|
|
956 Unmark the calendar window (@code{calendar-unmark}).
|
|
957 @item M-x print-diary-entries
|
|
958 Print hard copy of the diary display as it appears.
|
|
959 @item M-x diary
|
|
960 Display all diary entries for today's date.
|
|
961 @item M-x diary-mail-entries
|
|
962 Mail yourself email reminders about upcoming diary entries.
|
|
963 @end table
|
|
964
|
|
965 @kindex d @r{(Calendar mode)}
|
|
966 @findex view-diary-entries
|
|
967 Displaying the diary entries with @kbd{d} shows in a separate window
|
|
968 the diary entries for the selected date in the calendar. The mode line
|
|
969 of the new window shows the date of the diary entries and any holidays
|
|
970 that fall on that date. If you specify a numeric argument with @kbd{d},
|
|
971 it shows all the diary entries for that many successive days. Thus,
|
|
972 @kbd{2 d} displays all the entries for the selected date and for the
|
|
973 following day.
|
|
974
|
|
975 Another way to display the diary entries for a date is to click
|
|
976 @kbd{Mouse-2} on the date, and then choose @kbd{Diary} from the menu
|
|
977 that appears.
|
|
978
|
|
979 @kindex m @r{(Calendar mode)}
|
|
980 @findex mark-diary-entries
|
|
981 To get a broader view of which days are mentioned in the diary, use
|
|
982 the @kbd{m} command. This displays the dates that have diary entries
|
|
983 in a different face (or places a @samp{+} after these dates, if
|
|
984 display with multiple faces is not available). The command applies both
|
|
985 to the currently visible months and to other months that subsequently
|
|
986 become visible by scrolling. To turn marking off and erase the current
|
|
987 marks, type @kbd{u}, which also turns off holiday marks
|
|
988 (@pxref{Holidays}).
|
|
989
|
|
990 @kindex s @r{(Calendar mode)}
|
|
991 @findex show-all-diary-entries
|
|
992 To see the full diary file, rather than just some of the entries, use
|
|
993 the @kbd{s} command.
|
|
994
|
|
995 Display of selected diary entries uses the selective display feature
|
|
996 to hide entries that don't apply.
|
|
997
|
|
998 The diary buffer as you see it is an illusion, so simply printing the
|
|
999 buffer does not print what you see on your screen. There is a special
|
|
1000 command to print hard copy of the diary buffer @emph{as it appears};
|
|
1001 this command is @kbd{M-x print-diary-entries}. It sends the data
|
|
1002 directly to the printer. You can customize it like @code{lpr-region}
|
|
1003 (@pxref{Hardcopy}).
|
|
1004
|
|
1005 @findex diary
|
|
1006 The command @kbd{M-x diary} displays the diary entries for the current
|
|
1007 date, independently of the calendar display, and optionally for the next
|
|
1008 few days as well; the variable @code{number-of-diary-entries} specifies
|
|
1009 how many days to include. @xref{Calendar, Customizing the Calendar
|
|
1010 and Diary,, elisp, The Emacs Lisp Reference Manual}.
|
|
1011
|
|
1012 If you put @code{(diary)} in your @file{.emacs} file, this
|
|
1013 automatically displays a window with the day's diary entries, when you
|
|
1014 enter Emacs. The mode line of the displayed window shows the date and
|
|
1015 any holidays that fall on that date.
|
|
1016
|
|
1017 @findex diary-mail-entries
|
|
1018 @vindex diary-mail-days
|
|
1019 Many users like to receive notice of events in their diary as email.
|
|
1020 To send such mail to yourself, use the command @kbd{M-x
|
|
1021 diary-mail-entries}. A prefix argument specifies how many days
|
|
1022 (starting with today) to check; otherwise, the variable
|
|
1023 @code{diary-mail-days} says how many days.
|
|
1024
|
|
1025 @node Format of Diary File
|
|
1026 @subsection The Diary File
|
|
1027 @cindex diary file
|
|
1028
|
|
1029 @vindex diary-file
|
|
1030 Your @dfn{diary file} is a file that records events associated with
|
|
1031 particular dates. The name of the diary file is specified by the
|
|
1032 variable @code{diary-file}; @file{~/diary} is the default. The
|
|
1033 @code{calendar} utility program supports a subset of the format allowed
|
|
1034 by the Emacs diary facilities, so you can use that utility to view the
|
|
1035 diary file, with reasonable results aside from the entries it cannot
|
|
1036 understand.
|
|
1037
|
|
1038 Each entry in the diary file describes one event and consists of one
|
|
1039 or more lines. An entry always begins with a date specification at the
|
|
1040 left margin. The rest of the entry is simply text to describe the
|
|
1041 event. If the entry has more than one line, then the lines after the
|
|
1042 first must begin with whitespace to indicate they continue a previous
|
|
1043 entry. Lines that do not begin with valid dates and do not continue a
|
|
1044 preceding entry are ignored.
|
|
1045
|
|
1046 You can inhibit the marking of certain diary entries in the calendar
|
|
1047 window; to do this, insert an ampersand (@samp{&}) at the beginning of
|
|
1048 the entry, before the date. This has no effect on display of the entry
|
|
1049 in the diary window; it affects only marks on dates in the calendar
|
|
1050 window. Nonmarking entries are especially useful for generic entries
|
|
1051 that would otherwise mark many different dates.
|
|
1052
|
|
1053 If the first line of a diary entry consists only of the date or day
|
|
1054 name with no following blanks or punctuation, then the diary window
|
|
1055 display doesn't include that line; only the continuation lines appear.
|
|
1056 For example, this entry:
|
|
1057
|
|
1058 @example
|
|
1059 02/11/1989
|
|
1060 Bill B. visits Princeton today
|
|
1061 2pm Cognitive Studies Committee meeting
|
|
1062 2:30-5:30 Liz at Lawrenceville
|
|
1063 4:00pm Dentist appt
|
|
1064 7:30pm Dinner at George's
|
|
1065 8:00-10:00pm concert
|
|
1066 @end example
|
|
1067
|
|
1068 @noindent
|
|
1069 appears in the diary window without the date line at the beginning.
|
|
1070 This style of entry looks neater when you display just a single day's
|
|
1071 entries, but can cause confusion if you ask for more than one day's
|
|
1072 entries.
|
|
1073
|
|
1074 You can edit the diary entries as they appear in the window, but it is
|
|
1075 important to remember that the buffer displayed contains the @emph{entire}
|
|
1076 diary file, with portions of it concealed from view. This means, for
|
|
1077 instance, that the @kbd{C-f} (@code{forward-char}) command can put point
|
|
1078 at what appears to be the end of the line, but what is in reality the
|
|
1079 middle of some concealed line.
|
|
1080
|
|
1081 @emph{Be careful when editing the diary entries!} Inserting
|
|
1082 additional lines or adding/deleting characters in the middle of a
|
|
1083 visible line cannot cause problems, but editing at the end of a line may
|
|
1084 not do what you expect. Deleting a line may delete other invisible
|
|
1085 entries that follow it. Before editing the diary, it is best to display
|
|
1086 the entire file with @kbd{s} (@code{show-all-diary-entries}).
|
|
1087
|
|
1088 @node Date Formats
|
|
1089 @subsection Date Formats
|
|
1090
|
|
1091 Here are some sample diary entries, illustrating different ways of
|
|
1092 formatting a date. The examples all show dates in American order
|
|
1093 (month, day, year), but Calendar mode supports European order (day,
|
|
1094 month, year) as an option.
|
|
1095
|
|
1096 @example
|
|
1097 4/20/93 Switch-over to new tabulation system
|
|
1098 apr. 25 Start tabulating annual results
|
|
1099 4/30 Results for April are due
|
|
1100 */25 Monthly cycle finishes
|
|
1101 Friday Don't leave without backing up files
|
|
1102 @end example
|
|
1103
|
|
1104 The first entry appears only once, on April 20, 1993. The second and
|
|
1105 third appear every year on the specified dates, and the fourth uses a
|
|
1106 wildcard (asterisk) for the month, so it appears on the 25th of every
|
|
1107 month. The final entry appears every week on Friday.
|
|
1108
|
|
1109 You can use just numbers to express a date, as in
|
|
1110 @samp{@var{month}/@var{day}} or @samp{@var{month}/@var{day}/@var{year}}.
|
|
1111 This must be followed by a nondigit. In the date itself, @var{month}
|
|
1112 and @var{day} are numbers of one or two digits. The optional @var{year}
|
|
1113 is also a number, and may be abbreviated to the last two digits; that
|
|
1114 is, you can use @samp{11/12/1989} or @samp{11/12/89}.
|
|
1115
|
|
1116 Dates can also have the form @samp{@var{monthname} @var{day}} or
|
|
1117 @samp{@var{monthname} @var{day}, @var{year}}, where the month's name can
|
|
1118 be spelled in full or abbreviated to three characters (with or without a
|
|
1119 period). Case is not significant.
|
|
1120
|
|
1121 A date may be @dfn{generic}; that is, partially unspecified. Then the
|
|
1122 entry applies to all dates that match the specification. If the date
|
|
1123 does not contain a year, it is generic and applies to any year.
|
|
1124 Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*};
|
|
1125 this matches any month, day, or year, respectively. Thus, a diary entry
|
|
1126 @samp{3/*/*} matches any day in March of any year; so does @samp{march
|
|
1127 *}.
|
|
1128
|
|
1129 @vindex european-calendar-style
|
|
1130 @findex european-calendar
|
|
1131 @findex american-calendar
|
|
1132 If you prefer the European style of writing dates---in which the day
|
|
1133 comes before the month---type @kbd{M-x european-calendar} while in the
|
|
1134 calendar, or set the variable @code{european-calendar-style} to @code{t}
|
|
1135 @emph{before} using any calendar or diary command. This mode interprets
|
|
1136 all dates in the diary in the European manner, and also uses European
|
|
1137 style for displaying diary dates. (Note that there is no comma after
|
|
1138 the @var{monthname} in the European style.) To go back to the (default)
|
|
1139 American style of writing dates, type @kbd{M-x american-calendar}.
|
|
1140
|
|
1141 You can use the name of a day of the week as a generic date which
|
|
1142 applies to any date falling on that day of the week. You can abbreviate
|
|
1143 the day of the week to three letters (with or without a period) or spell
|
|
1144 it in full; case is not significant.
|
|
1145
|
|
1146 @node Adding to Diary
|
|
1147 @subsection Commands to Add to the Diary
|
|
1148
|
|
1149 While in the calendar, there are several commands to create diary
|
|
1150 entries:
|
|
1151
|
|
1152 @table @kbd
|
|
1153 @item i d
|
|
1154 Add a diary entry for the selected date (@code{insert-diary-entry}).
|
|
1155 @item i w
|
|
1156 Add a diary entry for the selected day of the week (@code{insert-weekly-diary-entry}).
|
|
1157 @item i m
|
|
1158 Add a diary entry for the selected day of the month (@code{insert-monthly-diary-entry}).
|
|
1159 @item i y
|
|
1160 Add a diary entry for the selected day of the year (@code{insert-yearly-diary-entry}).
|
|
1161 @end table
|
|
1162
|
|
1163 @kindex i d @r{(Calendar mode)}
|
|
1164 @findex insert-diary-entry
|
|
1165 You can make a diary entry for a specific date by selecting that date
|
|
1166 in the calendar window and typing the @kbd{i d} command. This command
|
|
1167 displays the end of your diary file in another window and inserts the
|
|
1168 date; you can then type the rest of the diary entry.
|
|
1169
|
|
1170 @kindex i w @r{(Calendar mode)}
|
|
1171 @findex insert-weekly-diary-entry
|
|
1172 @kindex i m @r{(Calendar mode)}
|
|
1173 @findex insert-monthly-diary-entry
|
|
1174 @kindex i y @r{(Calendar mode)}
|
|
1175 @findex insert-yearly-diary-entry
|
|
1176 If you want to make a diary entry that applies to a specific day of
|
|
1177 the week, select that day of the week (any occurrence will do) and type
|
|
1178 @kbd{i w}. This inserts the day-of-week as a generic date; you can then
|
|
1179 type the rest of the diary entry. You can make a monthly diary entry in
|
|
1180 the same fashion. Select the day of the month, use the @kbd{i m}
|
|
1181 command, and type rest of the entry. Similarly, you can insert a yearly
|
|
1182 diary entry with the @kbd{i y} command.
|
|
1183
|
|
1184 All of the above commands make marking diary entries by default. To
|
|
1185 make a nonmarking diary entry, give a numeric argument to the command.
|
|
1186 For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
|
|
1187
|
|
1188 When you modify the diary file, be sure to save the file before
|
|
1189 exiting Emacs.
|
|
1190
|
|
1191 @node Special Diary Entries
|
|
1192 @subsection Special Diary Entries
|
|
1193
|
|
1194 In addition to entries based on calendar dates, the diary file can
|
|
1195 contain @dfn{sexp entries} for regular events such as anniversaries.
|
|
1196 These entries are based on Lisp expressions (sexps) that Emacs evaluates
|
|
1197 as it scans the diary file. Instead of a date, a sexp entry contains
|
|
1198 @samp{%%} followed by a Lisp expression which must begin and end with
|
|
1199 parentheses. The Lisp expression determines which dates the entry
|
|
1200 applies to.
|
|
1201
|
|
1202 Calendar mode provides commands to insert certain commonly used
|
|
1203 sexp entries:
|
|
1204
|
|
1205 @table @kbd
|
|
1206 @item i a
|
|
1207 Add an anniversary diary entry for the selected date
|
|
1208 (@code{insert-anniversary-diary-entry}).
|
|
1209 @item i b
|
|
1210 Add a block diary entry for the current region
|
|
1211 (@code{insert-block-diary-entry}).
|
|
1212 @item i c
|
|
1213 Add a cyclic diary entry starting at the date
|
|
1214 (@code{insert-cyclic-diary-entry}).
|
|
1215 @end table
|
|
1216
|
|
1217 @kindex i a @r{(Calendar mode)}
|
|
1218 @findex insert-anniversary-diary-entry
|
|
1219 If you want to make a diary entry that applies to the anniversary of a
|
|
1220 specific date, move point to that date and use the @kbd{i a} command.
|
|
1221 This displays the end of your diary file in another window and inserts
|
|
1222 the anniversary description; you can then type the rest of the diary
|
|
1223 entry. The entry looks like this:
|
|
1224
|
|
1225 @findex diary-anniversary
|
|
1226 @example
|
|
1227 %%(diary-anniversary 10 31 1948) Arthur's birthday
|
|
1228 @end example
|
|
1229
|
|
1230 @noindent
|
|
1231 This entry applies to October 31 in any year after 1948; @samp{10 31
|
|
1232 1948} specifies the date. (If you are using the European calendar
|
|
1233 style, the month and day are interchanged.) The reason this expression
|
|
1234 requires a beginning year is that advanced diary functions can use it to
|
|
1235 calculate the number of elapsed years.
|
|
1236
|
|
1237 A @dfn{block} diary entry applies to a specified range of consecutive
|
|
1238 dates. Here is a block diary entry that applies to all dates from June
|
|
1239 24, 1990 through July 10, 1990:
|
|
1240
|
|
1241 @findex diary-block
|
|
1242 @example
|
|
1243 %%(diary-block 6 24 1990 7 10 1990) Vacation
|
|
1244 @end example
|
|
1245
|
|
1246 @noindent
|
|
1247 The @samp{6 24 1990} indicates the starting date and the @samp{7 10 1990}
|
|
1248 indicates the stopping date. (Again, if you are using the European calendar
|
|
1249 style, the month and day are interchanged.)
|
|
1250
|
|
1251 @kindex i b @r{(Calendar mode)}
|
|
1252 @findex insert-block-diary-entry
|
|
1253 To insert a block entry, place point and the mark on the two
|
|
1254 dates that begin and end the range, and type @kbd{i b}. This command
|
|
1255 displays the end of your diary file in another window and inserts the
|
|
1256 block description; you can then type the diary entry.
|
|
1257
|
|
1258 @kindex i c @r{(Calendar mode)}
|
|
1259 @findex insert-cyclic-diary-entry
|
|
1260 @dfn{Cyclic} diary entries repeat after a fixed interval of days. To
|
|
1261 create one, select the starting date and use the @kbd{i c} command. The
|
|
1262 command prompts for the length of interval, then inserts the entry,
|
|
1263 which looks like this:
|
|
1264
|
|
1265 @findex diary-cyclic
|
|
1266 @example
|
|
1267 %%(diary-cyclic 50 3 1 1990) Renew medication
|
|
1268 @end example
|
|
1269
|
|
1270 @noindent
|
|
1271 This entry applies to March 1, 1990 and every 50th day following;
|
|
1272 @samp{3 1 1990} specifies the starting date. (If you are using the
|
|
1273 European calendar style, the month and day are interchanged.)
|
|
1274
|
|
1275 All three of these commands make marking diary entries. To insert a
|
|
1276 nonmarking entry, give a numeric argument to the command. For example,
|
|
1277 @kbd{C-u i a} makes a nonmarking anniversary diary entry.
|
|
1278
|
|
1279 Marking sexp diary entries in the calendar is @emph{extremely}
|
|
1280 time-consuming, since every date visible in the calendar window must be
|
|
1281 individually checked. So it's a good idea to make sexp diary entries
|
|
1282 nonmarking (with @samp{&}) when possible.
|
|
1283
|
|
1284 Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
|
|
1285 specifies a regularly occurring event by offsets specified in days,
|
|
1286 weeks, and months. It is comparable to a crontab entry interpreted by
|
|
1287 the @code{cron} utility. Here is a nonmarking, floating diary entry
|
|
1288 that applies to the last Thursday in November:
|
|
1289
|
|
1290 @findex diary-float
|
|
1291 @example
|
|
1292 &%%(diary-float 11 4 -1) American Thanksgiving
|
|
1293 @end example
|
|
1294
|
|
1295 @noindent
|
|
1296 The 11 specifies November (the eleventh month), the 4 specifies Thursday
|
|
1297 (the fourth day of the week, where Sunday is numbered zero), and the
|
|
1298 @minus{}1 specifies ``last'' (1 would mean ``first,'' 2 would mean
|
|
1299 ``second,'' @minus{}2 would mean ``second-to-last,'' and so on). The
|
|
1300 month can be a single month or a list of months. Thus you could change
|
|
1301 the 11 above to @samp{'(1 2 3)} and have the entry apply to the last
|
|
1302 Thursday of January, February, and March. If the month is @code{t}, the
|
|
1303 entry applies to all months of the year.@refill
|
|
1304
|
|
1305 Most generally, sexp diary entries can perform arbitrary
|
|
1306 computations to determine when they apply. @xref{Sexp Diary Entries,,
|
|
1307 Sexp Diary Entries, elisp, The Emacs Lisp Reference Manual}.
|
|
1308
|
|
1309 @node Appointments
|
|
1310 @section Appointments
|
|
1311 @cindex appointment notification
|
|
1312
|
|
1313 If you have a diary entry for an appointment, and that diary entry
|
|
1314 begins with a recognizable time of day, Emacs can warn you, several
|
|
1315 minutes beforehand, that that appointment is pending. Emacs alerts you
|
|
1316 to the appointment by displaying a message in the mode line.
|
|
1317
|
|
1318 @vindex diary-hook
|
|
1319 @findex appt-make-list
|
|
1320 To enable appointment notification, you must enable the time display
|
|
1321 feature of Emacs, @kbd{M-x display-time} (@pxref{Mode Line}). You must
|
|
1322 also add the function @code{appt-make-list} to the
|
|
1323 @code{diary-hook}, like this:
|
|
1324
|
|
1325 @example
|
|
1326 (add-hook 'diary-hook 'appt-make-list)
|
|
1327 @end example
|
|
1328
|
|
1329 @noindent
|
|
1330 Adding this text to your @file{.emacs} file does the whole job:
|
|
1331
|
|
1332 @example
|
|
1333 (display-time)
|
|
1334 (add-hook 'diary-hook 'appt-make-list)
|
|
1335 (diary 0)
|
|
1336 @end example
|
|
1337
|
|
1338 With these preparations done, when you display the diary (either with
|
|
1339 the @kbd{d} command in the calendar window or with the @kbd{M-x diary}
|
|
1340 command), it sets up an appointment list of all the diary entries found
|
|
1341 with recognizable times of day, and reminds you just before each of
|
|
1342 them.
|
|
1343
|
|
1344 For example, suppose the diary file contains these lines:
|
|
1345
|
|
1346 @example
|
|
1347 Monday
|
|
1348 9:30am Coffee break
|
|
1349 12:00pm Lunch
|
|
1350 @end example
|
|
1351
|
|
1352 @noindent
|
|
1353 Then on Mondays, after you have displayed the diary, you will be
|
|
1354 reminded at 9:20am about your coffee break and at 11:50am about lunch.
|
|
1355
|
|
1356 You can write times in am/pm style (with @samp{12:00am} standing
|
|
1357 for midnight and @samp{12:00pm} standing for noon), or 24-hour
|
|
1358 European/military style. You need not be consistent; your diary file
|
|
1359 can have a mixture of the two styles.
|
|
1360
|
|
1361 @vindex appt-display-diary
|
|
1362 Emacs updates the appointments list automatically just after
|
|
1363 midnight. This also displays the next day's diary entries in the diary
|
|
1364 buffer, unless you set @code{appt-display-diary} to @code{nil}.
|
|
1365
|
|
1366 @findex appt-add
|
|
1367 @findex appt-delete
|
|
1368 @cindex alarm clock
|
|
1369 You can also use the appointment notification facility like an alarm
|
|
1370 clock. The command @kbd{M-x appt-add} adds entries to the appointment
|
|
1371 list without affecting your diary file. You delete entries from the
|
|
1372 appointment list with @kbd{M-x appt-delete}.
|
|
1373
|
|
1374 @vindex appt-issue-message
|
|
1375 You can turn off the appointment notification feature at any time by
|
|
1376 setting @code{appt-issue-message} to @code{nil}.
|
|
1377
|
|
1378 @node Daylight Savings
|
|
1379 @section Daylight Savings Time
|
|
1380 @cindex daylight savings time
|
|
1381
|
|
1382 Emacs understands the difference between standard time and daylight
|
|
1383 savings time---the times given for sunrise, sunset, solstices,
|
|
1384 equinoxes, and the phases of the moon take that into account. The rules
|
|
1385 for daylight savings time vary from place to place and have also varied
|
|
1386 historically from year to year. To do the job properly, Emacs needs to
|
|
1387 know which rules to use.
|
|
1388
|
|
1389 @vindex calendar-daylight-savings-starts
|
|
1390 @vindex calendar-daylight-savings-ends
|
|
1391 Some operating systems keep track of the rules that apply to the place
|
|
1392 where you are; on these systems, Emacs gets the information it needs
|
|
1393 from the system automatically. If some or all of this information is
|
|
1394 missing, Emacs fills in the gaps with the rules currently used in
|
|
1395 Cambridge, Massachusetts. If the resulting rules are not what you want,
|
|
1396 you can tell Emacs the rules to use by setting certain variables:
|
|
1397 @code{calendar-daylight-savings-starts} and
|
|
1398 @code{calendar-daylight-savings-ends}.
|
|
1399
|
|
1400 These values should be Lisp expressions that refer to the variable
|
|
1401 @code{year}, and evaluate to the Gregorian date on which daylight
|
|
1402 savings time starts or (respectively) ends, in the form of a list
|
|
1403 @code{(@var{month} @var{day} @var{year})}. The values should be
|
|
1404 @code{nil} if your area does not use daylight savings time.
|
|
1405
|
|
1406 Emacs uses these expressions to determine the starting date of
|
|
1407 daylight savings time for the holiday list and for correcting times of
|
|
1408 day in the solar and lunar calculations.
|
|
1409
|
|
1410 The values for Cambridge, Massachusetts are as follows:
|
|
1411
|
|
1412 @example
|
|
1413 (calendar-nth-named-day 1 0 4 year)
|
|
1414 (calendar-nth-named-day -1 0 10 year)
|
|
1415 @end example
|
|
1416
|
|
1417 @noindent
|
|
1418 That is, the first 0th day (Sunday) of the fourth month (April) in
|
|
1419 the year specified by @code{year}, and the last Sunday of the tenth month
|
|
1420 (October) of that year. If daylight savings time were
|
|
1421 changed to start on October 1, you would set
|
|
1422 @code{calendar-daylight-savings-starts} to this:
|
|
1423
|
|
1424 @example
|
|
1425 (list 10 1 year)
|
|
1426 @end example
|
|
1427
|
|
1428 If there is no daylight savings time at your location, or if you want
|
|
1429 all times in standard time, set @code{calendar-daylight-savings-starts}
|
|
1430 and @code{calendar-daylight-savings-ends} to @code{nil}.
|
|
1431
|
|
1432 @vindex calendar-daylight-time-offset
|
|
1433 The variable @code{calendar-daylight-time-offset} specifies the
|
|
1434 difference between daylight savings time and standard time, measured in
|
|
1435 minutes. The value for Cambridge, Massachusetts is 60.
|
|
1436
|
|
1437 @c @vindex calendar-daylight-savings-starts-time too long!
|
|
1438 @vindex calendar-daylight-savings-ends-time
|
|
1439 The two variables @code{calendar-daylight-savings-starts-time} and
|
|
1440 @code{calendar-daylight-savings-ends-time} specify the number of minutes
|
|
1441 after midnight local time when the transition to and from daylight
|
|
1442 savings time should occur. For Cambridge, Massachusetts both variables'
|
|
1443 values are 120.
|
30794
|
1444
|
|
1445 @node Time Intervals
|
|
1446 @section Keeping Track of Time Intervals
|
|
1447 @cindex time intervals, keeping track of
|
|
1448 @cindex project, time spent working on
|
|
1449
|
|
1450 Emacs can help you keep track of time intervals. A typical scenario
|
|
1451 is to keep track of how much time you spend working on certain projects.
|
|
1452
|
|
1453 @findex timeclock-in
|
|
1454 @findex timeclock-out
|
|
1455 @findex timeclock-workday-remaining
|
|
1456 @findex timeclock-when-to-leave
|
|
1457 Use the @kbd{M-x timeclock-in} command when you start working on a
|
|
1458 project, and @kbd{M-x timeclock-out} command when you're done. Once
|
|
1459 you've collected some data, you can use @kbd{M-x
|
|
1460 timeclock-workday-remaining} to see how much time is left to work today
|
|
1461 (assuming a typical average of 8 hours a day), and @kbd{M-x
|
|
1462 timeclock-when-to-leave} which will calculate when you're free to go.
|
|
1463
|
|
1464 @vindex timeclock-modeline-display
|
|
1465 @findex timeclock-modeline-display
|
|
1466 If you want Emacs to display the amount of time ``left'' of your
|
|
1467 workday in the mode line, either customize the
|
|
1468 @code{timeclock-modeline-display} variable and set its value to
|
|
1469 @code{t}, or invoke the @kbd{M-x timeclock-modeline-display} command.
|
|
1470
|
|
1471 @vindex timeclock-ask-before-exiting
|
|
1472 Ending the current Emacs session might or might not mean that you stop
|
|
1473 working on the project. If you'd like Emacs to ask you about this, set
|
|
1474 the value of the variable @code{timeclock-ask-before-exiting} to
|
|
1475 @code{t} (via @kbd{M-x customize}). By default, only an explicit
|
|
1476 @kbd{M-x timeclock-out} tells Emacs you stopped working on a project.
|
|
1477
|
|
1478 @cindex @file{.timelog} file
|
|
1479 @vindex timeclock-file
|
|
1480 @findex timeclock-reread-log
|
|
1481 The timeclock functions work by accumulating the data on a file called
|
|
1482 @file{.timelog} in the user's home directory. (On MS-DOS, this file is
|
|
1483 called @file{_timelog}, since leading dots in file names are not
|
|
1484 allowed.) The name of this file can be changed by customizing the
|
|
1485 variable @code{timeclock-file}. If you edit this file manually, or if
|
|
1486 you change the value of any of timeclock's customizable variables, you
|
|
1487 should run the command @kbd{M-x timeclock-reread-log}. This will
|
|
1488 recompute any discrepancies in your average working time, and will make
|
|
1489 sure that the various display functions return the correct value.
|