Sync up with r21-2-44.
[chise/xemacs-chise.git-] / info / xemacs.info-15
index bb5eb2c..82aa3f6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,1146 +30,1217 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Diary Customizing,  Next: Hebrew/Islamic Entries,  Prev: Daylight Savings,  Up: Calendar Customization
-
-Customizing the Diary
-.....................
-
-   Ordinarily, the mode line of the diary buffer window indicates any
-holidays that fall on the date of the diary entries.  The process of
-checking for holidays can take several seconds, so including holiday
-information delays the display of the diary buffer noticeably.  If you'd
-prefer to have a faster display of the diary buffer but without the
-holiday information, set the variable `holidays-in-diary-buffer' to
-`nil'.
-
-   The variable `number-of-diary-entries' controls the number of days
-of diary entries to be displayed at one time.  It affects the initial
-display when `view-diary-entries-initially' is `t', as well as the
-command `M-x diary'.  For example, the default value is 1, which says
-to display only the current day's diary entries.  If the value is 2,
-both the current day's and the next day's entries are displayed.  The
-value can also be a vector of seven elements: for example, if the value
-is `[0 2 2 2 2 4 1]' then no diary entries appear on Sunday, the
-current date's and the next day's diary entries appear Monday through
-Thursday, Friday through Monday's entries appear on Friday, while on
-Saturday only that day's entries appear.
-
-   The variable `print-diary-entries-hook' is a normal hook run after
-preparation of a temporary buffer containing just the diary entries
-currently visible in the diary buffer.  (The other, irrelevant diary
-entries are really absent from the temporary buffer; in the diary
-buffer, they are merely hidden.)  The default value of this hook does
-the printing with the command `lpr-buffer'.  If you want to use a
-different command to do the printing, just change the value of this
-hook.  Other uses might include, for example, rearranging the lines into
-order by day and time.
-
-   You can customize the form of dates in your diary file, if neither
-the standard American nor European styles suits your needs, by setting
-the variable `diary-date-forms'.  This variable is a list of patterns
-for recognizing a date.  Each date pattern is a list whose elements may
-be regular expressions (*note Regexps::) or the symbols `month', `day',
-`year', `monthname', and `dayname'.  All these elements serve as
-patterns that match certain kinds of text in the diary file.  In order
-for the date pattern, as a whole, to match, all of its elements must
-match consecutively.
-
-   A regular expression in a date pattern matches in its usual fashion,
-using the standard syntax table altered so that `*' is a word
-constituent.
-
-   The symbols `month', `day', `year', `monthname', and `dayname' match
-the month number, day number, year number, month name, and day name of
-the date being considered.  The symbols that match numbers allow
-leading zeros; those that match names allow three-letter abbreviations
-and capitalization.  All the symbols can match `*'; since `*' in a
-diary entry means "any day", "any month", and so on, it should match
-regardless of the date being considered.
-
-   The default value of `diary-date-forms' in the American style is
-this:
-
-     ((month "/" day "[^/0-9]")
-      (month "/" day "/" year "[^0-9]")
-      (monthname " *" day "[^,0-9]")
-      (monthname " *" day ", *" year "[^0-9]")
-      (dayname "\\W"))
-
-Emacs matches of the diary entries with the date forms is done with the
-standard syntax table from Fundamental mode (*note Syntax Tables:
-(lispref)Syntax Tables.), but with the `*' changed so that it is a word
-constituent.
-
-   The date patterns in the list must be _mutually exclusive_ and must
-not match any portion of the diary entry itself, just the date and one
-character of whitespace.  If, to be mutually exclusive, the pattern
-must match a portion of the diary entry text--beyond the whitespace
-that ends the date--then the first element of the date pattern _must_
-be `backup'.  This causes the date recognizer to back up to the
-beginning of the current word of the diary entry, after finishing the
-match.  Even if you use `backup', the date pattern must absolutely not
-match more than a portion of the first word of the diary entry.  The
-default value of `diary-date-forms' in the European style is this list:
-
-     ((day "/" month "[^/0-9]")
-      (day "/" month "/" year "[^0-9]")
-      (backup day " *" monthname "\\W+\\<[^*0-9]")
-      (day " *" monthname " *" year "[^0-9]")
-      (dayname "\\W"))
-
-Notice the use of `backup' in the third pattern, because it needs to
-match part of a word beyond the date itself to distinguish it from the
-fourth pattern.
+File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
 
