X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=info%2Fxemacs.info-15;h=82aa3f69dfe5009085958fed6b0c52c1c99b4386;hb=2779fcb5d524d6b7de5a6ef9ebfd6662433a4a07;hp=d9656f6bd8534b4d1dd20d49d0eae6301772dba9;hpb=e5cd8d4ed475af329be5df9627a53edd584fd3de;p=chise%2Fxemacs-chise.git- diff --git a/info/xemacs.info-15 b/info/xemacs.info-15 index d9656f6..82aa3f6 100644 --- a/info/xemacs.info-15 +++ b/info/xemacs.info-15 @@ -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,1177 +30,1217 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  -File: xemacs.info, Node: Calendar Customization, Prev: Diary, Up: Calendar/Diary - -Customizing the Calendar and Diary ----------------------------------- +File: xemacs.info, Node: Specified Dates, Prev: Move to Beginning or End, Up: Calendar Motion - There are many customizations that you can use to make the calendar -and diary suit your personal tastes. +Particular Dates +................ -* Menu: + Calendar mode provides commands for moving to a particular date +specified in various ways. -* 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. +`g d' + Move point to specified date (`calendar-goto-date'). - -File: xemacs.info, Node: Calendar Customizing, Next: Holiday Customizing, Up: Calendar Customization +`o' + Center calendar around specified month (`calendar-other-month'). -Customizing the Calendar -........................ +`.' + Move point to today's date (`calendar-goto-today'). - 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 -`.emacs' file: + `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'. - (setq view-diary-entries-initially t) - (calendar) + `o' (`calendar-other-month') prompts for a month and year, then +centers the three-month calendar around that month. -this displays both the calendar and diary windows whenever you start -Emacs. + You can return to today's date with `.' (`calendar-goto-today'). - 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. + +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' +`' + Scroll calendar three months forward + (`scroll-calendar-left-three-months'). + +`M-v' +`' + 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 and are equivalent to `C-v' and +`M-v', just as they are in other modes. - 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. + +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. - Similarly, setting the variable `mark-holidays-in-calendar' to `t' -marks holiday dates, either with a change of face or with an asterisk -(`*'). + +File: xemacs.info, Node: General Calendar, Next: LaTeX Calendar, Prev: Mark and Region, Up: Calendar/Diary - 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. +Miscellaneous Calendar Commands +------------------------------- - The variable `calendar-load-hook' is a normal hook run when the -calendar package is first loaded (before actually starting to display -the calendar). +`p d' + Display day-in-year (`calendar-print-day-of-year'). - 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. +`?' + Briefly describe calendar commands (`describe-calendar-mode'). - 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'. +`C-c C-l' + Regenerate the calendar window (`redraw-calendar'). - (add-hook 'today-visible-calendar-hook 'calendar-star-date) +`SPC' + Scroll the next window (`scroll-other-window'). -Another standard hook function marks the current date, either by -changing its face or by adding an asterisk. Here's how to use it: +`q' + Exit from calendar (`exit-calendar'). - (add-hook 'today-visible-calendar-hook 'calendar-mark-today) + 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. -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. + To display a brief description of the calendar commands, type `?' +(`describe-calendar-mode'). For a fuller description, type `C-h m'. -A similar normal hook, `today-invisible-calendar-hook' is run if the -current date is _not_ visible in the window. + 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. - -File: xemacs.info, Node: Holiday Customizing, Next: Date Display Format, Prev: Calendar Customizing, 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.) -Customizing the Holidays -........................ + 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. - Emacs knows about holidays defined by entries on one of several -lists. You can customize these lists of holidays to your own needs, -adding or deleting holidays. The lists of holidays that Emacs uses are -for general holidays (`general-holidays'), local holidays -(`local-holidays'), Christian holidays (`christian-holidays'), Hebrew -(Jewish) holidays (`hebrew-holidays'), Islamic (Moslem) holidays -(`islamic-holidays'), and other holidays (`other-holidays'). - - The general holidays are, by default, holidays common throughout the -United States. To eliminate these holidays, set `general-holidays' to -`nil'. - - There are no default local holidays (but sites may supply some). You -can set the variable `local-holidays' to any list of holidays, as -described below. - - By default, Emacs does not include all the holidays of the religions -that it knows, only those commonly found in secular calendars. For a -more extensive collection of religious holidays, you can set any (or -all) of the variables `all-christian-calendar-holidays', -`all-hebrew-calendar-holidays', or `all-islamic-calendar-holidays' to -`t'. If you want to eliminate the religious holidays, set any or all -of the corresponding variables `christian-holidays', `hebrew-holidays', -and `islamic-holidays' to `nil'. - - You can set the variable `other-holidays' to any list of holidays. -This list, normally empty, is intended for individual use. - - Each of the lists (`general-holidays', `local-holidays', -`christian-holidays', `hebrew-holidays', `islamic-holidays', and -`other-holidays') is a list of "holiday forms", each holiday form -describing a holiday (or sometimes a list of holidays). - - Here is a table of the possible kinds of holiday form. Day numbers -and month numbers count starting from 1, but "dayname" numbers count -Sunday as 0. The element STRING is always the name of the holiday, as -a string. - -`(holiday-fixed MONTH DAY STRING)' - A fixed date on the Gregorian calendar. MONTH and DAY are - numbers, STRING is the name of the holiday. - -`(holiday-float MONTH DAYNAME K STRING)' - The Kth DAYNAME in MONTH on the Gregorian calendar (DAYNAME=0 for - Sunday, and so on); negative K means count back from the end of - the month. STRING is the name of the holiday. - -`(holiday-hebrew MONTH DAY STRING)' - A fixed date on the Hebrew calendar. MONTH and DAY are numbers, - STRING is the name of the holiday. - -`(holiday-islamic MONTH DAY STRING)' - A fixed date on the Islamic calendar. MONTH and DAY are numbers, - STRING is the name of the holiday. - -`(holiday-julian MONTH DAY STRING)' - A fixed date on the Julian calendar. MONTH and DAY are numbers, - STRING is the name of the holiday. - -`(holiday-sexp SEXP STRING)' - A date calculated by the Lisp expression SEXP. The expression - should use the variable `year' to compute and return the date of a - holiday, or `nil' if the holiday doesn't happen this year. The - value of SEXP must represent the date as a list of the form - `(MONTH DAY YEAR)'. STRING is the name of the holiday. - -`(if CONDITION HOLIDAY-FORM &optional HOLIDAY-FORM)' - A holiday that happens only if CONDITION is true. - -`(FUNCTION [ARGS])' - A list of dates calculated by the function FUNCTION, called with - arguments ARGS. - - For example, suppose you want to add Bastille Day, celebrated in -France on July 14. You can do this by adding the following line to -your `.emacs' file: - - (setq other-holidays '((holiday-fixed 7 14 "Bastille Day"))) - -The holiday form `(holiday-fixed 7 14 "Bastille Day")' specifies the -fourteenth day of the seventh month (July). - - Many holidays occur on a specific day of the week, at a specific time -of month. Here is a holiday form describing Hurricane Supplication Day, -celebrated in the Virgin Islands on the fourth Monday in August: - - (holiday-float 8 1 4 "Hurricane Supplication Day") - -Here the 8 specifies August, the 1 specifies Monday (Sunday is 0, -Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in -the month (1 specifies the first occurrence, 2 the second occurrence, --1 the last occurrence, -2 the second-to-last occurrence, and so on). - - You can specify holidays that occur on fixed days of the Hebrew, -Islamic, and Julian calendars too. For example, - - (setq other-holidays - '((holiday-hebrew 10 2 "Last day of Hanukkah") - (holiday-islamic 3 12 "Mohammed's Birthday") - (holiday-julian 4 2 "Jefferson's Birthday"))) - -adds the last day of Hanukkah (since the Hebrew months are numbered with -1 starting from Nisan), the Islamic feast celebrating Mohammed's -birthday (since the Islamic months are numbered from 1 starting with -Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the -Julian calendar. - - To include a holiday conditionally, use either Emacs Lisp's `if' or -the `holiday-sexp' form. For example, American presidential elections -occur on the first Tuesday after the first Monday in November of years -divisible by 4: - - (holiday-sexp (if (= 0 (% year 4)) - (calendar-gregorian-from-absolute - (1+ (calendar-dayname-on-or-before - 1 (+ 6 (calendar-absolute-from-gregorian - (list 11 1 year)))))) - "US Presidential Election")) - -or - - (if (= 0 (% displayed-year 4)) - (fixed 11 - (extract-calendar-day - (calendar-gregorian-from-absolute - (1+ (calendar-dayname-on-or-before - 1 (+ 6 (calendar-absolute-from-gregorian - (list 11 1 displayed-year))))))) - "US Presidential Election")) - - Some holidays just don't fit into any of these forms because special -calculations are involved in their determination. In such cases you -must write a Lisp function to do the calculation. To include eclipses, -for example, add `(eclipses)' to `other-holidays' and write an Emacs -Lisp function `eclipses' that returns a (possibly empty) list of the -relevant Gregorian dates among the range visible in the calendar -window, with descriptive strings, like this: - - (((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... ) + 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.)  -File: xemacs.info, Node: Date Display Format, Next: Time Display Format, Prev: Holiday Customizing, Up: Calendar Customization +File: xemacs.info, Node: LaTeX Calendar, Next: Holidays, Prev: General Calendar, Up: Calendar/Diary -Date Display Format -................... +LaTeX Calendar +============== - You can customize the manner of displaying dates in the diary, in -mode lines, and in messages by setting `calendar-date-display-form'. -This variable holds a list of expressions that can involve the variables -`month', `day', and `year', which are all numbers in string form, and -`monthname' and `dayname', which are both alphabetic strings. In the -American style, the default value of this list is as follows: + 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. - ((if dayname (concat dayname ", ")) monthname " " day ", " year) +`t m' + Generate a one-month calendar (`cal-tex-cursor-month'). -while in the European style this value is the default: +`t M' + Generate a sideways-printing one-month calendar + (`cal-tex-cursor-month-landscape'). - ((if dayname (concat dayname ", ")) day " " monthname " " year) +`t d' + Generate a one-day calendar (`cal-tex-cursor-day'). - + The ISO standard date representation is this: +`t w 1' + Generate a one-page calendar for one week (`cal-tex-cursor-week'). - (year "-" month "-" day) +`t w 2' + Generate a two-page calendar for one week (`cal-tex-cursor-week2'). -This specifies a typical American format: +`t w 3' + Generate an ISO-style calendar for one week + (`cal-tex-cursor-week-iso'). - (month "/" day "/" (substring year -2)) +`t w 4' + Generate a calendar for one Monday-starting week + (`cal-tex-cursor-week-monday'). - -File: xemacs.info, Node: Time Display Format, Next: Daylight Savings, Prev: Date Display Format, Up: Calendar Customization +`t f w' + Generate a Filofax-style two-weeks-at-a-glance calendar + (`cal-tex-cursor-filofax-2week'). -Time Display Format -................... +`t f W' + Generate a Filofax-style one-week-at-a-glance calendar + (`cal-tex-cursor-filofax-week'). - The calendar and diary by default display times of day in the -conventional American style with the hours from 1 through 12, minutes, -and either `am' or `pm'. If you prefer the European style, also known -in the US as military, in which the hours go from 00 to 23, you can -alter the variable `calendar-time-display-form'. This variable is a -list of expressions that can involve the variables `12-hours', -`24-hours', and `minutes', which are all numbers in string form, and -`am-pm' and `time-zone', which are both alphabetic strings. The -default value of `calendar-time-display-form' is as follows: +`t y' + Generate a calendar for one year (`cal-tex-cursor-year'). - (12-hours ":" minutes am-pm - (if time-zone " (") time-zone (if time-zone ")")) +`t Y' + Generate a sideways-printing calendar for one year + (`cal-tex-cursor-year-landscape'). -Here is a value that provides European style times: +`t f y' + Generate a Filofax-style calendar for one year + (`cal-tex-cursor-filofax-year'). - (24-hours ":" minutes - (if time-zone " (") time-zone (if time-zone ")")) + 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). -gives military-style times like `21:07 (UT)' if time zone names are -defined, and times like `21:07' if they are not. + 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).  -File: xemacs.info, Node: Daylight Savings, Next: Diary Customizing, Prev: Time Display Format, Up: Calendar Customization - -Daylight Savings Time -..................... - - Emacs understands the difference between standard time and daylight -savings time--the times given for sunrise, sunset, solstices, -equinoxes, and the phases of the moon take that into account. The rules -for daylight savings time vary from place to place and have also varied -historically from year to year. To do the job properly, Emacs needs to -know which rules to use. - - Some operating systems keep track of the rules that apply to the -place where you are; on these systems, Emacs gets the information it -needs from the system automatically. If some or all of this -information is missing, Emacs fills in the gaps with the rules -currently used in Cambridge, Massachusetts. If the resulting rules are -not what you want, you can tell Emacs the rules to use by setting -certain variables. - - If the default choice of rules is not appropriate for your location, -you can tell Emacs the rules to use by setting the variables -`calendar-daylight-savings-starts' and -`calendar-daylight-savings-ends'. Their values should be Lisp -expressions that refer to the variable `year', and evaluate to the -Gregorian date on which daylight savings time starts or (respectively) -ends, in the form of a list `(MONTH DAY YEAR)'. The values should be -`nil' if your area does not use daylight savings time. - - Emacs uses these expressions to determine the starting date of -daylight savings time for the holiday list and for correcting times of -day in the solar and lunar calculations. - - The values for Cambridge, Massachusetts are as follows: - - (calendar-nth-named-day 1 0 4 year) - (calendar-nth-named-day -1 0 10 year) - -That is, the first 0th day (Sunday) of the fourth month (April) in the -year specified by `year', and the last Sunday of the tenth month -(October) of that year. If daylight savings time were changed to start -on October 1, you would set `calendar-daylight-savings-starts' to this: - - (list 10 1 year) - - For a more complex example, suppose daylight savings time begins on -the first of Nisan on the Hebrew calendar. You should set -`calendar-daylight-savings-starts' to this value: - - (calendar-gregorian-from-absolute - (calendar-absolute-from-hebrew - (list 1 1 (+ year 3760)))) - -because Nisan is the first month in the Hebrew calendar and the Hebrew -year differs from the Gregorian year by 3760 at Nisan. - - If there is no daylight savings time at your location, or if you want -all times in standard time, set `calendar-daylight-savings-starts' and -`calendar-daylight-savings-ends' to `nil'. - - The variable `calendar-daylight-time-offset' specifies the -difference between daylight savings time and standard time, measured in -minutes. The value for Cambridge, Massachusetts is 60. - - The two variables `calendar-daylight-savings-starts-time' and -`calendar-daylight-savings-ends-time' specify the number of minutes -after midnight local time when the transition to and from daylight -savings time should occur. For Cambridge, Massachusetts both variables' -values are 120. +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 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.  -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: 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::.  -File: xemacs.info, Node: Hebrew/Islamic Entries, Next: Fancy Diary Display, Prev: Diary Customizing, Up: Calendar Customization +File: xemacs.info, Node: Lunar Phases, Next: Other Calendars, Prev: Sunrise/Sunset, Up: Calendar/Diary -Hebrew- and Islamic-Date Diary Entries -...................................... +Phases of the Moon +------------------ - 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: + 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." - (add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries) - (add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries) +`M' + Display the dates and times for all the quarters of the moon for + the three-month period shown (`calendar-phases-of-moon'). -If you want Islamic-date entries, do this: +`M-x phases-of-moon' + Display dates and times of the quarters of the moon for three + months around today's date. - (add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries) - (add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries) + 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. - 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: + 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. - HHeshvan 25 Happy Hebrew birthday! + 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::. -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: + +File: xemacs.info, Node: Other Calendars, Next: Calendar Systems, Prev: Lunar Phases, Up: Calendar/Diary -`i h d' - Add a diary entry for the Hebrew date corresponding to the - selected date (`insert-hebrew-diary-entry'). +Conversion To and From Other Calendars +-------------------------------------- -`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. + 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. -`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. + While Emacs cannot display other calendars, it can convert dates to +and from several other calendars. -`i i d' - Add a diary entry for the Islamic date corresponding to the - selected date (`insert-islamic-diary-entry'). +* Menu: -`i i m' - Add a diary entry for the day of the Islamic month corresponding - to the selected date (`insert-monthly-islamic-diary-entry'). +* 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. -`i i y' - Add a diary entry for the day of the Islamic year corresponding to - the selected date (`insert-yearly-islamic-diary-entry'). + 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. - 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. + +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.  -File: xemacs.info, Node: Fancy Diary Display, Next: Included Diary Files, Prev: Hebrew/Islamic Entries, Up: Calendar Customization +File: xemacs.info, Node: To Other Calendar, Next: From Other Calendar, Prev: Calendar Systems, Up: Other Calendars -Fancy Diary Display -................... +Converting To Other Calendars +============================= - 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, + The following commands describe the selected date (the date at point) +in various other calendar systems: - (add-hook 'diary-display-hook 'fancy-diary-display) +`Button2 Other Calendars' + Display the date that you click on, expressed in various other + calendars. -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. +`p c' + Display ISO commercial calendar equivalent for selected day + (`calendar-print-iso-date'). - 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'. +`p j' + Display Julian date for selected day + (`calendar-print-julian-date'). - 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'. +`p a' + Display astronomical (Julian) day number for selected day + (`calendar-print-astro-day-number'). - 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: +`p h' + Display Hebrew date for selected day + (`calendar-print-hebrew-date'). - (add-hook 'list-diary-entries-hook 'sort-diary-entries t) +`p i' + Display Islamic date for selected day + (`calendar-print-islamic-date'). -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. +`p f' + Display French Revolutionary date for selected day + (`calendar-print-french-date'). - -File: xemacs.info, Node: Included Diary Files, Next: Sexp Diary Entries, Prev: Fancy Diary Display, Up: Calendar Customization +`p C' + Display Chinese date for selected day + (`calendar-print-chinese-date'). -Included Diary Files -.................... +`p k' + Display Coptic date for selected day + (`calendar-print-coptic-date'). - 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: +`p e' + Display Ethiopic date for selected day + (`calendar-print-ethiopic-date'). - #include "FILENAME" +`p p' + Display Persian date for selected day + (`calendar-print-persian-date'). -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: +`p m' + Display Mayan date for selected day (`calendar-print-mayan-date'). - (add-hook 'list-diary-entries-hook 'include-other-diary-files) - (add-hook 'mark-diary-entries-hook 'mark-included-diary-files) + 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.) - The include mechanism works only with the fancy diary display, -because ordinary diary display shows the entries directly from your -diary file. + 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.  -File: xemacs.info, Node: Sexp Diary Entries, Next: Appt Customizing, Prev: Included Diary Files, Up: Calendar Customization +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. -Sexp Entries and the Fancy Diary Display -........................................ + +File: xemacs.info, Node: Mayan Calendar, Next: Diary, Prev: From Other Calendar, Up: Other Calendars - 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: +Converting from the Mayan Calendar +---------------------------------- - %%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old) + 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. -gets replaced by the age, so on October 31, 1990 the entry appears in -the fancy diary buffer like this: + +File: xemacs.info, Node: Diary, Next: Calendar Customization, Prev: Mayan Calendar, Up: Calendar/Diary - Arthur's birthday (42 years old) +The Diary +--------- -If the diary file instead contains this entry: + 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::). - %%(diary-anniversary 10 31 1948) Arthur's %d%s birthday +* Menu: -the entry in the fancy diary buffer for October 31, 1990 appears like -this: +* 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. - Arthur's 42nd birthday + +File: xemacs.info, Node: Diary Commands, Next: Format of Diary File, Prev: Diary, Up: Diary - Similarly, cyclic diary entries can interpolate the number of -repetitions that have occurred: +Commands Displaying Diary Entries +--------------------------------- - %%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time) + 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. -looks like this: +`d' + Display all diary entries for the selected date + (`view-diary-entries'). - Renew medication (5th time) +`Button2 Diary' + Display all diary entries for the date you click on. -in the fancy diary display on September 8, 1990. +`s' + Display the entire diary file (`show-all-diary-entries'). - 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. +`m' + Mark all visible dates that have diary entries + (`mark-diary-entries'). - 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: +`u' + Unmark the calendar window (`calendar-unmark'). - &%%(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: +`M-x print-diary-entries' + Print hard copy of the diary display as it appears. -`%%(diary-sunrise-sunset)' - Make a diary entry for the local times of today's sunrise and - sunset. +`M-x diary' + Display all diary entries for today's date. -`%%(diary-phases-of-moon)' - Make a diary entry for the phases (quarters) of the moon. +`M-x diary-mail-entries' + Mail yourself email reminders about upcoming diary entries. -`%%(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. + 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. -`%%(diary-iso-date)' - Make a diary entry with today's equivalent ISO commercial date. + 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. -`%%(diary-julian-date)' - Make a diary entry with today's equivalent date on the Julian - calendar. + 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::). -`%%(diary-astro-day-number)' - Make a diary entry with today's equivalent astronomical (Julian) - day number. + To see the full diary file, rather than just some of the entries, use +the `s' command. -`%%(diary-hebrew-date)' - Make a diary entry with today's equivalent date on the Hebrew - calendar. + Display of selected diary entries uses the selective display feature +to hide entries that don't apply. -`%%(diary-islamic-date)' - Make a diary entry with today's equivalent date on the Islamic - calendar. + 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::). -`%%(diary-french-date)' - Make a diary entry with today's equivalent date on the French - Revolutionary calendar. + 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::). -`%%(diary-mayan-date)' - Make a diary entry with today's equivalent date on the Mayan - calendar. + 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. -Thus including the diary entry + 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. - &%%(diary-hebrew-date) + +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'). -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.) + +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. - These functions can be used to construct sexp diary entries based on -the Hebrew calendar in certain standard ways: + +File: xemacs.info, Node: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary -`%%(diary-rosh-hodesh)' - Make a diary entry that tells the occurrence and ritual - announcement of each new Hebrew month. +Commands to Add to the Diary +---------------------------- -`%%(diary-parasha)' - Make a Saturday diary entry that tells the weekly synagogue - scripture reading. + While in the calendar, there are several commands to create diary +entries: -`%%(diary-sabbath-candles)' - Make a Friday diary entry that tells the _local time_ of Sabbath - candle lighting. +`i d' + Add a diary entry for the selected date (`insert-diary-entry'). -`%%(diary-omer)' - Make a diary entry that gives the omer count, when appropriate. +`i w' + Add a diary entry for the selected day of the week + (`insert-weekly-diary-entry'). -`%%(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.) +`i m' + Add a diary entry for the selected day of the month + (`insert-monthly-diary-entry'). - -File: xemacs.info, Node: Appt Customizing, Prev: Sexp Diary Entries, Up: Calendar Customization +`i y' + Add a diary entry for the selected day of the year + (`insert-yearly-diary-entry'). -Customizing Appointment Reminders -................................. + 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. - You can specify exactly how Emacs reminds you of an appointment, and -how far in advance it begins doing so, by setting these variables: + 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. -`appt-message-warning-time' - The time in minutes before an appointment that the reminder - begins. The default is 10 minutes. + 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. -`appt-audible' - If this is `t' (the default), Emacs rings the terminal bell for - appointment reminders. + When you modify the diary file, be sure to save the file before +exiting Emacs. -`appt-visible' - If this is `t' (the default), Emacs displays the appointment - message in echo area. + +File: xemacs.info, Node: Special Diary Entries, Prev: Adding to Diary, Up: Diary -`appt-display-mode-line' - If this is `t' (the default), Emacs displays the number of minutes - to the appointment on the mode line. +Special Diary Entries +--------------------- -`appt-msg-window' - If this is `t' (the default), Emacs displays the appointment - message in another window. + 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 -`appt-display-duration' - The number of seconds an appointment message is displayed. The - default is 5 seconds. + &%%(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 - -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::. +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.  -File: xemacs.info, Node: Shell, Next: Narrowing, Prev: Sorting, Up: Top - -Running Shell Commands from XEmacs -================================== +File: xemacs.info, Node: Calendar Customization, Prev: Diary, Up: Calendar/Diary - 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*'. +Customizing the Calendar and Diary +---------------------------------- -`M-!' - Run a specified shell command line and display the output - (`shell-command'). + There are many customizations that you can use to make the calendar +and diary suit your personal tastes. -`M-|' - Run a specified shell command line with region contents as input; - optionally replace the region with the output - (`shell-command-on-region'). +* Menu: -`M-x shell' - Run a subshell with input and output through an XEmacs buffer. - You can then give commands interactively. +* 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. -`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. + +File: xemacs.info, Node: Calendar Customizing, Next: Holiday Customizing, Up: Calendar Customization -* Menu: +Customizing the Calendar +........................ -* 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. + 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: - -File: xemacs.info, Node: Single Shell, Next: Interactive Shell, Prev: Shell, Up: Shell + (setq view-diary-entries-initially t) + (calendar) -Single Shell Commands ---------------------- +this displays both the calendar and diary windows whenever you start +Emacs. *Note Init File::. - `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. + 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. - -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 -. - - 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 , the previous shell input is inserted into the -buffer before point. Immediately typing again deletes that input -and inserts the one before it. By repeating you can move -backward through your commands until you find one you want to repeat. -You may then edit the command before typing if you wish. -moves forward through the command history, in case you moved backward -past the one you wanted while using . If you type the first few -characters of a previous command and then type , 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. + 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. - -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: - -`' - 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 - . - -`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 - quickly and go past the desired command - (`comint-next-input'). - -`' - Complete the file name preceding point (`comint-dynamic-complete'). + Similarly, setting the variable `mark-holidays-in-calendar' to `t' +marks holiday dates, either with a change of face or with an asterisk +(`*'). - -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. + 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. - -File: xemacs.info, Node: Term Mode, Next: Paging in Term, Prev: Terminal emulator, Up: Shell + The variable `calendar-load-hook' is a normal hook run when the +calendar package is first loaded (before actually starting to display +the calendar). -Term Mode ---------- + 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. - 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'. + 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'. - To switch between line and char mode, use these commands: - findex term-char-mode + (add-hook 'today-visible-calendar-hook 'calendar-star-date) -`C-c C-k' - Switch to line mode. Do nothing if already in line mode. +Another standard hook function marks the current date, either by +changing its face or by adding an asterisk. Here's how to use it: -`C-c C-j' - Switch to char mode. Do nothing if already in char mode. + (add-hook 'today-visible-calendar-hook 'calendar-mark-today) - The following commands are only available in Char mode: -`C-c C-c' - Send a literal to the sub-shell. +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. -`C-c C-x' - A prefix command to conveniently access the global commands. - For example, `C-c C-x o' invokes the global binding of `C-x o', - which is normally `other-window'. +A similar normal hook, `today-invisible-calendar-hook' is run if the +current date is _not_ visible in the window.