-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
translation approved by the author instead of in the original English.
\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::.
+
+\1f
+File: xemacs.info, Node: Lunar Phases, Next: Other Calendars, Prev: Sunrise/Sunset, Up: Calendar/Diary
+
+Phases of the Moon
+------------------
+
+ 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."
+
+`M'
+ Display the dates and times for all the quarters of the moon for
+ the three-month period shown (`calendar-phases-of-moon').
+
+`M-x phases-of-moon'
+ Display dates and times of the quarters of the moon for three
+ months around today's date.
+
+ 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.
+
+ 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.
+
+ 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::.
+
+\1f
+File: xemacs.info, Node: Other Calendars, Next: Calendar Systems, Prev: Lunar Phases, Up: Calendar/Diary
+
+Conversion To and From Other Calendars
+--------------------------------------
+
+ 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.
+
+ While Emacs cannot display other calendars, it can convert dates to
+and from several other calendars.
+
+* Menu:
+
+* 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.
+
+ 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.
+
+\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.
+
+\1f
+File: xemacs.info, Node: To Other Calendar, Next: From Other Calendar, Prev: Calendar Systems, Up: Other Calendars
+
+Converting To Other Calendars
+=============================
+
+ The following commands describe the selected date (the date at point)
+in various other calendar systems:
+
+`Button2 Other Calendars'
+ Display the date that you click on, expressed in various other
+ calendars.
+
+`p c'
+ Display ISO commercial calendar equivalent for selected day
+ (`calendar-print-iso-date').
+
+`p j'
+ Display Julian date for selected day
+ (`calendar-print-julian-date').
+
+`p a'
+ Display astronomical (Julian) day number for selected day
+ (`calendar-print-astro-day-number').
+
+`p h'
+ Display Hebrew date for selected day
+ (`calendar-print-hebrew-date').
+
+`p i'
+ Display Islamic date for selected day
+ (`calendar-print-islamic-date').
+
+`p f'
+ Display French Revolutionary date for selected day
+ (`calendar-print-french-date').
+
+`p C'
+ Display Chinese date for selected day
+ (`calendar-print-chinese-date').
+
+`p k'
+ Display Coptic date for selected day
+ (`calendar-print-coptic-date').
+
+`p e'
+ Display Ethiopic date for selected day
+ (`calendar-print-ethiopic-date').
+
+`p p'
+ Display Persian date for selected day
+ (`calendar-print-persian-date').
+
+`p m'
+ Display Mayan date for selected day (`calendar-print-mayan-date').
+
+ 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.)
+
+ 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: 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: 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.
+
+\1f
+File: xemacs.info, Node: Diary, Next: Calendar Customization, Prev: Mayan Calendar, Up: Calendar/Diary
+
+The Diary
+---------
+
+ 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:
+
+* 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: Diary Commands, Next: Format of Diary File, Prev: Diary, Up: Diary
+
+Commands Displaying Diary Entries
+---------------------------------
+
+ 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.
+
+`d'
+ Display all diary entries for the selected date
+ (`view-diary-entries').
+
+`Button2 Diary'
+ Display all diary entries for the date you click on.
+
+`s'
+ Display the entire diary file (`show-all-diary-entries').
+
+`m'
+ Mark all visible dates that have diary entries
+ (`mark-diary-entries').
+
+`u'
+ Unmark the calendar window (`calendar-unmark').
+
+`M-x print-diary-entries'
+ Print hard copy of the diary display as it appears.
+
+`M-x diary'
+ Display all diary entries for today's date.
+
+`M-x diary-mail-entries'
+ Mail yourself email reminders about upcoming diary entries.
+
+ 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.
+
+ 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.
+
+ 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::).
+
+ To see the full diary file, rather than just some of the entries, use
+the `s' command.
+
+ Display of selected diary entries uses the selective display feature
+to hide entries that don't apply.
+
+ 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::).
+
+ 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 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.
+
+ 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: 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: 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: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary
+
+Commands to Add to the Diary
+----------------------------
+
+ While in the calendar, there are several commands to create diary
+entries:
+
+`i d'
+ Add a diary entry for the selected date (`insert-diary-entry').
+
+`i w'
+ Add a diary entry for the selected day of the week
+ (`insert-weekly-diary-entry').
+
+`i m'
+ Add a diary entry for the selected day of the month
+ (`insert-monthly-diary-entry').
+
+`i y'
+ Add a diary entry for the selected day of the year
+ (`insert-yearly-diary-entry').
+
+ 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.
+
+ 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.
+
+ 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.
+
+ When you modify the diary file, be sure to save the file before
+exiting Emacs.
+
+\1f
+File: xemacs.info, Node: Special Diary Entries, Prev: Adding to Diary, Up: Diary
+
+Special Diary Entries
+---------------------
+
+ 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
+
+ &%%(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
+
+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: Calendar Customization, Prev: Diary, Up: Calendar/Diary
Customizing the Calendar and Diary
savings time should occur. For Cambridge, Massachusetts both variables'
values are 120.
-\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.
-
-\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:
-
- IDhu al-Qada 25 Happy Islamic birthday!
-
-and would appear in the diary for any date that corresponds to Dhu
-al-Qada 25 on the Islamic calendar.
-
- As with Gregorian-date diary entries, Hebrew- and Islamic-date
-entries are nonmarking if they are preceded with an ampersand (`&').
-
- 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:
-
-`i h d'
- Add a diary entry for the Hebrew date corresponding to the
- selected date (`insert-hebrew-diary-entry').
-
-`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.
-
-`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.
-
-`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').
-
- 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: Fancy Diary Display, Next: Included Diary Files, Prev: Hebrew/Islamic Entries, Up: Calendar Customization
-
-Fancy Diary Display
-...................
-
- 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,
-
- (add-hook 'diary-display-hook 'fancy-diary-display)
-
-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.
-
- 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'.
-
- 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'.
-
- 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 init file:
-
- (add-hook 'list-diary-entries-hook 'sort-diary-entries t)
-
- *Note Init File::.
-
-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.
-
-\1f
-File: xemacs.info, Node: Included Diary Files, Next: Sexp Diary Entries, Prev: Fancy Diary Display, Up: Calendar Customization
-
-Included Diary Files
-....................
-
- 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:
-
- #include "FILENAME"
-
-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:
-
- (add-hook 'list-diary-entries-hook 'include-other-diary-files)
- (add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
-
- The include mechanism works only with the fancy diary display,
-because ordinary diary display shows the entries directly from your
-diary file.
-
-\1f
-File: xemacs.info, Node: Sexp Diary Entries, Next: Appt Customizing, Prev: Included Diary Files, Up: Calendar Customization
-
-Sexp Entries and the Fancy Diary Display
-........................................
-
- 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:
-
- %%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
-
-gets replaced by the age, so on October 31, 1990 the entry appears in
-the fancy diary buffer like this:
-
- Arthur's birthday (42 years old)
-
-If the diary file instead contains this entry:
-
- %%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
-
-the entry in the fancy diary buffer for October 31, 1990 appears like
-this:
-
- Arthur's 42nd birthday
-
- Similarly, cyclic diary entries can interpolate the number of
-repetitions that have occurred:
-
- %%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
-
-looks like this:
-
- Renew medication (5th time)
-
-in the fancy diary display on September 8, 1990.
-
- 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.
-
- 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:
-
- &%%(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
-
-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.
-
- 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:
-
-`%%(diary-sunrise-sunset)'
- Make a diary entry for the local times of today's sunrise and
- sunset.
-
-`%%(diary-phases-of-moon)'
- Make a diary entry for the phases (quarters) of the moon.
-
-`%%(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.
-
-`%%(diary-iso-date)'
- Make a diary entry with today's equivalent ISO commercial date.
-
-`%%(diary-julian-date)'
- Make a diary entry with today's equivalent date on the Julian
- calendar.
-
-`%%(diary-astro-day-number)'
- Make a diary entry with today's equivalent astronomical (Julian)
- day number.
-
-`%%(diary-hebrew-date)'
- Make a diary entry with today's equivalent date on the Hebrew
- calendar.
-
-`%%(diary-islamic-date)'
- Make a diary entry with today's equivalent date on the Islamic
- calendar.
-
-`%%(diary-french-date)'
- Make a diary entry with today's equivalent date on the French
- Revolutionary calendar.
-
-`%%(diary-mayan-date)'
- Make a diary entry with today's equivalent date on the Mayan
- calendar.
-
-Thus including the diary entry
-
- &%%(diary-hebrew-date)
-
-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.)
-
- These functions can be used to construct sexp diary entries based on
-the Hebrew calendar in certain standard ways:
-
-`%%(diary-rosh-hodesh)'
- Make a diary entry that tells the occurrence and ritual
- announcement of each new Hebrew month.
-
-`%%(diary-parasha)'
- Make a Saturday diary entry that tells the weekly synagogue
- scripture reading.
-
-`%%(diary-sabbath-candles)'
- Make a Friday diary entry that tells the _local time_ of Sabbath
- candle lighting.
-
-`%%(diary-omer)'
- Make a diary entry that gives the omer count, when appropriate.
-
-`%%(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.)
-
-\1f
-File: xemacs.info, Node: Appt Customizing, Prev: Sexp Diary Entries, Up: Calendar Customization
-
-Customizing Appointment Reminders
-.................................
-
- You can specify exactly how Emacs reminds you of an appointment, and
-how far in advance it begins doing so, by setting these variables:
-
-`appt-message-warning-time'
- The time in minutes before an appointment that the reminder
- begins. The default is 10 minutes.
-
-`appt-audible'
- If this is `t' (the default), Emacs rings the terminal bell for
- appointment reminders.
-
-`appt-visible'
- If this is `t' (the default), Emacs displays the appointment
- message in echo area.
-
-`appt-display-mode-line'
- If this is `t' (the default), Emacs displays the number of minutes
- to the appointment on the mode line.
-
-`appt-msg-window'
- If this is `t' (the default), Emacs displays the appointment
- message in another window.
-
-`appt-display-duration'
- The number of seconds an appointment message is displayed. The
- default is 5 seconds.
-
-\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::.
-
-\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*'.
-
-`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').
-
-`M-x shell'
- Run a subshell with input and output through an XEmacs buffer.
- You can then give commands interactively.
-
-`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.
-
-* 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.
-
-\1f
-File: xemacs.info, Node: Single Shell, Next: Interactive Shell, Prev: Shell, Up: Shell
-
-Single Shell Commands
----------------------
-
- `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 init file. *Note Init 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.
-
-\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.
-
-\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').
-
-\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.
-