-\1f
-File: xemacs.info,  Node: Hebrew/Islamic Entries,  Next: Fancy Diary Display,  Prev: Diary Customizing,  Up: Calendar Customization
-
-Hebrew- and Islamic-Date Diary Entries
-......................................
-
-   Your diary file can have entries based on Hebrew or Islamic dates, as
-well as entries based on the world-standard Gregorian calendar.
-However, because recognition of such entries is time-consuming and most
-people don't use them, you must explicitly enable their use.  If you
-want the diary to recognize Hebrew-date diary entries, for example, you
-must do this:
-
-     (add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
-     (add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
-
-If you want Islamic-date entries, do this:
-
-     (add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries)
-     (add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
-
-   Hebrew- and Islamic-date diary entries have the same formats as
-Gregorian-date diary entries, except that `H' precedes a Hebrew date
-and `I' precedes an Islamic date.  Moreover, because the Hebrew and
-Islamic month names are not uniquely specified by the first three
-letters, you may not abbreviate them.  For example, a diary entry for
-the Hebrew date Heshvan 25 could look like this:
-
-     HHeshvan 25 Happy Hebrew birthday!
-
-and would appear in the diary for any date that corresponds to Heshvan
-25 on the Hebrew calendar.  And here is  Islamic-date diary entry  that
-matches Dhu al-Qada 25:
+Particular Dates
+................
 
-     IDhu al-Qada 25 Happy Islamic birthday!
+   Calendar mode provides commands for moving to a particular date
+specified in various ways.
 
-and would appear in the diary for any date that corresponds to Dhu
-al-Qada 25 on the Islamic calendar.
+`g d'
+     Move point to specified date (`calendar-goto-date').
 
-   As with Gregorian-date diary entries, Hebrew- and Islamic-date
-entries are nonmarking if they are preceded with an ampersand (`&').
+`o'
+     Center calendar around specified month (`calendar-other-month').
 
-   Here is a table of commands used in the calendar to create diary
-entries that match the selected date and other dates that are similar
-in the Hebrew or Islamic calendar:
+`.'
+     Move point to today's date (`calendar-goto-today').
 
-`i h d'
-     Add a diary entry for the Hebrew date corresponding to the
-     selected date (`insert-hebrew-diary-entry').
+   `g d' (`calendar-goto-date') prompts for a year, a month, and a day
+of the month, and then moves to that date.  Because the calendar
+includes all dates from the beginning of the current era, you must type
+the year in its entirety; that is, type `1990', not `90'.
 
-`i h m'
-     Add a diary entry for the day of the Hebrew month corresponding to
-     the selected date (`insert-monthly-hebrew-diary-entry').  This
-     diary entry matches any date that has the same Hebrew
-     day-within-month as the selected date.
+   `o' (`calendar-other-month') prompts for a month and year, then
+centers the three-month calendar around that month.
 
-`i h y'
-     Add a diary entry for the day of the Hebrew year corresponding to
-     the selected date (`insert-yearly-hebrew-diary-entry').  This diary
-     entry matches any date which has the same Hebrew month and
-     day-within-month as the selected date.
+   You can return to today's date with `.' (`calendar-goto-today').
 
-`i i d'
-     Add a diary entry for the Islamic date corresponding to the
-     selected date (`insert-islamic-diary-entry').
-
-`i i m'
-     Add a diary entry for the day of the Islamic month corresponding
-     to the selected date (`insert-monthly-islamic-diary-entry').
-
-`i i y'
-     Add a diary entry for the day of the Islamic year corresponding to
-     the selected date (`insert-yearly-islamic-diary-entry').
+\1f
+File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
+
+Scrolling the Calendar through Time
+-----------------------------------
+
+   The calendar display scrolls automatically through time when you
+move out of the visible portion.  You can also scroll it manually.
+Imagine that the calendar window contains a long strip of paper with
+the months on it.  Scrolling it means moving the strip so that new
+months become visible in the window.
+
+`C-x <'
+     Scroll calendar one month forward (`scroll-calendar-left').
+
+`C-x >'
+     Scroll calendar one month backward (`scroll-calendar-right').
+
+`C-v'
+`<NEXT>'
+     Scroll calendar three months forward
+     (`scroll-calendar-left-three-months').
+
+`M-v'
+`<PRIOR>'
+     Scroll calendar three months backward
+     (`scroll-calendar-right-three-months').
+
+   The most basic calendar scroll commands scroll by one month at a
+time.  This means that there are two months of overlap between the
+display before the command and the display after.  `C-x <' scrolls the
+calendar contents one month to the left; that is, it moves the display
+forward in time.  `C-x >' scrolls the contents to the right, which
+moves backwards in time.
+
+   The commands `C-v' and `M-v' scroll the calendar by an entire
+"screenful"--three months--in analogy with the usual meaning of these
+commands.  `C-v' makes later dates visible and `M-v' makes earlier
+dates visible.  These commands take a numeric argument as a repeat
+count; in particular, since `C-u' multiplies the next command by four,
+typing `C-u C-v' scrolls the calendar forward by a year and typing `C-u
+M-v' scrolls the calendar backward by a year.
+
+   The function keys <NEXT> and <PRIOR> are equivalent to `C-v' and
+`M-v', just as they are in other modes.
 
-   These commands work much like the corresponding commands for ordinary
-diary entries: they apply to the date that point is on in the calendar
-window, and what they do is insert just the date portion of a diary
-entry at the end of your diary file.  You must then insert the rest of
-the diary entry.
+\1f
+File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
+
+The Mark and the Region
+-----------------------
+
+   The concept of the mark applies to the calendar just as to any other
+buffer, but it marks a _date_, not a _position_ in the buffer.  The
+region consists of the days between the mark and point (including the
+starting and stopping dates).
+
+`C-SPC'
+     Set the mark to today's date (`calendar-set-mark').
+
+`C-@'
+     The same.
+
+`C-x C-x'
+     Interchange mark and point (`calendar-exchange-point-and-mark').
+
+`M-='
+     Display the number of days in the current region
+     (`calendar-count-days-region').
+
+   You set the mark in the calendar, as in any other buffer, by using
+`C-@' or `C-SPC' (`calendar-set-mark').  You return to the marked date
+with the command `C-x C-x' (`calendar-exchange-point-and-mark') which
+puts the mark where point was and point where mark was.  The calendar
+is scrolled as necessary, if the marked date was not visible on the
+screen.  This does not change the extent of the region.
+
+   To determine the number of days in the region, type `M-='
+(`calendar-count-days-region').  The numbers of days printed is
+_inclusive_; that is, it includes the days specified by mark and point.
+
+   The main use of the mark in the calendar is to remember dates that
+you may want to go back to.  To make this feature more useful, the mark
+ring (*note Mark Ring::) operates exactly as in other buffers:  Emacs
+remembers 16 previous locations of the mark.  To return to a marked
+date, type `C-u C-SPC' (or `C-u C-@'); this is the command
+`calendar-set-mark' given a numeric argument.  It moves point to where
+the mark was, restores the mark from the ring of former marks, and
+stores the previous point at the end of the mark ring.  So, repeated
+use of this command moves point through all the old marks on the ring,
+one by one.
 
 \1f
-File: xemacs.info,  Node: Fancy Diary Display,  Next: Included Diary Files,  Prev: Hebrew/Islamic Entries,  Up: Calendar Customization
+File: xemacs.info,  Node: General Calendar,  Next: LaTeX Calendar,  Prev: Mark and Region,  Up: Calendar/Diary
 
-Fancy Diary Display
-...................
+Miscellaneous Calendar Commands
+-------------------------------
 
-   Diary display works by preparing the diary buffer and then running
-the hook `diary-display-hook'.  The default value of this hook
-(`simple-diary-display') hides the irrelevant diary entries and then
-displays the buffer.  However, if you specify the hook as follows,
+`p d'
+     Display day-in-year (`calendar-print-day-of-year').
 
-     (add-hook 'diary-display-hook 'fancy-diary-display)
+`?'
+     Briefly describe calendar commands (`describe-calendar-mode').
 
-this enables fancy diary display.  It displays diary entries and
-holidays by copying them into a special buffer that exists only for the
-sake of display.  Copying to a separate buffer provides an opportunity
-to change the displayed text to make it prettier--for example, to sort
-the entries by the dates they apply to.
+`C-c C-l'
+     Regenerate the calendar window (`redraw-calendar').
 
-   As with simple diary display, you can print a hard copy of the buffer
-with `print-diary-entries'.  To print a hard copy of a day-by-day diary
-for a week by positioning point on Sunday of that week, type `7 d' and
-then do `M-x print-diary-entries'.  As usual, the inclusion of the
-holidays slows down the display slightly; you can speed things up by
-setting the variable `holidays-in-diary-buffer' to `nil'.
+`SPC'
+     Scroll the next window (`scroll-other-window').
 
-   Ordinarily, the fancy diary buffer does not show days for which
-there are no diary entries, even if that day is a holiday.  If you want
-such days to be shown in the fancy diary buffer, set the variable
-`diary-list-include-blanks' to `t'.
+`q'
+     Exit from calendar (`exit-calendar').
 
-   If you use the fancy diary display, you can use the normal hook
-`list-diary-entries-hook' to sort each day's diary entries by their
-time of day.  Add this line to your `.emacs' file:
+   If you want to know how many days have elapsed since the start of
+the year, or the number of days remaining in the year, type the `p d'
+command (`calendar-print-day-of-year').  This displays both of those
+numbers in the echo area.
 
-     (add-hook 'list-diary-entries-hook 'sort-diary-entries t)
+   To display a brief description of the calendar commands, type `?'
+(`describe-calendar-mode').  For a fuller description, type `C-h m'.
 
-For each day, this sorts diary entries that begin with a recognizable
-time of day according to their times.  Diary entries without times come
-first within each day.
+   You can use `SPC' (`scroll-other-window') to scroll the other
+window.  This is handy when you display a list of holidays or diary
+entries in another window.
 
-\1f
-File: xemacs.info,  Node: Included Diary Files,  Next: Sexp Diary Entries,  Prev: Fancy Diary Display,  Up: Calendar Customization
+   If the calendar window text gets corrupted, type `C-c C-l'
+(`redraw-calendar') to redraw it.  (This can only happen if you use
+non-Calendar-mode editing commands.)
 
-Included Diary Files
-....................
+   In Calendar mode, you can use `SPC' (`scroll-other-window') to
+scroll the other window.  This is handy when you display a list of
+holidays or diary entries in another window.
 
-   Fancy diary display also has the ability to process included diary
-files.  This permits a group of people to share a diary file for events
-that apply to all of them.  Lines in the diary file of this form:
+   To exit from the calendar, type `q' (`exit-calendar').  This buries
+all buffers related to the calendar, selecting other buffers.  (If a
+frame contains a dedicated calendar window, exiting from the calendar
+iconifies that frame.)
 
-     #include "FILENAME"
+\1f
+File: xemacs.info,  Node: LaTeX Calendar,  Next: Holidays,  Prev: General Calendar,  Up: Calendar/Diary
 
-includes the diary entries from the file FILENAME in the fancy diary
-buffer.  The include mechanism is recursive, so that included files can
-include other files, and so on; you must be careful not to have a cycle
-of inclusions, of course.  Here is how to enable the include facility:
+LaTeX Calendar
+==============
 
-     (add-hook 'list-diary-entries-hook 'include-other-diary-files)
-     (add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
+   The Calendar LaTeX commands produce a buffer of LaTeX code that
+prints as a calendar.  Depending on the command you use, the printed
+calendar covers the day, week, month or year that point is in.
 
-   The include mechanism works only with the fancy diary display,
-because ordinary diary display shows the entries directly from your
-diary file.
+`t m'
+     Generate a one-month calendar (`cal-tex-cursor-month').
 
-\1f
-File: xemacs.info,  Node: Sexp Diary Entries,  Next: Appt Customizing,  Prev: Included Diary Files,  Up: Calendar Customization
+`t M'
+     Generate a sideways-printing one-month calendar
+     (`cal-tex-cursor-month-landscape').
 
-Sexp Entries and the Fancy Diary Display
-........................................
+`t d'
+     Generate a one-day calendar (`cal-tex-cursor-day').
 
-   Sexp diary entries allow you to do more than just have complicated
-conditions under which a diary entry applies.  If you use the fancy
-diary display, sexp entries can generate the text of the entry depending
-on the date itself.  For example, an anniversary diary entry can insert
-the number of years since the anniversary date into the text of the
-diary entry.  Thus the `%d' in this dairy entry:
+`t w 1'
+     Generate a one-page calendar for one week (`cal-tex-cursor-week').
 
-     %%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
+`t w 2'
+     Generate a two-page calendar for one week (`cal-tex-cursor-week2').
 
-gets replaced by the age, so on October 31, 1990 the entry appears in
-the fancy diary buffer like this:
+`t w 3'
+     Generate an ISO-style calendar for one week
+     (`cal-tex-cursor-week-iso').
 
-     Arthur's birthday (42 years old)
+`t w 4'
+     Generate a calendar for one Monday-starting week
+     (`cal-tex-cursor-week-monday').
 
-If the diary file instead contains this entry:
+`t f w'
+     Generate a Filofax-style two-weeks-at-a-glance calendar
+     (`cal-tex-cursor-filofax-2week').
 
-     %%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
+`t f W'
+     Generate a Filofax-style one-week-at-a-glance calendar
+     (`cal-tex-cursor-filofax-week').
 
-the entry in the fancy diary buffer for October 31, 1990 appears like
-this:
+`t y'
+     Generate a calendar for one year (`cal-tex-cursor-year').
 
-     Arthur's 42nd birthday
+`t Y'
+     Generate a sideways-printing calendar for one year
+     (`cal-tex-cursor-year-landscape').
 
-   Similarly, cyclic diary entries can interpolate the number of
-repetitions that have occurred:
+`t f y'
+     Generate a Filofax-style calendar for one year
+     (`cal-tex-cursor-filofax-year').
 
-     %%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
+   Some of these commands print the calendar sideways (in "landscape
+mode"), so it can be wider than it is long.  Some of them use Filofax
+paper size (3.75in x 6.75in).  All of these commands accept a prefix
+argument which specifies how many days, weeks, months or years to print
+(starting always with the selected one).
 
-looks like this:
+   If the variable `cal-tex-holidays' is non-`nil' (the default), then
+the printed calendars show the holidays in `calendar-holidays'.  If the
+variable `cal-tex-diary' is non-`nil' (the default is `nil'), diary
+entries are included also (in weekly and monthly calendars only).
 
-     Renew medication (5th time)
+\1f
+File: xemacs.info,  Node: Holidays,  Next: Sunrise/Sunset,  Prev: LaTeX Calendar,  Up: Calendar/Diary
+
+Holidays
+--------
+
+   The Emacs calendar knows about all major and many minor holidays,
+and can display them.
+
+`h'
+     Display holidays for the selected date
+     (`calendar-cursor-holidays').
+
+`Button2 Holidays'
+     Display any holidays for the date you click on.
+
+`x'
+     Mark holidays in the calendar window (`mark-calendar-holidays').
+
+`u'
+     Unmark calendar window (`calendar-unmark').
+
+`a'
+     List all holidays for the displayed three months in another window
+     (`list-calendar-holidays').
+
+`M-x holidays'
+     List all holidays for three months around today's date in another
+     window.
+
+`M-x list-holidays'
+     List holidays in another window for a specified range of years.
+
+   To see if any holidays fall on a given date, position point on that
+date in the calendar window and use the `h' command.  Alternatively,
+click on that date with `Button2' and then choose `Holidays' from the
+menu that appears.  Either way, this displays the holidays for that
+date, in the echo area if they fit there, otherwise in a separate
+window.
+
+   To view the distribution of holidays for all the dates shown in the
+calendar, use the `x' command.  This displays the dates that are
+holidays in a different face (or places a `*' after these dates, if
+display with multiple faces is not available). The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type `u', which also erases any diary marks (*note Diary::).
+
+   To get even more detailed information, use the `a' command, which
+displays a separate buffer containing a list of all holidays in the
+current three-month range.  You can use <SPC> in the calendar window to
+scroll that list.
+
+   The command `M-x holidays' displays the list of holidays for the
+current month and the preceding and succeeding months; this works even
+if you don't have a calendar window.  If you want the list of holidays
+centered around a different month, use `C-u M-x holidays', which
+prompts for the month and year.
+
+   The holidays known to Emacs include United States holidays and the
+major Christian, Jewish, and Islamic holidays; also the solstices and
+equinoxes.
+
+   The command `M-x list-holidays' displays the list of holidays for a
+range of years.  This function asks you for the starting and stopping
+years, and allows you to choose all the holidays or one of several
+categories of holidays.  You can use this command even if you don't have
+a calendar window.
+
+   The dates used by Emacs for holidays are based on _current
+practice_, not historical fact.  Historically, for instance, the start
+of daylight savings time and even its existence have varied from year to
+year, but present United States law mandates that daylight savings time
+begins on the first Sunday in April.  When the daylight savings rules
+are set up for the United States, Emacs always uses the present
+definition, even though it is wrong for some prior years.
 
-in the fancy diary display on September 8, 1990.
+\1f
+File: xemacs.info,  Node: Sunrise/Sunset,  Next: Lunar Phases,  Prev: Holidays,  Up: Calendar/Diary
+
+Times of Sunrise and Sunset
+---------------------------
+
+   Special calendar commands can tell you, to within a minute or two,
+the times of sunrise and sunset for any date.
+
+`S'
+     Display times of sunrise and sunset for the selected date
+     (`calendar-sunrise-sunset').
+
+`Button2 Sunrise/Sunset'
+     Display times of sunrise and sunset for the date you click on.
+
+`M-x sunrise-sunset'
+     Display times of sunrise and sunset for today's date.
+
+`C-u M-x sunrise-sunset'
+     Display times of sunrise and sunset for a specified date.
+
+   Within the calendar, to display the _local times_ of sunrise and
+sunset in the echo area, move point to the date you want, and type `S'.
+Alternatively, click `Button2' on the date, then choose
+`Sunrise/Sunset' from the menu that appears.  The command `M-x
+sunrise-sunset' is available outside the calendar to display this
+information for today's date or a specified date.  To specify a date
+other than today, use `C-u M-x sunrise-sunset', which prompts for the
+year, month, and day.
+
+   You can display the times of sunrise and sunset for any location and
+any date with `C-u C-u M-x sunrise-sunset'.  This asks you for a
+longitude, latitude, number of minutes difference from Coordinated
+Universal Time, and date, and then tells you the times of sunrise and
+sunset for that location on that date.
+
+   Because the times of sunrise and sunset depend on the location on
+earth, you need to tell Emacs your latitude, longitude, and location
+name before using these commands.  Here is an example of what to set:
+
+     (setq calendar-latitude 40.1)
+     (setq calendar-longitude -88.2)
+     (setq calendar-location-name "Urbana, IL")
+
+Use one decimal place in the values of `calendar-latitude' and
+`calendar-longitude'.
+
+   Your time zone also affects the local time of sunrise and sunset.
+Emacs usually gets time zone information from the operating system, but
+if these values are not what you want (or if the operating system does
+not supply them), you must set them yourself.  Here is an example:
+
+     (setq calendar-time-zone -360)
+     (setq calendar-standard-time-zone-name "CST")
+     (setq calendar-daylight-time-zone-name "CDT")
+
+The value of `calendar-time-zone' is the number of minutes difference
+between your local standard time and Coordinated Universal Time
+(Greenwich time).  The values of `calendar-standard-time-zone-name' and
+`calendar-daylight-time-zone-name' are the abbreviations used in your
+time zone.  Emacs displays the times of sunrise and sunset _corrected
+for daylight savings time_.  *Note Daylight Savings::, for how daylight
+savings time is determined.
+
+   As a user, you might find it convenient to set the calendar location
+variables for your usual physical location in your init file.  And when
+you install Emacs on a machine, you can create a `default.el' file
+which sets them properly for the typical location of most users of that
+machine.  *Note Init File::.
 
-   The generality of sexp diary entries lets you specify any diary entry
-that you can describe algorithmically.  A sexp diary entry contains an
-expression that computes whether the entry applies to any given date.
-If its value is non-`nil', the entry applies to that date; otherwise,
-it does not.  The expression can use the variable  `date' to find the
-date being considered; its value is a list (MONTH DAY YEAR) that refers
-to the Gregorian calendar.
+\1f
+File: xemacs.info,  Node: Lunar Phases,  Next: Other Calendars,  Prev: Sunrise/Sunset,  Up: Calendar/Diary
 
-   Suppose you get paid on the 21st of the month if it is a weekday, and
-on the Friday before if the 21st is on a weekend.  Here is how to write
-a sexp diary entry that matches those dates:
+Phases of the Moon
+------------------
 
-     &%%(let ((dayname (calendar-day-of-week date))
-              (day (car (cdr date))))
-           (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
-               (and (memq day '(19 20)) (= dayname 5)))
-              ) Pay check deposited
+   These calendar commands display the dates and times of the phases of
+the moon (new moon, first quarter, full moon, last quarter).  This
+feature is useful for debugging problems that "depend on the phase of
+the moon."
 
-applies to just those dates.  This example illustrates how the sexp can
-depend on the variable `date'; this variable is a list (MONTH DAY YEAR)
-that gives the Gregorian date for which the diary entries are being
-found.  If the value of the expression is `t', the entry applies to
-that date.  If the expression evaluates to `nil', the entry does _not_
-apply to that date.
+`M'
+     Display the dates and times for all the quarters of the moon for
+     the three-month period shown (`calendar-phases-of-moon').
 
-   The following sexp diary entries take advantage of the ability (in
-the fancy diary display) to concoct diary entries whose text varies
-based on the date:
+`M-x phases-of-moon'
+     Display dates and times of the quarters of the moon for three
+     months around today's date.
 
-`%%(diary-sunrise-sunset)'
-     Make a diary entry for the local times of today's sunrise and
-     sunset.
+   Within the calendar, use the `M' command to display a separate
+buffer of the phases of the moon for the current three-month range.  The
+dates and times listed are accurate to within a few minutes.
 
-`%%(diary-phases-of-moon)'
-     Make a diary entry for the phases (quarters) of the moon.
+   Outside the calendar, use the command `M-x phases-of-moon' to
+display the list of the phases of the moon for the current month and the
+preceding and succeeding months.  For information about a different
+month, use `C-u M-x phases-of-moon', which prompts for the month and
+year.
 
-`%%(diary-day-of-year)'
-     Make a diary entry with today's day number in the current year and
-     the number of days remaining in the current year.
+   The dates and times given for the phases of the moon are given in
+local time (corrected for daylight savings, when appropriate); but if
+the variable `calendar-time-zone' is void, Coordinated Universal Time
+(the Greenwich time zone) is used.  *Note Daylight Savings::.
 
-`%%(diary-iso-date)'
-     Make a diary entry with today's equivalent ISO commercial date.
+\1f
+File: xemacs.info,  Node: Other Calendars,  Next: Calendar Systems,  Prev: Lunar Phases,  Up: Calendar/Diary
 
-`%%(diary-julian-date)'
-     Make a diary entry with today's equivalent date on the Julian
-     calendar.
+Conversion To and From Other Calendars
+--------------------------------------
 
-`%%(diary-astro-day-number)'
-     Make a diary entry with today's equivalent astronomical (Julian)
-     day number.
+   The Emacs calendar displayed is _always_ the Gregorian calendar,
+sometimes called the "new style" calendar, which is used in most of the
+world today.  However, this calendar did not exist before the sixteenth
+century and was not widely used before the eighteenth century; it did
+not fully displace the Julian calendar and gain universal acceptance
+until the early twentieth century.  The Emacs calendar can display any
+month since January, year 1 of the current era, but the calendar
+displayed is the Gregorian, even for a date at which the Gregorian
+calendar did not exist.
 
-`%%(diary-hebrew-date)'
-     Make a diary entry with today's equivalent date on the Hebrew
-     calendar.
+   While Emacs cannot display other calendars, it can convert dates to
+and from several other calendars.
 
-`%%(diary-islamic-date)'
-     Make a diary entry with today's equivalent date on the Islamic
-     calendar.
+* Menu:
 
-`%%(diary-french-date)'
-     Make a diary entry with today's equivalent date on the French
-     Revolutionary calendar.
+* Calendar Systems::      The calendars Emacs understands
+                            (aside from Gregorian).
+* To Other Calendar::     Converting the selected date to various calendars.
+* From Other Calendar::   Moving to a date specified in another calendar.
+* Mayan Calendar::        Moving to a date specified in a Mayan calendar.
 
-`%%(diary-mayan-date)'
-     Make a diary entry with today's equivalent date on the Mayan
-     calendar.
+   If you are interested in these calendars, you can convert dates one
+at a time.  Put point on the desired date of the Gregorian calendar and
+press the appropriate keys.  The `p' is a mnemonic for "print" since
+Emacs "prints' the equivalent date in the echo area.
 
-Thus including the diary entry
+\1f
+File: xemacs.info,  Node: Calendar Systems,  Next: To Other Calendar,  Prev: Other Calendars,  Up: Other Calendars
+
+Supported Calendar Systems
+==========================
+
+   The ISO commercial calendar is used largely in Europe.
+
+   The Julian calendar, named after Julius Caesar, was the one used in
+Europe throughout medieval times, and in many countries up until the
+nineteenth century.
+
+   Astronomers use a simple counting of days elapsed since noon, Monday,
+January 1, 4713 B.C. on the Julian calendar.  The number of days elapsed
+is called the _Julian day number_ or the _Astronomical day number_.
+
+   The Hebrew calendar is used by tradition in the Jewish religion.  The
+Emacs calendar program uses the Hebrew calendar to determine the dates
+of Jewish holidays.  Hebrew calendar dates begin and end at sunset.
+
+   The Islamic calendar is used in many predominantly Islamic countries.
+Emacs uses it to determine the dates of Islamic holidays.  There is no
+universal agreement in the Islamic world about the calendar; Emacs uses
+a widely accepted version, but the precise dates of Islamic holidays
+often depend on proclamation by religious authorities, not on
+calculations.  As a consequence, the actual dates of observance can vary
+slightly from the dates computed by Emacs.  Islamic calendar dates begin
+and end at sunset.
+
+   The French Revolutionary calendar was created by the Jacobins after
+the 1789 revolution, to represent a more secular and nature-based view
+of the annual cycle, and to install a 10-day week in a rationalization
+measure similar to the metric system.  The French government officially
+abandoned this calendar at the end of 1805.
+
+   The Maya of Central America used three separate, overlapping calendar
+systems, the _long count_, the _tzolkin_, and the _haab_.  Emacs knows
+about all three of these calendars.  Experts dispute the exact
+correlation between the Mayan calendar and our calendar; Emacs uses the
+Goodman-Martinez-Thompson correlation in its calculations.
+
+   The Copts use a calendar based on the ancient Egyptian solar
+calendar.  Their calendar consists of twelve 30-day months followed by
+an extra five-day period.  Once every fourth year they add a leap day
+to this extra period to make it six days.  The Ethiopic calendar is
+identical in structure, but has different year numbers and month names.
+
+   The Persians use a solar calendar based on a design of Omar Khayyam.
+Their calendar consists of twelve months of which the first six have 31
+days, the next five have 30 days, and the last has 29 in ordinary years
+and 30 in leap years.  Leap years occur in a complicated pattern every
+four or five years.
+
+   The Chinese calendar is a complicated system of lunar months arranged
+into solar years.  The years go in cycles of sixty, each year containing
+either twelve months in an ordinary year or thirteen months in a leap
+year; each month has either 29 or 30 days.  Years, ordinary months, and
+days are named by combining one of ten "celestial stems" with one of
+twelve "terrestrial branches" for a total of sixty names that are
+repeated in a cycle of sixty.
 
-     &%%(diary-hebrew-date)
+\1f
+File: xemacs.info,  Node: To Other Calendar,  Next: From Other Calendar,  Prev: Calendar Systems,  Up: Other Calendars
 
-causes every day's diary display to contain the equivalent date on the
-Hebrew calendar, if you are using the fancy diary display.  (With simple
-diary display, the line `&%%(diary-hebrew-date)' appears in the diary
-for any date, but does nothing particularly useful.)
+Converting To Other Calendars
+=============================
 
-   These functions can be used to construct sexp diary entries based on
-the Hebrew calendar in certain standard ways:
+   The following commands describe the selected date (the date at point)
+in various other calendar systems:
 
-`%%(diary-rosh-hodesh)'
-     Make a diary entry that tells the occurrence and ritual
-     announcement of each new Hebrew month.
+`Button2  Other Calendars'
+     Display the date that you click on, expressed in various other
+     calendars.
 
-`%%(diary-parasha)'
-     Make a Saturday diary entry that tells the weekly synagogue
-     scripture reading.
+`p c'
+     Display ISO commercial calendar equivalent for selected day
+     (`calendar-print-iso-date').
 
-`%%(diary-sabbath-candles)'
-     Make a Friday diary entry that tells the _local time_ of Sabbath
-     candle lighting.
+`p j'
+     Display Julian date for selected day
+     (`calendar-print-julian-date').
 
-`%%(diary-omer)'
-     Make a diary entry that gives the omer count, when appropriate.
+`p a'
+     Display astronomical (Julian) day number for selected day
+     (`calendar-print-astro-day-number').
 
-`%%(diary-yahrzeit MONTH DAY YEAR) NAME'
-     Make a diary entry marking the anniversary of a date of death.
-     The date is the _Gregorian_ (civil) date of death.  The diary
-     entry appears on the proper Hebrew calendar anniversary and on the
-     day before.  (In the European style, the order of the parameters
-     is changed to DAY, MONTH, YEAR.)
+`p h'
+     Display Hebrew date for selected day
+     (`calendar-print-hebrew-date').
 
-\1f
-File: xemacs.info,  Node: Appt Customizing,  Prev: Sexp Diary Entries,  Up: Calendar Customization
+`p i'
+     Display Islamic date for selected day
+     (`calendar-print-islamic-date').
 
-Customizing Appointment Reminders
-.................................
+`p f'
+     Display French Revolutionary date for selected day
+     (`calendar-print-french-date').
 
-   You can specify exactly how Emacs reminds you of an appointment, and
-how far in advance it begins doing so, by setting these variables:
+`p C'
+     Display Chinese date for selected day
+     (`calendar-print-chinese-date').
 
-`appt-message-warning-time'
-     The time in minutes before an appointment that the reminder
-     begins.  The default is 10 minutes.
+`p k'
+     Display Coptic date for selected day
+     (`calendar-print-coptic-date').
 
-`appt-audible'
-     If this is `t' (the default), Emacs rings the terminal bell for
-     appointment reminders.
+`p e'
+     Display Ethiopic date for selected day
+     (`calendar-print-ethiopic-date').
 
-`appt-visible'
-     If this is `t' (the default), Emacs displays the appointment
-     message in echo area.
+`p p'
+     Display Persian date for selected day
+     (`calendar-print-persian-date').
 
-`appt-display-mode-line'
-     If this is `t' (the default), Emacs displays the number of minutes
-     to the appointment on the mode line.
+`p m'
+     Display Mayan date for selected day (`calendar-print-mayan-date').
 
-`appt-msg-window'
-     If this is `t' (the default), Emacs displays the appointment
-     message in another window.
+   If you are using X, the easiest way to translate a date into other
+calendars is to click on it with `Button2', then choose `Other
+Calendars' from the menu that appears.  This displays the equivalent
+forms of the date in all the calendars Emacs understands, in the form of
+a menu.  (Choosing an alternative from this menu doesn't actually do
+anything--the menu is used only for display.)
 
-`appt-display-duration'
-     The number of seconds an appointment message is displayed.  The
-     default is 5 seconds.
+   Put point on the desired date of the Gregorian calendar, then type
+the appropriate keys.  The `p' is a mnemonic for "print" since Emacs
+"prints" the equivalent date in the echo area.
 
 \1f
-File: xemacs.info,  Node: Sorting,  Next: Shell,  Prev: Calendar/Diary,  Up: Top
-
-Sorting Text
-============
-
-   XEmacs provides several commands for sorting text in a buffer.  All
-operate on the contents of the region (the text between point and the
-mark).  They divide the text of the region into many "sort records",
-identify a "sort key" for each record, and then reorder the records
-using the order determined by the sort keys.  The records are ordered so
-that their keys are in alphabetical order, or, for numerical sorting, in
-numerical order.  In alphabetical sorting, all upper-case letters `A'
-through `Z' come before lower-case `a', in accordance with the ASCII
-character sequence.
-
-   The sort commands differ in how they divide the text into sort
-records and in which part of each record they use as the sort key.
-Most of the commands make each line a separate sort record, but some
-commands use paragraphs or pages as sort records.  Most of the sort
-commands use each entire sort record as its own sort key, but some use
-only a portion of the record as the sort key.
-
-`M-x sort-lines'
-     Divide the region into lines and sort by comparing the entire text
-     of a line.  A prefix argument means sort in descending order.
-
-`M-x sort-paragraphs'
-     Divide the region into paragraphs and sort by comparing the entire
-     text of a paragraph (except for leading blank lines).  A prefix
-     argument means sort in descending order.
-
-`M-x sort-pages'
-     Divide the region into pages and sort by comparing the entire text
-     of a page (except for leading blank lines).  A prefix argument
-     means sort in descending order.
-
-`M-x sort-fields'
-     Divide the region into lines and sort by comparing the contents of
-     one field in each line.  Fields are defined as separated by
-     whitespace, so the first run of consecutive non-whitespace
-     characters in a line constitutes field 1, the second such run
-     constitutes field 2, etc.
-
-     You specify which field to sort by with a numeric argument: 1 to
-     sort by field 1, etc.  A negative argument means sort in descending
-     order.  Thus, minus 2 means sort by field 2 in reverse-alphabetical
-     order.
-
-`M-x sort-numeric-fields'
-     Like `M-x sort-fields', except the specified field is converted to
-     a number for each line and the numbers are compared.  `10' comes
-     before `2' when considered as text, but after it when considered
-     as a number.
-
-`M-x sort-columns'
-     Like `M-x sort-fields', except that the text within each line used
-     for comparison comes from a fixed range of columns.  An explanation
-     is given below.
-
-   For example, if the buffer contains:
-
-     On systems where clash detection (locking of files being edited) is
-     implemented, XEmacs also checks the first time you modify a buffer
-     whether the file has changed on disk since it was last visited or
-     saved.  If it has, you are asked to confirm that you want to change
-     the buffer.
-
-then if you apply `M-x sort-lines' to the entire buffer you get:
-
-     On systems where clash detection (locking of files being edited) is
-     implemented, XEmacs also checks the first time you modify a buffer
-     saved.  If it has, you are asked to confirm that you want to change
-     the buffer.
-     whether the file has changed on disk since it was last visited or
-
-where the upper case `O' comes before all lower case letters.  If you
-apply instead `C-u 2 M-x sort-fields' you get:
-
-     saved.  If it has, you are asked to confirm that you want to change
-     implemented, XEmacs also checks the first time you modify a buffer
-     the buffer.
-     On systems where clash detection (locking of files being edited) is
-     whether the file has changed on disk since it was last visited or
-
-where the sort keys were `If', `XEmacs', `buffer', `systems', and `the'.
-
-   `M-x sort-columns' requires more explanation.  You specify the
-columns by putting point at one of the columns and the mark at the other
-column.  Because this means you cannot put point or the mark at the
-beginning of the first line to sort, this command uses an unusual
-definition of `region': all of the line point is in is considered part
-of the region, and so is all of the line the mark is in.
-
-   For example, to sort a table by information found in columns 10 to
-15, you could put the mark on column 10 in the first line of the table,
-and point on column 15 in the last line of the table, and then use this
-command.  Or you could put the mark on column 15 in the first line and
-point on column 10 in the last line.
-
-   This can be thought of as sorting the rectangle specified by point
-and the mark, except that the text on each line to the left or right of
-the rectangle moves along with the text inside the rectangle.  *Note
-Rectangles::.
+File: xemacs.info,  Node: From Other Calendar,  Next: Mayan Calendar,  Prev: To Other Calendar,  Up: Other Calendars
+
+Converting From Other Calendars
+===============================
+
+   You can use the other supported calendars to specify a date to move
+to.  This section describes the commands for doing this using calendars
+other than Mayan; for the Mayan calendar, see the following section.
+
+`g c'
+     Move to a date specified in the ISO commercial calendar
+     (`calendar-goto-iso-date').
+
+`g j'
+     Move to a date specified in the Julian calendar
+     (`calendar-goto-julian-date').
+
+`g a'
+     Move to a date specified in astronomical (Julian) day number
+     (`calendar-goto-astro-day-number').
+
+`g h'
+     Move to a date specified in the Hebrew calendar
+     (`calendar-goto-hebrew-date').
+
+`g i'
+     Move to a date specified in the Islamic calendar
+     (`calendar-goto-islamic-date').
+
+`g f'
+     Move to a date specified in the French Revolutionary calendar
+     (`calendar-goto-french-date').
+
+`g C'
+     Move to a date specified in the Chinese calendar
+     (`calendar-goto-chinese-date').
+
+`g p'
+     Move to a date specified in the Persian calendar
+     (`calendar-goto-persian-date').
+
+`g k'
+     Move to a date specified in the Coptic calendar
+     (`calendar-goto-coptic-date').
+
+`g e'
+     Move to a date specified in the Ethiopic calendar
+     (`calendar-goto-ethiopic-date').
+
+   These commands ask you for a date on the other calendar, move point
+to the Gregorian calendar date equivalent to that date, and display the
+other calendar's date in the echo area.  Emacs uses strict completion
+(*note Completion::) whenever it asks you to type a month name, so you
+don't have to worry about the spelling of Hebrew, Islamic, or French
+names.
+
+   One common question concerning the Hebrew calendar is the computation
+of the anniversary of a date of death, called a "yahrzeit."  The Emacs
+calendar includes a facility for such calculations.  If you are in the
+calendar, the command `M-x list-yahrzeit-dates' asks you for a range of
+years and then displays a list of the yahrzeit dates for those years
+for the date given by point.  If you are not in the calendar, this
+command first asks you for the date of death and the range of years,
+and then displays the list of yahrzeit dates.
 
 \1f
-File: xemacs.info,  Node: Shell,  Next: Narrowing,  Prev: Sorting,  Up: Top
-
-Running Shell Commands from XEmacs
-==================================
-
-   XEmacs has commands for passing single command lines to inferior
-shell processes; it can also run a shell interactively with input and
-output to an XEmacs buffer `*shell*'.
+File: xemacs.info,  Node: Mayan Calendar,  Next: Diary,  Prev: From Other Calendar,  Up: Other Calendars
+
+Converting from the Mayan Calendar
+----------------------------------
+
+   Here are the commands to select dates based on the Mayan calendar:
+
+`g m l'
+     Move to a date specified by the long count calendar
+     (`calendar-goto-mayan-long-count-date').
+
+`g m n t'
+     Move to the next occurrence of a place in the tzolkin calendar
+     (`calendar-next-tzolkin-date').
+
+`g m p t'
+     Move to the previous occurrence of a place in the tzolkin calendar
+     (`calendar-previous-tzolkin-date').
+
+`g m n h'
+     Move to the next occurrence of a place in the haab calendar
+     (`calendar-next-haab-date').
+
+`g m p h'
+     Move to the previous occurrence of a place in the haab calendar
+     (`calendar-previous-haab-date').
+
+`g m n c'
+     Move to the next occurrence of a place in the calendar round
+     (`calendar-next-calendar-round-date').
+
+`g m p c'
+     Move to the previous occurrence of a place in the calendar round
+     (`calendar-previous-calendar-round-date').
+
+   To understand these commands, you need to understand the Mayan
+calendars.  The "long count" is a counting of days with these units:
+
+     1 kin = 1 day   1 uinal = 20 kin   1 tun = 18 uinal
+     1 katun = 20 tun   1 baktun = 20 katun
+
+Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
+tun, 16 uinal, and 6 kin.  The Emacs calendar can handle Mayan long
+count dates as early as 7.17.18.13.1, but no earlier.  When you use the
+`g m l' command, type the Mayan long count date with the baktun, katun,
+tun, uinal, and kin separated by periods.
+
+   The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
+independent cycles of 13 and 20 days.  Since this cycle repeats
+endlessly, Emacs provides commands to move backward and forward to the
+previous or next point in the cycle.  Type `g m p t' to go to the
+previous tzolkin date; Emacs asks you for a tzolkin date and moves point
+to the previous occurrence of that date.  Similarly, type `g m n t' to
+go to the next occurrence of a tzolkin date.
+
+   The Mayan haab calendar is a cycle of 365 days arranged as 18 months
+of 20 days each, followed a 5-day monthless period.  Like the tzolkin
+cycle, this cycle repeats endlessly, and there are commands to move
+backward and forward to the previous or next point in the cycle.  Type
+`g m p h' to go to the previous haab date; Emacs asks you for a haab
+date and moves point to the previous occurrence of that date.
+Similarly, type `g m n h' to go to the next occurrence of a haab date.
+
+   The Maya also used the combination of the tzolkin date and the haab
+date.  This combination is a cycle of about 52 years called a _calendar
+round_.  If you type `g m p c', Emacs asks you for both a haab and a
+tzolkin date and then moves point to the previous occurrence of that
+combination.  Use `g m n c' to move point to the next occurrence of a
+combination.  These commands signal an error if the haab/tzolkin date
+combination you have typed is impossible.
+
+   Emacs uses strict completion (*note Completion::) whenever it asks
+you to type a Mayan name, so you don't have to worry about spelling.
 
-`M-!'
-     Run a specified shell command line and display the output
-     (`shell-command').
-
-`M-|'
-     Run a specified shell command line with region contents as input;
-     optionally replace the region with the output
-     (`shell-command-on-region').
+\1f
+File: xemacs.info,  Node: Diary,  Next: Calendar Customization,  Prev: Mayan Calendar,  Up: Calendar/Diary
 
-`M-x shell'
-     Run a subshell with input and output through an XEmacs buffer.
-     You can then give commands interactively.
+The Diary
+---------
 
-`M-x term'
-     Run a subshell with input and output through an XEmacs buffer.
-     You can then give commands interactively.  Full terminal emulation
-     is available.
+   The Emacs diary keeps track of appointments or other events on a
+daily basis, in conjunction with the calendar.  To use the diary
+feature, you must first create a "diary file" containing a list of
+events and their dates.  Then Emacs can automatically pick out and
+display the events for today, for the immediate future, or for any
+specified date.
+
+   By default, Emacs uses `~/diary' as the diary file.  This is the
+same file that the `calendar' utility uses.  A sample `~/diary' file is:
+
+     12/22/1988 Twentieth wedding anniversary!!
+     &1/1. Happy New Year!
+     10/22 Ruth's birthday.
+     * 21, *: Payday
+     Tuesday--weekly meeting with grad students at 10am
+              Supowit, Shen, Bitner, and Kapoor to attend.
+     1/13/89 Friday the thirteenth!!
+     &thu 4pm squash game with Lloyd.
+     mar 16 Dad's birthday
+     April 15, 1989 Income tax due.
+     &* 15 time cards due.
+
+This example uses extra spaces to align the event descriptions of most
+of the entries.  Such formatting is purely a matter of taste.
+
+   Although you probably will start by creating a diary manually, Emacs
+provides a number of commands to let you view, add, and change diary
+entries.  You can also share diary entries with other users (*note
+Included Diary Files::).
 
 * Menu:
 
-* Single Shell::         How to run one shell command and return.
-* Interactive Shell::    Permanent shell taking input via XEmacs.
-* Shell Mode::           Special XEmacs commands used with permanent shell.
-* Terminal emulator::    An XEmacs window as a terminal emulator.
-* Term Mode::            Special XEmacs commands used in Term mode.
-* Paging in Term::       Paging in the terminal emulator.
+* Diary Commands::         Viewing diary entries and associated calendar dates.
+* Format of Diary File::   Entering events in your diary.
+* Date Formats::           Various ways you can specify dates.
+* Adding to Diary::        Commands to create diary entries.
+* Special Diary Entries::  Anniversaries, blocks of dates, cyclic entries, etc.
 
 \1f
-File: xemacs.info,  Node: Single Shell,  Next: Interactive Shell,  Prev: Shell,  Up: Shell
+File: xemacs.info,  Node: Diary Commands,  Next: Format of Diary File,  Prev: Diary,  Up: Diary
 
-Single Shell Commands
----------------------
+Commands Displaying Diary Entries
+---------------------------------
 
-   `M-!' (`shell-command') reads a line of text using the minibuffer
-and creates an inferior shell to execute the line as a command.
-Standard input from the command comes from the null device.  If the
-shell command produces any output, the output goes to an XEmacs buffer
-named `*Shell Command Output*', which is displayed in another window
-but not selected.  A numeric argument, as in `M-1 M-!', directs this
-command to insert any output into the current buffer.  In that case,
-point is left before the output and the mark is set after the output.
-
-   `M-|' (`shell-command-on-region') is like `M-!' but passes the
-contents of the region as input to the shell command, instead of no
-input.  If a numeric argument is used to direct  output to the current
-buffer, then the old region is deleted first and the output replaces it
-as the contents of the region.
-
-   Both `M-!' and `M-|' use `shell-file-name' to specify the shell to
-use.  This variable is initialized based on your `SHELL' environment
-variable when you start XEmacs.  If the file name does not specify a
-directory, the directories in the list `exec-path' are searched; this
-list is initialized based on the `PATH' environment variable when you
-start XEmacs.  You can override either or both of these default
-initializations in your `.emacs' file.
-
-   When you use `M-!' and `M-|', XEmacs has to wait until the shell
-command completes.  You can quit with `C-g'; that terminates the shell
-command.
+   Once you have created a `~/diary' file, you can use the calendar to
+view it.  You can also view today's events outside of Calendar mode.
 
-\1f
-File: xemacs.info,  Node: Interactive Shell,  Next: Shell Mode,  Prev: Single Shell,  Up: Shell
-
-Interactive Inferior Shell
---------------------------
-
-   To run a subshell interactively with its typescript in an XEmacs
-buffer, use `M-x shell'.  This creates (or reuses) a buffer named
-`*shell*' and runs a subshell with input coming from and output going
-to that buffer.  That is to say, any "terminal output" from the subshell
-will go into the buffer, advancing point, and any "terminal input" for
-the subshell comes from text in the buffer.  To give input to the
-subshell, go to the end of the buffer and type the input, terminated by
-<RET>.
-
-   XEmacs does not wait for the subshell to do anything.  You can switch
-windows or buffers and edit them while the shell is waiting, or while
-it is running a command.  Output from the subshell waits until XEmacs
-has time to process it; this happens whenever XEmacs is waiting for
-keyboard input or for time to elapse.
-
-   To get multiple subshells, change the name of buffer `*shell*' to
-something different by using `M-x rename-buffer'.  The next use of `M-x
-shell' creates a new buffer `*shell*' with its own subshell.  By
-renaming this buffer as well you can create a third one, and so on.
-All the subshells run independently and in parallel.
-
-   The file name used to load the subshell is the value of the variable
-`explicit-shell-file-name', if that is non-`nil'.  Otherwise, the
-environment variable `ESHELL' is used, or the environment variable
-`SHELL' if there is no `ESHELL'.  If the file name specified is
-relative, the directories in the list `exec-path' are searched (*note
-Single Shell Commands: Single Shell.).
-
-   As soon as the subshell is started, it is sent as input the contents
-of the file `~/.emacs_SHELLNAME', if that file exists, where SHELLNAME
-is the name of the file that the shell was loaded from.  For example,
-if you use `csh', the file sent to it is `~/.emacs_csh'.
-
-   `cd', `pushd', and `popd' commands given to the inferior shell are
-watched by XEmacs so it can keep the `*shell*' buffer's default
-directory the same as the shell's working directory.  These commands
-are recognized syntactically by examining lines of input that are sent.
-If you use aliases for these commands, you can tell XEmacs to
-recognize them also.  For example, if the value of the variable
-`shell-pushd-regexp' matches the beginning of a shell command line,
-that line is regarded as a `pushd' command.  Change this variable when
-you add aliases for `pushd'.  Likewise, `shell-popd-regexp' and
-`shell-cd-regexp' are used to recognize commands with the meaning of
-`popd' and `cd'.
-
-   `M-x shell-resync-dirs' queries the shell and resynchronizes XEmacs'
-idea of what the current directory stack is.  `M-x
-shell-dirtrack-toggle' turns directory tracking on and off.
-
-   XEmacs keeps a history of the most recent commands you have typed in
-the `*shell*' buffer.  If you are at the beginning of a shell command
-line and type <M-p>, the previous shell input is inserted into the
-buffer before point.  Immediately typing <M-p> again deletes that input
-and inserts the one before it.  By repeating <M-p> you can move
-backward through your commands until you find one you want to repeat.
-You may then edit the command before typing <RET> if you wish. <M-n>
-moves forward through the command history, in case you moved backward
-past the one you wanted while using <M-p>.  If you type the first few
-characters of a previous command and then type <M-p>, the most recent
-shell input starting with those characters is inserted.  This can be
-very convenient when you are repeating a sequence of shell commands.
-The variable `input-ring-size' controls how many commands are saved in
-your input history.  The default is 30.
+`d'
+     Display all diary entries for the selected date
+     (`view-diary-entries').
 
-\1f
-File: xemacs.info,  Node: Shell Mode,  Next: Terminal emulator,  Prev: Interactive Shell,  Up: Shell
-
-Shell Mode
-----------
-
-   The shell buffer uses Shell mode, which defines several special keys
-attached to the `C-c' prefix.  They are chosen to resemble the usual
-editing and job control characters present in shells that are not under
-XEmacs, except that you must type `C-c' first.  Here is a list of the
-special key bindings of Shell mode:
-
-`<RET>'
-     At end of buffer send line as input; otherwise, copy current line
-     to end of buffer and send it (`send-shell-input').  When a line is
-     copied, any text at the beginning of the line that matches the
-     variable `shell-prompt-pattern' is left out; this variable's value
-     should be a regexp string that matches the prompts that you use in
-     your subshell.
-
-`C-c C-d'
-     Send end-of-file as input, probably causing the shell or its
-     current subjob to finish (`shell-send-eof').
-
-`C-d'
-     If point is not at the end of the buffer, delete the next
-     character just like most other modes.  If point is at the end of
-     the buffer, send end-of-file as input, instead of generating an
-     error as in other modes (`comint-delchar-or-maybe-eof').
-
-`C-c C-u'
-     Kill all text that has yet to be sent as input
-     (`kill-shell-input').
-
-`C-c C-w'
-     Kill a word before point (`backward-kill-word').
-
-`C-c C-c'
-     Interrupt the shell or its current subjob if any
-     (`interrupt-shell-subjob').
-
-`C-c C-z'
-     Stop the shell or its current subjob if any (`stop-shell-subjob').
-
-`C-c C-\'
-     Send quit signal to the shell or its current subjob if any
-     (`quit-shell-subjob').
-
-`C-c C-o'
-     Delete last batch of output from shell (`kill-output-from-shell').
-
-`C-c C-r'
-     Scroll top of last batch of output to top of window
-     (`show-output-from-shell').
-
-`C-c C-y'
-     Copy the previous bunch of shell input and insert it into the
-     buffer before point (`copy-last-shell-input').  No final newline
-     is inserted, and the input copied is not resubmitted until you type
-     <RET>.
-
-`M-p'
-     Move backward through the input history.  Search for a matching
-     command if you have typed the beginning of a command
-     (`comint-previous-input').
-
-`M-n'
-     Move forward through the input history.  Useful when you are using
-     <M-p> quickly and go past the desired command
-     (`comint-next-input').
-
-`<TAB>'
-     Complete the file name preceding point (`comint-dynamic-complete').
+`Button2 Diary'
+     Display all diary entries for the date you click on.
 
-\1f
-File: xemacs.info,  Node: Terminal emulator,  Next: Term Mode,  Prev: Shell Mode,  Up: Shell
-
-Interactive Inferior Shell with Terminal Emulator
--------------------------------------------------
-
-   To run a subshell in a terminal emulator, putting its typescript in
-an XEmacs buffer, use `M-x term'.  This creates (or reuses) a buffer
-named `*term*' and runs a subshell with input coming from your keyboard
-and output going to that buffer.
-
-   All the normal keys that you type are sent without any interpretation
-by XEmacs directly to the subshell, as "terminal input."  Any "echo" of
-your input is the responsibility of the subshell.  (The exception is
-the terminal escape character, which by default is `C-c'. *note Term
-Mode::.)  Any "terminal output" from the subshell goes into the buffer,
-advancing point.
-
-   Some programs (such as XEmacs itself) need to control the appearance
-on the terminal screen in detail.  They do this by sending special
-control codes.  The exact control codes needed vary from terminal to
-terminal, but nowadays most terminals and terminal emulators (including
-xterm) understand the so-called "ANSI escape sequences" (first
-popularized by the Digital's VT100 family of terminal).  The term mode
-also understands these escape sequences, and for each control code does
-the appropriate thing to change the buffer so that the appearance of
-the window will match what it would be on a real terminal.  Thus you
-can actually run XEmacs inside an XEmacs Term window!
-
-   XEmacs does not wait for the subshell to do anything.  You can switch
-windows or buffers and edit them while the shell is waiting, or while
-it is running a command.  Output from the subshell waits until XEmacs
-has time to process it; this happens whenever XEmacs is waiting for
-keyboard input or for time to elapse.
-
-   To make multiple terminal emulators, rename the buffer `*term*' to
-something different using `M-x rename-uniquely', just as with Shell
-mode.
-
-   The file name used to load the subshell is determined the same way
-as for Shell mode.
-
-   Unlike Shell mode, Term mode does not track the current directory by
-examining your input.  Instead, if you use a programmable shell, you
-can have it tell Term what the current directory is.  This is done
-automatically by bash for version 1.15 and later.
+`s'
+     Display the entire diary file (`show-all-diary-entries').
 
-\1f
-File: xemacs.info,  Node: Term Mode,  Next: Paging in Term,  Prev: Terminal emulator,  Up: Shell
+`m'
+     Mark all visible dates that have diary entries
+     (`mark-diary-entries').
 
-Term Mode
----------
+`u'
+     Unmark the calendar window (`calendar-unmark').
 
-   Term uses Term mode, which has two input modes: In line mode, Term
-basically acts like Shell mode.  *Note Shell Mode::.  In Char mode,
-each character is sent directly to the inferior subshell, except for
-the Term escape character, normally `C-c'.
+`M-x print-diary-entries'
+     Print hard copy of the diary display as it appears.
 
-   To switch between line and char mode, use these commands:
-     findex term-char-mode
+`M-x diary'
+     Display all diary entries for today's date.
 
-`C-c C-k'
-     Switch to line mode.  Do nothing if already in line mode.
+`M-x diary-mail-entries'
+     Mail yourself email reminders about upcoming diary entries.
 
-`C-c C-j'
-     Switch to char mode.  Do nothing if already in char mode.
+   Displaying the diary entries with `d' shows in a separate window the
+diary entries for the selected date in the calendar.  The mode line of
+the new window shows the date of the diary entries and any holidays
+that fall on that date.  If you specify a numeric argument with `d', it
+shows all the diary entries for that many successive days.  Thus, `2 d'
+displays all the entries for the selected date and for the following
+day.
 
-   The following commands are only available in Char mode:
-`C-c C-c'
-     Send a literal <C-c> to the sub-shell.
+   Another way to display the diary entries for a date is to click
+`Button2' on the date, and then choose `Diary' from the menu that
+appears.
 
-`C-c C-x'
-     A prefix command to conveniently access the global <C-x> commands.
-     For example, `C-c C-x o' invokes the global binding of `C-x o',
-     which is normally `other-window'.
+   To get a broader view of which days are mentioned in the diary, use
+the `m' command.  This displays the dates that have diary entries in a
+different face (or places a `+' after these dates, if display with
+multiple faces is not available).  The command applies both to the
+currently visible months and to other months that subsequently become
+visible by scrolling.  To turn marking off and erase the current marks,
+type `u', which also turns off holiday marks (*note Holidays::).
 
-\1f
-File: xemacs.info,  Node: Paging in Term,  Prev: Term Mode,  Up: Shell
+   To see the full diary file, rather than just some of the entries, use
+the `s' command.
 
-Paging in the terminal emulator
--------------------------------
+   Display of selected diary entries uses the selective display feature
+to hide entries that don't apply.
 
-   Term mode has a pager feature.  When the pager is enabled, term mode
-will pause at the end of each screenful.
+   The diary buffer as you see it is an illusion, so simply printing the
+buffer does not print what you see on your screen.  There is a special
+command to print hard copy of the diary buffer _as it appears_; this
+command is `M-x print-diary-entries'.  It sends the data directly to
+the printer.  You can customize it like `lpr-region' (*note Hardcopy::).
 
-`C-c C-q'
-     Toggles the pager feature:  Disables the pager if it is enabled,
-     and vice versa.  This works in both line and char modes.  If the
-     pager enabled, the mode-line contains the word `page'.
+   The command `M-x diary' displays the diary entries for the current
+date, independently of the calendar display, and optionally for the next
+few days as well; the variable `number-of-diary-entries' specifies how
+many days to include (*note Customization::).
 
-   If the pager is enabled, and Term receives more than a screenful of
-output since your last input, Term will enter More break mode.  This is
-indicated by `**MORE**' in the mode-line.  Type a `Space' to display
-the next screenful of output.  Type `?' to see your other options.  The
-interface is similar to the Unix `more' program.
+   If you put `(diary)' in your init file, this automatically displays
+a window with the day's diary entries, when you enter Emacs.  *Note
+Init File::.  The mode line of the displayed window shows the date and
+any holidays that fall on that date.
 
-\1f
-File: xemacs.info,  Node: Narrowing,  Next: Hardcopy,  Prev: Shell,  Up: Top
-
-Narrowing
-=========
-
-   "Narrowing" means focusing in on some portion of the buffer, making
-the rest temporarily invisible and inaccessible.  Cancelling the
-narrowing and making the entire buffer once again visible is called
-"widening".  The amount of narrowing in effect in a buffer at any time
-is called the buffer's "restriction".
-
-`C-x n n'
-     Narrow down to between point and mark (`narrow-to-region').
-
-`C-x n w'
-     Widen to make the entire buffer visible again (`widen').
-
-   Narrowing sometimes makes it easier to concentrate on a single
-subroutine or paragraph by eliminating clutter.  It can also be used to
-restrict the range of operation of a replace command or repeating
-keyboard macro.  The word `Narrow' appears in the mode line whenever
-narrowing is in effect.  When you have narrowed to a part of the
-buffer, that part appears to be all there is.  You can't see the rest,
-can't move into it (motion commands won't go outside the visible part),
-and can't change it in any way.  However, the invisible text is not
-gone; if you save the file, it will be saved.
-
-   The primary narrowing command is `C-x n n' (`narrow-to-region').  It
-sets the current buffer's restrictions so that the text in the current
-region remains visible but all text before the region or after the
-region is invisible.  Point and mark do not change.
-
-   Because narrowing can easily confuse users who do not understand it,
-`narrow-to-region' is normally a disabled command.  Attempting to use
-this command asks for confirmation and gives you the option of enabling
-it; once you enable the command, confirmation will no longer be
-required.  *Note Disabling::.
-
-   To undo narrowing, use `C-x n w' (`widen').  This makes all text in
-the buffer accessible again.
-
-   Use the `C-x =' command to get information on what part of the
-buffer you narrowed down.  *Note Position Info::.
+   Many users like to receive notice of events in their diary as email.
+To send such mail to yourself, use the command `M-x
+diary-mail-entries'.  A prefix argument specifies how many days
+(starting with today) to check; otherwise, the variable
+`diary-mail-days' says how many days.
 
 \1f
-File: xemacs.info,  Node: Hardcopy,  Next: Recursive Edit,  Prev: Narrowing,  Up: Top
-
-Hardcopy Output
-===============
-
-   The XEmacs commands for making hardcopy derive their names from the
-Unix commands `print' and `lpr'.
-
-`M-x print-buffer'
-     Print hardcopy of current buffer using Unix command `print'
-     (`lpr -p').  This command adds page headings containing the file
-     name and page number.
-
-`M-x lpr-buffer'
-     Print hardcopy of current buffer using Unix command `lpr'.  This
-     command does not add page headings.
-
-`M-x print-region'
-     Like `print-buffer', but prints only the current region.
-
-`M-x lpr-region'
-     Like `lpr-buffer', but prints only the current region.
-
-   All the hardcopy commands pass extra switches to the `lpr' program
-based on the value of the variable `lpr-switches'.  Its value should be
-a list of strings, each string a switch starting with `-'.  For
-example, the value could be `("-Pfoo")' to print on printer `foo'.
+File: xemacs.info,  Node: Format of Diary File,  Next: Date Formats,  Prev: Diary Commands,  Up: Diary
+
+The Diary File
+--------------
+
+   Your "diary file" is a file that records events associated with
+particular dates.  The name of the diary file is specified by the
+variable `diary-file'; `~/diary' is the default.  The `calendar'
+utility program supports a subset of the format allowed by the Emacs
+diary facilities, so you can use that utility to view the diary file,
+with reasonable results aside from the entries it cannot understand.
+
+   Each entry in the diary file describes one event and consists of one
+or more lines.  An entry always begins with a date specification at the
+left margin.  The rest of the entry is simply text to describe the
+event.  If the entry has more than one line, then the lines after the
+first must begin with whitespace to indicate they continue a previous
+entry.  Lines that do not begin with valid dates and do not continue a
+preceding entry are ignored.
+
+   You can inhibit the marking of certain diary entries in the calendar
+window; to do this, insert an ampersand (`&') at the beginning of the
+entry, before the date.  This has no effect on display of the entry in
+the diary window; it affects only marks on dates in the calendar
+window.  Nonmarking entries are especially useful for generic entries
+that would otherwise mark many different dates.
+
+   If the first line of a diary entry consists only of the date or day
+name with no following blanks or punctuation, then the diary window
+display doesn't include that line; only the continuation lines appear.
+For example, this entry:
+
+     02/11/1989
+           Bill B. visits Princeton today
+           2pm Cognitive Studies Committee meeting
+           2:30-5:30 Liz at Lawrenceville
+           4:00pm Dentist appt
+           7:30pm Dinner at George's
+           8:00-10:00pm concert
+
+appears in the diary window without the date line at the beginning.
+This style of entry looks neater when you display just a single day's
+entries, but can cause confusion if you ask for more than one day's
+entries.
+
+   You can edit the diary entries as they appear in the window, but it
+is important to remember that the buffer displayed contains the _entire_
+diary file, with portions of it concealed from view.  This means, for
+instance, that the `C-f' (`forward-char') command can put point at what
+appears to be the end of the line, but what is in reality the middle of
+some concealed line.
+
+   _Be careful when editing the diary entries!_  Inserting additional
+lines or adding/deleting characters in the middle of a visible line
+cannot cause problems, but editing at the end of a line may not do what
+you expect.  Deleting a line may delete other invisible entries that
+follow it.  Before editing the diary, it is best to display the entire
+file with `s' (`show-all-diary-entries').
 
 \1f
-File: xemacs.info,  Node: Recursive Edit,  Next: Dissociated Press,  Prev: Hardcopy,  Up: Top
-
-Recursive Editing Levels
-========================
-
-   A "recursive edit" is a situation in which you are using XEmacs
-commands to perform arbitrary editing while in the middle of another
-XEmacs command.  For example, when you type `C-r' inside a
-`query-replace', you enter a recursive edit in which you can change the
-current buffer.  When you exit from the recursive edit, you go back to
-the `query-replace'.
-
-   "Exiting" a recursive edit means returning to the unfinished
-command, which continues execution.  For example, exiting the recursive
-edit requested by `C-r' in `query-replace' causes query replacing to
-resume.  Exiting is done with `C-M-c' (`exit-recursive-edit').
-
-   You can also "abort" a recursive edit.  This is like exiting, but
-also quits the unfinished command immediately.  Use the command `C-]'
-(`abort-recursive-edit') for this.  *Note Quitting::.
-
-   The mode line shows you when you are in a recursive edit by
-displaying square brackets around the parentheses that always surround
-the major and minor mode names.  Every window's mode line shows the
-square brackets, since XEmacs as a whole, rather than any particular
-buffer, is in a recursive edit.
-
-   It is possible to be in recursive edits within recursive edits.  For
-example, after typing `C-r' in a `query-replace', you might type a
-command that entered the debugger.  In such a case, two or more sets of
-square brackets appear in the mode line(s).  Exiting the inner
-recursive edit (here with the debugger `c' command) resumes the
-query-replace command where it called the debugger.  After the end of
-the query-replace command, you would be able to exit the first
-recursive edit.  Aborting exits only one level of recursive edit; it
-returns to the command level of the previous recursive edit.  You can
-then abort that one as well.
-
-   The command `M-x top-level' aborts all levels of recursive edits,
-returning immediately to the top level command reader.
-
-   The text you edit inside the recursive edit need not be the same text
-that you were editing at top level.  If the command that invokes the
-recursive edit selects a different buffer first, that is the buffer you
-will edit recursively.  You can switch buffers within the recursive edit
-in the normal manner (as long as the buffer-switching keys have not been
-rebound).  While you could theoretically do the rest of your editing
-inside the recursive edit, including visiting files, this could have
-surprising effects (such as stack overflow) from time to time.  It is
-best if you always exit or abort a recursive edit when you no longer
-need it.
-
-   In general, XEmacs tries to avoid using recursive edits.  It is
-usually preferable to allow users to switch among the possible editing
-modes in any order they like.  With recursive edits, the only way to get
-to another state is to go "back" to the state that the recursive edit
-was invoked from.
+File: xemacs.info,  Node: Date Formats,  Next: Adding to Diary,  Prev: Format of Diary File,  Up: Diary
+
+Date Formats
+------------
+
+   Here are some sample diary entries, illustrating different ways of
+formatting a date.  The examples all show dates in American order
+(month, day, year), but Calendar mode supports European order (day,
+month, year) as an option.
+
+     4/20/93  Switch-over to new tabulation system
+     apr. 25  Start tabulating annual results
+     4/30  Results for April are due
+     */25  Monthly cycle finishes
+     Friday  Don't leave without backing up files
+
+   The first entry appears only once, on April 20, 1993.  The second and
+third appear every year on the specified dates, and the fourth uses a
+wildcard (asterisk) for the month, so it appears on the 25th of every
+month.  The final entry appears every week on Friday.
+
+   You can use just numbers to express a date, as in `MONTH/DAY' or
+`MONTH/DAY/YEAR'.  This must be followed by a nondigit.  In the date
+itself, MONTH and DAY are numbers of one or two digits.  The optional
+YEAR is also a number, and may be abbreviated to the last two digits;
+that is, you can use `11/12/1989' or `11/12/89'.
+
+   Dates can also have the form `MONTHNAME DAY' or `MONTHNAME DAY,
+YEAR', where the month's name can be spelled in full or abbreviated to
+three characters (with or without a period).  Case is not significant.
+
+   A date may be "generic"; that is, partially unspecified.  Then the
+entry applies to all dates that match the specification.  If the date
+does not contain a year, it is generic and applies to any year.
+Alternatively, MONTH, DAY, or YEAR can be a `*'; this matches any
+month, day, or year, respectively.  Thus, a diary entry `3/*/*' matches
+any day in March of any year; so does `march *'.
+
+   If you prefer the European style of writing dates--in which the day
+comes before the month--type `M-x european-calendar' while in the
+calendar, or set the variable `european-calendar-style' to `t' _before_
+using any calendar or diary command.  This mode interprets all dates in
+the diary in the European manner, and also uses European style for
+displaying diary dates.  (Note that there is no comma after the
+MONTHNAME in the European style.)  To go back to the (default) American
+style of writing dates, type `M-x american-calendar'.
+
+   You can use the name of a day of the week as a generic date which
+applies to any date falling on that day of the week.  You can abbreviate
+the day of the week to three letters (with or without a period) or spell
+it in full; case is not significant.
 
 \1f
-File: xemacs.info,  Node: Dissociated Press,  Next: CONX,  Prev: Recursive Edit,  Up: Top
-
-Dissociated Press
-=================
-
-   `M-x dissociated-press' is a command for scrambling a file of text
-either word by word or character by character.  Starting from a buffer
-of straight English, it produces extremely amusing output.  The input
-comes from the current XEmacs buffer.  Dissociated Press writes its
-output in a buffer named `*Dissociation*', and redisplays that buffer
-after every couple of lines (approximately) to facilitate reading it.
-
-   `dissociated-press' asks every so often whether to continue
-operating.  Answer `n' to stop it.  You can also stop at any time by
-typing `C-g'.  The dissociation output remains in the `*Dissociation*'
-buffer for you to copy elsewhere if you wish.
-
-   Dissociated Press operates by jumping at random from one point in the
-buffer to another.  In order to produce plausible output rather than
-gibberish, it insists on a certain amount of overlap between the end of
-one run of consecutive words or characters and the start of the next.
-That is, if it has just printed out `president' and then decides to
-jump to a different point in the file, it might spot the `ent' in
-`pentagon' and continue from there, producing `presidentagon'.  Long
-sample texts produce the best results.
-
-   A positive argument to `M-x dissociated-press' tells it to operate
-character by character, and specifies the number of overlap characters.
-A negative argument tells it to operate word by word and specifies the
-number of overlap words.  In this mode, whole words are treated as the
-elements to be permuted, rather than characters.  No argument is
-equivalent to an argument of two.  For your againformation, the output
-goes only into the buffer `*Dissociation*'.  The buffer you start with
-is not changed.
-
-   Dissociated Press produces nearly the same results as a Markov chain
-based on a frequency table constructed from the sample text.  It is,
-however, an independent, ignoriginal invention.  Dissociated Press
-techniquitously copies several consecutive characters from the sample
-between random choices, whereas a Markov chain would choose randomly for
-each word or character.  This makes for more plausible sounding results
-and runs faster.
-
-   It is a mustatement that too much use of Dissociated Press can be a
-developediment to your real work.  Sometimes to the point of outragedy.
-And keep dissociwords out of your documentation, if you want it to be
-well userenced and properbose.  Have fun.  Your buggestions are welcome.
+File: xemacs.info,  Node: Adding to Diary,  Next: Special Diary Entries,  Prev: Date Formats,  Up: Diary
 
-\1f
-File: xemacs.info,  Node: CONX,  Next: Amusements,  Prev: Dissociated Press,  Up: Top
+Commands to Add to the Diary
+----------------------------
 
-CONX
-====
+   While in the calendar, there are several commands to create diary
+entries:
 
-   Besides producing a file of scrambled text with Dissociated Press,
-you can generate random sentences by using CONX.
+`i d'
+     Add a diary entry for the selected date (`insert-diary-entry').
 
-`M-x conx'
-     Generate random sentences in the `*conx*' buffer.
+`i w'
+     Add a diary entry for the selected day of the week
+     (`insert-weekly-diary-entry').
 
-`M-x conx-buffer'
-     Absorb the text in the current buffer into the `conx' database.
+`i m'
+     Add a diary entry for the selected day of the month
+     (`insert-monthly-diary-entry').
 
-`M-x conx-init'
-     Forget the current word-frequency tree.
+`i y'
+     Add a diary entry for the selected day of the year
+     (`insert-yearly-diary-entry').
 
-`M-x conx-load'
-     Load a `conx' database that has been previously saved with `M-x
-     conx-save'.
+   You can make a diary entry for a specific date by selecting that date
+in the calendar window and typing the `i d' command.  This command
+displays the end of your diary file in another window and inserts the
+date; you can then type the rest of the diary entry.
 
-`M-x conx-region'
-     Absorb the text in the current buffer into the `conx' database.
+   If you want to make a diary entry that applies to a specific day of
+the week, select that day of the week (any occurrence will do) and type
+`i w'.  This inserts the day-of-week as a generic date; you can then
+type the rest of the diary entry.  You can make a monthly diary entry in
+the same fashion.  Select the day of the month, use the `i m' command,
+and type rest of the entry.  Similarly, you can insert a yearly diary
+entry with the `i y' command.
 
-`M-x conx-save'
-     Save the current `conx' database to a file for future retrieval.
+   All of the above commands make marking diary entries by default.  To
+make a nonmarking diary entry, give a numeric argument to the command.
+For example, `C-u i w' makes a nonmarking weekly diary entry.
 
-   Copy text from a buffer using `M-x conx-buffer' or `M-x conx-region'
-and then type `M-x conx'.  Output is continuously generated until you
-type <^G>. You can save the `conx' database to a file with `M-x
-conx-save', which you can retrieve with `M-x conx-load'.  To clear the
-database, use `M-x conx-init'.
+   When you modify the diary file, be sure to save the file before
+exiting Emacs.
 
 \1f
-File: xemacs.info,  Node: Amusements,  Next: Emulation,  Prev: CONX,  Up: Top
+File: xemacs.info,  Node: Special Diary Entries,  Prev: Adding to Diary,  Up: Diary
 
-Other Amusements
-================
+Special Diary Entries
+---------------------
 
-   If you are a little bit bored, you can try `M-x hanoi'.  If you are
-considerably bored, give it a numeric argument.  If you are very, very
-bored, try an argument of 9.  Sit back and watch.
+   In addition to entries based on calendar dates, the diary file can
+contain "sexp entries" for regular events such as anniversaries.  These
+entries are based on Lisp expressions (sexps) that Emacs evaluates as
+it scans the diary file.  Instead of a date, a sexp entry contains `%%'
+followed by a Lisp expression which must begin and end with
+parentheses.  The Lisp expression determines which dates the entry
+applies to.
+
+   Calendar mode provides commands to insert certain commonly used sexp
+entries:
+
+`i a'
+     Add an anniversary diary entry for the selected date
+     (`insert-anniversary-diary-entry').
+
+`i b'
+     Add a block diary entry for the current region
+     (`insert-block-diary-entry').
+
+`i c'
+     Add a cyclic diary entry starting at the date
+     (`insert-cyclic-diary-entry').
+
+   If you want to make a diary entry that applies to the anniversary of
+a specific date, move point to that date and use the `i a' command.
+This displays the end of your diary file in another window and inserts
+the anniversary description; you can then type the rest of the diary
+entry. The entry looks like this:
+
+   The effect of `i a' is to add a `diary-anniversary' sexp to your
+diary file.  You can also add one manually, for instance:
+
+     %%(diary-anniversary 10 31 1948) Arthur's birthday
+
+This entry applies to October 31 in any year after 1948; `10 31 1948'
+specifies the date.  (If you are using the European calendar style, the
+month and day are interchanged.)  The reason this expression requires a
+beginning year is that advanced diary functions can use it to calculate
+the number of elapsed years.
+
+   A "block" diary entry applies to a specified range of consecutive
+dates.  Here is a block diary entry that applies to all dates from June
+24, 1990 through July 10, 1990:
+
+     %%(diary-block 6 24 1990 7 10 1990) Vacation
+
+The `6 24 1990' indicates the starting date and the `7 10 1990'
+indicates the stopping date.  (Again, if you are using the European
+calendar style, the month and day are interchanged.)
+
+   To insert a block entry, place point and the mark on the two dates
+that begin and end the range, and type `i b'.  This command displays
+the end of your diary file in another window and inserts the block
+description; you can then type the diary entry.
+
+   "Cyclic" diary entries repeat after a fixed interval of days.  To
+create one, select the starting date and use the `i c' command.  The
+command prompts for the length of interval, then inserts the entry,
+which looks like this:
+
+     %%(diary-cyclic 50 3 1 1990) Renew medication
+
+This entry applies to March 1, 1990 and every 50th day following; `3 1
+1990' specifies the starting date.  (If you are using the European
+calendar style, the month and day are interchanged.)
+
+   All three of these commands make marking diary entries.  To insert a
+nonmarking entry, give a numeric argument to the command.  For example,
+`C-u i a' makes a nonmarking anniversary diary entry.
+
+   Marking sexp diary entries in the calendar is _extremely_
+time-consuming, since every date visible in the calendar window must be
+individually checked.  So it's a good idea to make sexp diary entries
+nonmarking (with `&') when possible.
+
+   Another sophisticated kind of sexp entry, a "floating" diary entry,
+specifies a regularly occurring event by offsets specified in days,
+weeks, and months.  It is comparable to a crontab entry interpreted by
+the `cron' utility.  Here is a nonmarking, floating diary entry that
+applies to the last Thursday in November:
+
+     &%%(diary-float 11 4 -1) American Thanksgiving
+
+The 11 specifies November (the eleventh month), the 4 specifies Thursday
+(the fourth day of the week, where Sunday is numbered zero), and the -1
+specifies "last" (1 would mean "first", 2 would mean "second", -2 would
+mean "second-to-last", and so on).  The month can be a single month or
+a list of months.  Thus you could change the 11 above to `'(1 2 3)' and
+have the entry apply to the last Thursday of January, February, and
+March.  If the month is `t', the entry applies to all months of the
+year.
+
+   The sexp feature of the diary allows you to specify diary entries
+based on any Emacs Lisp expression.  You can use the library of built-in
+functions or you can write your own functions.  The built-in functions
+include the ones shown in this section, plus a few others (*note Sexp
+Diary Entries::).
+
+   The generality of sexps lets you specify any diary entry that you can
+describe algorithmically.  Suppose you get paid on the 21st of the month
+if it is a weekday, and to the Friday before if the 21st is on a
+weekend.  The diary entry
 
-   When you are frustrated, try the famous Eliza program.  Just do `M-x
-doctor'.  End each input by typing `RET' twice.
+     &%%(let ((dayname (calendar-day-of-week date))
+              (day (car (cdr date))))
+           (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+               (and (memq day '(19 20)) (= dayname 5)))
+              ) Pay check deposited
 
-   When you are feeling strange, type `M-x yow'.
+to just those dates.  This example illustrates how the sexp can depend
+on the variable `date'; this variable is a list (MONTH DAY YEAR) that
+gives the Gregorian date for which the diary entries are being found.
+If the value of the sexp is `t', the entry applies to that date.  If
+the sexp evaluates to `nil', the entry does _not_ apply to that date.
 
 \1f
-File: xemacs.info,  Node: Emulation,  Next: Customization,  Prev: Amusements,  Up: Top
-
-Emulation
-=========
-
-   XEmacs can be programmed to emulate (more or less) most other
-editors.  Standard facilities can emulate these:
-
-Viper (a vi emulator)
-     In XEmacs, Viper is the preferred emulation of vi within XEmacs.
-     Viper is designed to allow you to take advantage of the best
-     features of XEmacs while still doing your basic editing in a
-     familiar, vi-like fashion.  Viper provides various different
-     levels of vi emulation, from a quite complete emulation that
-     allows almost no access to native XEmacs commands, to an "expert"
-     mode that combines the most useful vi commands with the most
-     useful XEmacs commands.
-
-     To start Viper, put the command
-
-          (viper-mode)
+File: xemacs.info,  Node: Calendar Customization,  Prev: Diary,  Up: Calendar/Diary
 
-     in your `.emacs' file.
+Customizing the Calendar and Diary
+----------------------------------
 
-     Viper comes with a separate manual that is provided standard with
-     the XEmacs distribution.
+   There are many customizations that you can use to make the calendar
+and diary suit your personal tastes.
 
-EDT (DEC VMS editor)
-     Turn on EDT emulation with `M-x edt-emulation-on'.  `M-x
-     edt-emulation-off' restores normal Emacs command bindings.
-
-     Most of the EDT emulation commands are keypad keys, and most
-     standard Emacs key bindings are still available.  The EDT
-     emulation rebindings are done in the global keymap, so there is no
-     problem switching buffers or major modes while in EDT emulation.
-
-Gosling Emacs
-     Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x
-     set-gosmacs-bindings'.  This redefines many keys, mostly on the
-     `C-x' and `ESC' prefixes, to work as they do in Gosmacs.  `M-x
-     set-gnu-bindings' returns to normal XEmacs by rebinding the same
-     keys to the definitions they had at the time `M-x
-     set-gosmacs-bindings' was done.
+* Menu:
 
-     It is also possible to run Mocklisp code written for Gosling Emacs.
-     *Note Mocklisp::.
+* Calendar Customizing::   Defaults you can set.
+* Holiday Customizing::    Defining your own holidays.
+* Date Display Format::    Changing the format.
+* Time Display Format::    Changing the format.
+* Daylight Savings::       Changing the default.
+* Diary Customizing::      Defaults you can set.
+* Hebrew/Islamic Entries:: How to obtain them.
+* Fancy Diary Display::    Enhancing the diary display, sorting entries.
+* Included Diary Files::   Sharing a common diary file.
+* Sexp Diary Entries::     Fancy things you can do.
+* Appt Customizing::      Customizing appointment reminders.
 
 \1f
-File: xemacs.info,  Node: Customization,  Next: Quitting,  Prev: Emulation,  Up: Top
-
-Customization
-*************
-
-   This chapter talks about various topics relevant to adapting the
-behavior of Emacs in minor ways.
-
-   All kinds of customization affect only the particular Emacs job that
-you do them in.  They are completely lost when you kill the Emacs job,
-and have no effect on other Emacs jobs you may run at the same time or
-later.  The only way an Emacs job can affect anything outside of it is
-by writing a file; in particular, the only way to make a customization
-`permanent' is to put something in your `.emacs' file or other
-appropriate file to do the customization in each session.  *Note Init
-File::.
-
-* Menu:
-
-* Minor Modes::     Each minor mode is one feature you can turn on
-                     independently of any others.
-* Variables::       Many Emacs commands examine Emacs variables
-                     to decide what to do; by setting variables,
-                     you can control their functioning.
-* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
-                     to be replayed with a single command.
-* Key Bindings::    The keymaps say what command each key runs.
-                     By changing them, you can "redefine keys".
-* Syntax::          The syntax table controls how words and expressions
-                     are parsed.
-* Init File::       How to write common customizations in the `.emacs'
-                     file.
-* Audible Bell::    Changing how Emacs sounds the bell.
-* Faces::           Changing the fonts and colors of a region of text.
-* X Resources::     X resources controlling various aspects of the
-                     behavior of XEmacs.
+File: xemacs.info,  Node: Calendar Customizing,  Next: Holiday Customizing,  Up: Calendar Customization
+
+Customizing the Calendar
+........................
+
+   If you set the variable `view-diary-entries-initially' to `t',
+calling up the calendar automatically displays the diary entries for
+the current date as well.  The diary dates appear only if the current
+date is visible.  If you add both of the following lines to your init
+file:
+
+     (setq view-diary-entries-initially t)
+     (calendar)
+
+this displays both the calendar and diary windows whenever you start
+Emacs.  *Note Init File::.
+
+   Similarly, if you set the variable
+`view-calendar-holidays-initially' to `t', entering the calendar
+automatically displays a list of holidays for the current three-month
+period.  The holiday list appears in a separate window.
+
+   You can set the variable `mark-diary-entries-in-calendar' to `t' in
+order to mark any dates with diary entries.  This takes effect whenever
+the calendar window contents are recomputed.  There are two ways of
+marking these dates: by changing the face (*note Faces::), if the
+display supports that, or by placing a plus sign (`+') beside the date
+otherwise.
+
+   Similarly, setting the variable `mark-holidays-in-calendar' to `t'
+marks holiday dates, either with a change of face or with an asterisk
+(`*').
+
+   The variable `calendar-holiday-marker' specifies how to mark a date
+as being a holiday.  Its value may be a character to insert next to the
+date, or a face name to use for displaying the date.  Likewise, the
+variable `diary-entry-marker' specifies how to mark a date that has
+diary entries.  The calendar creates faces named `holiday-face' and
+`diary-face' for these purposes; those symbols are the default values
+of these variables, when Emacs supports multiple faces on your terminal.
+
+   The variable `calendar-load-hook' is a normal hook run when the
+calendar package is first loaded (before actually starting to display
+the calendar).
+
+   Starting the calendar runs the normal hook
+`initial-calendar-window-hook'.  Recomputation of the calendar display
+does not run this hook.  But if you leave the calendar with the `q'
+command and reenter it, the hook runs again.
+
+   The variable `today-visible-calendar-hook' is a normal hook run
+after the calendar buffer has been prepared with the calendar when the
+current date is visible in the window.  One use of this hook is to
+replace today's date with asterisks; to do that, use the hook function
+`calendar-star-date'.
+
+     (add-hook 'today-visible-calendar-hook 'calendar-star-date)
+
+Another standard hook function marks the current date, either by
+changing its face or by adding an asterisk.  Here's how to use it:
+
+     (add-hook 'today-visible-calendar-hook 'calendar-mark-today)
+
+The variable `calendar-today-marker' specifies how to mark today's
+date.  Its value should be a character to insert next to the date or a
+face name to use for displaying the date.  A face named
+`calendar-today-face' is provided for this purpose; that symbol is the
+default for this variable when Emacs supports multiple faces on your
+terminal.
+
+A similar normal hook, `today-invisible-calendar-hook' is run if the
+current date is _not_ visible in the window.