X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=info%2Fxemacs.info-14;h=f3b84780670e32cdfa91f438ab2807d2748d411a;hb=fe8e655a02c383927563d735c025f1044cf7d384;hp=0a7da911fcec142eb9c9f49843d499fcef30b18b;hpb=7d6edaefa00e7b7e102354283824a4f6a721b71a;p=chise%2Fxemacs-chise.git- diff --git a/info/xemacs.info-14 b/info/xemacs.info-14 index 0a7da91..f3b8478 100644 --- a/info/xemacs.info-14 +++ b/info/xemacs.info-14 @@ -30,6 +30,588 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  +File: xemacs.info, Node: Mail Mode, Prev: Mail Headers, Up: Sending Mail + +Mail Mode +========= + + The major mode used in the `*mail*' buffer is Mail mode. Mail mode +is similar to Text mode, but several commands are provided on the `C-c' +prefix. These commands all deal specifically with editing or sending +the message. + +`C-c C-s' + Send the message, and leave the `*mail*' buffer selected + (`mail-send'). + +`C-c C-c' + Send the message, and select some other buffer + (`mail-send-and-exit'). + +`C-c C-f C-t' + Move to the `To' header field, creating one if there is none + (`mail-to'). + +`C-c C-f C-s' + Move to the `Subject' header field, creating one if there is none + (`mail-subject'). + +`C-c C-f C-c' + Move to the `CC' header field, creating one if there is none + (`mail-cc'). + +`C-c C-w' + Insert the file `~/.signature' at the end of the message text + (`mail-signature'). + +`C-c C-y' + Yank the selected message (`mail-yank-original'). + +`C-c C-q' + Fill all paragraphs of yanked old messages, each individually + (`mail-fill-yanked-message'). + +`' + Pops up a menu of useful mail-mode commands. + + There are two ways to send a message. `C-c C-c' +(`mail-send-and-exit') is the usual way to send the message. It sends +the message and then deletes the window (if there is another window) or +switches to another buffer. It puts the `*mail*' buffer at the lowest +priority for automatic reselection, since you are finished with using +it. `C-c C-s' (`mail-send') sends the message and marks the `*mail*' +buffer unmodified, but leaves that buffer selected so that you can +modify the message (perhaps with new recipients) and send it again. + + Mail mode provides some other special commands that are useful for +editing the headers and text of the message before you send it. There +are three commands defined to move point to particular header fields, +all based on the prefix `C-c C-f' (`C-f' is for "field"). They are +`C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s' +(`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc') +for the `CC' field. These fields have special motion commands because +they are edited most frequently. + + `C-c C-w' (`mail-signature') adds a standard piece of text at the +end of the message to say more about who you are. The text comes from +the file `.signature' in your home directory. + + When you use an Rmail command to send mail from the Rmail mail +reader, you can use `C-c C-y' `mail-yank-original' inside the `*mail*' +buffer to insert the text of the message you are replying to. Normally +Rmail indents each line of that message four spaces and eliminates most +header fields. A numeric argument specifies the number of spaces to +indent. An argument of just `C-u' says not to indent at all and not to +eliminate anything. `C-c C-y' always uses the current message from the +`RMAIL' buffer, so you can insert several old messages by selecting one +in `RMAIL', switching to `*mail*' and yanking it, then switching back +to `RMAIL' to select another. + + After using `C-c C-y', you can use the command `C-c C-q' +(`mail-fill-yanked-message') to fill the paragraphs of the yanked old +message or messages. One use of `C-c C-q' fills all such paragraphs, +each one separately. + + Clicking the right mouse button in a mail buffer pops up a menu of +the above commands, for easy access. + + Turning on Mail mode (which `C-x m' does automatically) calls the +value of `text-mode-hook', if it is not void or `nil', and then calls +the value of `mail-mode-hook' if that is not void or `nil'. + + +File: xemacs.info, Node: Reading Mail, Next: Calendar/Diary, Prev: Sending Mail, Up: Top + +Reading Mail +************ + + XEmacs provides three separate mail-reading packages. Each one +comes with its own manual, which is included standard with the XEmacs +distribution. + + The recommended mail-reading package for new users is VM. VM works +with standard Unix-mail-format folders and was designed as a replacement +for the older Rmail. + + XEmacs also provides a sophisticated and comfortable front-end to the +MH mail-processing system, called `mh-e'. Unlike in other mail +programs, folders in MH are stored as file-system directories, with +each message occupying one (numbered) file. This facilitates working +with mail using shell commands, and many other features of MH are also +designed to integrate well with the shell and with shell scripts. Keep +in mind, however, that in order to use mh-e you must have the MH +mail-processing system installed on your computer. + + Finally, XEmacs provides the Rmail package. Rmail is (currently) the +only mail reading package distributed with FSF GNU Emacs, and is +powerful in its own right. However, it stores mail folders in a special +format called `Babyl', that is incompatible with all other +frequently-used mail programs. A utility program is provided for +converting Babyl folders to standard Unix-mail format; however, unless +you already have mail in Babyl-format folders, you should consider +using VM or mh-e instead. (If at times you have to use FSF Emacs, it is +not hard to obtain and install VM for that editor.) + + +File: xemacs.info, Node: Calendar/Diary, Next: Sorting, Prev: Reading Mail, Up: Top + +Calendar Mode and the Diary +=========================== + + Emacs provides the functions of a desk calendar, with a diary of +planned or past events. To enter the calendar, type `M-x calendar'; +this displays a three-month calendar centered on the current month, with +point on the current date. With a numeric argument, as in `C-u M-x +calendar', it prompts you for the month and year to be the center of the +three-month calendar. The calendar uses its own buffer, whose major +mode is Calendar mode. + + `Button2' in the calendar brings up a menu of operations on a +particular date; `Buttons3' brings up a menu of commonly used calendar +features that are independent of any particular date. To exit the +calendar, type `q'. *Note Customizing the Calendar and Diary: +(elisp)Calendar, for customization information about the calendar and +diary. + +* Menu: + +* Calendar Motion:: Moving through the calendar; selecting a date. +* Scroll Calendar:: Bringing earlier or later months onto the screen. +* Mark and Region:: Remembering dates, the mark ring. +* General Calendar:: Exiting or recomputing the calendar. +* LaTeX Calendar:: Print a calendar using LaTeX. +* Holidays:: Displaying dates of holidays. +* Sunrise/Sunset:: Displaying local times of sunrise and sunset. +* Lunar Phases:: Displaying phases of the moon. +* Other Calendars:: Converting dates to other calendar systems. +* Diary:: Displaying events from your diary. +* Calendar Customization:: Altering the behavior of the features above. + + +File: xemacs.info, Node: Calendar Motion, Next: Scroll Calendar, Prev: Calendar/Diary, Up: Calendar/Diary + +Movement in the Calendar +------------------------ + + Calendar mode lets you move through the calendar in logical units of +time such as days, weeks, months, and years. If you move outside the +three months originally displayed, the calendar display "scrolls" +automatically through time to make the selected date visible. Moving to +a date lets you view its holidays or diary entries, or convert it to +other calendars; moving longer time periods is also useful simply to +scroll the calendar. + +* Menu: + +* Calendar Unit Motion:: Moving by days, weeks, months, and years. +* Move to Beginning or End:: Moving to start/end of weeks, months, and years. +* Specified Dates:: Moving to the current date or another + specific date. + + +File: xemacs.info, Node: Calendar Unit Motion, Next: Move to Beginning or End, Prev: Calendar Motion, Up: Calendar Motion + +Motion by Integral Days, Weeks, Months, Years +............................................. + + The commands for movement in the calendar buffer parallel the +commands for movement in text. You can move forward and backward by +days, weeks, months, and years. + +`C-f' + Move point one day forward (`calendar-forward-day'). + +`C-b' + Move point one day backward (`calendar-backward-day'). + +`C-n' + Move point one week forward (`calendar-forward-week'). + +`C-p' + Move point one week backward (`calendar-backward-week'). + +`M-}' + Move point one month forward (`calendar-forward-month'). + +`M-{' + Move point one month backward (`calendar-backward-month'). + +`C-x ]' + Move point one year forward (`calendar-forward-year'). + +`C-x [' + Move point one year backward (`calendar-backward-year'). + + The day and week commands are natural analogues of the usual Emacs +commands for moving by characters and by lines. Just as `C-n' usually +moves to the same column in the following line, in Calendar mode it +moves to the same day in the following week. And `C-p' moves to the +same day in the previous week. + + The arrow keys are equivalent to `C-f', `C-b', `C-n' and `C-p', just +as they normally are in other modes. + + The commands for motion by months and years work like those for +weeks, but move a larger distance. The month commands `M-}' and `M-{' +move forward or backward by an entire month's time. The year commands +`C-x ]' and `C-x [' move forward or backward a whole year. + + The easiest way to remember these commands is to consider months and +years analogous to paragraphs and pages of text, respectively. But the +commands themselves are not quite analogous. The ordinary Emacs +paragraph commands move to the beginning or end of a paragraph, whereas +these month and year commands move by an entire month or an entire +year, which usually involves skipping across the end of a month or year. + + All these commands accept a numeric argument as a repeat count. For +convenience, the digit keys and the minus sign specify numeric +arguments in Calendar mode even without the Meta modifier. For example, +`100 C-f' moves point 100 days forward from its present location. + + +File: xemacs.info, Node: Move to Beginning or End, Next: Specified Dates, Prev: Calendar Unit Motion, Up: Calendar Motion + +Beginning or End of Week, Month or Year +....................................... + + A week (or month, or year) is not just a quantity of days; we think +of weeks (months, years) as starting on particular dates. So Calendar +mode provides commands to move to the beginning or end of a week, month +or year: + +`C-a' + Move point to start of week (`calendar-beginning-of-week'). + +`C-e' + Move point to end of week (`calendar-end-of-week'). + +`M-a' + Move point to start of month (`calendar-beginning-of-month'). + +`M-e' + Move point to end of month (`calendar-end-of-month'). + +`M-<' + Move point to start of year (`calendar-beginning-of-year'). + +`M->' + Move point to end of year (`calendar-end-of-year'). + + These commands also take numeric arguments as repeat counts, with the +repeat count indicating how many weeks, months, or years to move +backward or forward. + + By default, weeks begin on Sunday. To make them begin on Monday +instead, set the variable `calendar-week-start-day' to 1. + + +File: xemacs.info, Node: Specified Dates, Prev: Move to Beginning or End, Up: Calendar Motion + +Particular Dates +................ + + Calendar mode provides commands for moving to a particular date +specified in various ways. + +`g d' + Move point to specified date (`calendar-goto-date'). + +`o' + Center calendar around specified month (`calendar-other-month'). + +`.' + Move point to today's date (`calendar-goto-today'). + + `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'. + + `o' (`calendar-other-month') prompts for a month and year, then +centers the three-month calendar around that month. + + You can return to today's date with `.' (`calendar-goto-today'). + + +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. + + +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. + + +File: xemacs.info, Node: General Calendar, Next: LaTeX Calendar, Prev: Mark and Region, Up: Calendar/Diary + +Miscellaneous Calendar Commands +------------------------------- + +`p d' + Display day-in-year (`calendar-print-day-of-year'). + +`?' + Briefly describe calendar commands (`describe-calendar-mode'). + +`C-c C-l' + Regenerate the calendar window (`redraw-calendar'). + +`SPC' + Scroll the next window (`scroll-other-window'). + +`q' + Exit from calendar (`exit-calendar'). + + 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. + + To display a brief description of the calendar commands, type `?' +(`describe-calendar-mode'). For a fuller description, type `C-h m'. + + 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. + + 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.) + + 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. + + 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: LaTeX Calendar, Next: Holidays, Prev: General Calendar, Up: Calendar/Diary + +LaTeX Calendar +============== + + 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. + +`t m' + Generate a one-month calendar (`cal-tex-cursor-month'). + +`t M' + Generate a sideways-printing one-month calendar + (`cal-tex-cursor-month-landscape'). + +`t d' + Generate a one-day calendar (`cal-tex-cursor-day'). + +`t w 1' + Generate a one-page calendar for one week (`cal-tex-cursor-week'). + +`t w 2' + Generate a two-page calendar for one week (`cal-tex-cursor-week2'). + +`t w 3' + Generate an ISO-style calendar for one week + (`cal-tex-cursor-week-iso'). + +`t w 4' + Generate a calendar for one Monday-starting week + (`cal-tex-cursor-week-monday'). + +`t f w' + Generate a Filofax-style two-weeks-at-a-glance calendar + (`cal-tex-cursor-filofax-2week'). + +`t f W' + Generate a Filofax-style one-week-at-a-glance calendar + (`cal-tex-cursor-filofax-week'). + +`t y' + Generate a calendar for one year (`cal-tex-cursor-year'). + +`t Y' + Generate a sideways-printing calendar for one year + (`cal-tex-cursor-year-landscape'). + +`t f y' + Generate a Filofax-style calendar for one year + (`cal-tex-cursor-filofax-year'). + + 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). + + 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: 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: Sunrise/Sunset, Next: Lunar Phases, Prev: Holidays, Up: Calendar/Diary Times of Sunrise and Sunset @@ -95,8 +677,8 @@ 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 `.emacs' file. And -when you install Emacs on a machine, you can create a `default.el' file +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::. @@ -551,10 +1133,10 @@ date, independently of the calendar display, and optionally for the next few days as well; the variable `number-of-diary-entries' specifies how many days to include (*note Customization::). - If you put `(diary)' in your `.emacs' file, this automatically -displays a window with the day's diary entries, when you enter Emacs. -The mode line of the displayed window shows the date and any holidays -that fall on that date. + If you put `(diary)' in your init file, this automatically displays +a window with the day's diary entries, when you enter Emacs. *Note +Init File::. The mode line of the displayed window shows the date and +any holidays that fall on that date. Many users like to receive notice of events in their diary as email. To send such mail to yourself, use the command `M-x @@ -675,536 +1257,3 @@ 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. - -File: xemacs.info, Node: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary - -Commands to Add to the Diary ----------------------------- - - While in the calendar, there are several commands to create diary -entries: - -`i d' - Add a diary entry for the selected date (`insert-diary-entry'). - -`i w' - Add a diary entry for the selected day of the week - (`insert-weekly-diary-entry'). - -`i m' - Add a diary entry for the selected day of the month - (`insert-monthly-diary-entry'). - -`i y' - Add a diary entry for the selected day of the year - (`insert-yearly-diary-entry'). - - You can make a diary entry for a specific date by selecting that date -in the calendar window and typing the `i d' command. This command -displays the end of your diary file in another window and inserts the -date; you can then type the rest of the diary entry. - - If you want to make a diary entry that applies to a specific day of -the week, select that day of the week (any occurrence will do) and type -`i w'. This inserts the day-of-week as a generic date; you can then -type the rest of the diary entry. You can make a monthly diary entry in -the same fashion. Select the day of the month, use the `i m' command, -and type rest of the entry. Similarly, you can insert a yearly diary -entry with the `i y' command. - - All of the above commands make marking diary entries by default. To -make a nonmarking diary entry, give a numeric argument to the command. -For example, `C-u i w' makes a nonmarking weekly diary entry. - - When you modify the diary file, be sure to save the file before -exiting Emacs. - - -File: xemacs.info, Node: Special Diary Entries, Prev: Adding to Diary, Up: Diary - -Special Diary Entries ---------------------- - - In addition to entries based on calendar dates, the diary file can -contain "sexp entries" for regular events such as anniversaries. These -entries are based on Lisp expressions (sexps) that Emacs evaluates as -it scans the diary file. Instead of a date, a sexp entry contains `%%' -followed by a Lisp expression which must begin and end with -parentheses. The Lisp expression determines which dates the entry -applies to. - - Calendar mode provides commands to insert certain commonly used sexp -entries: - -`i a' - Add an anniversary diary entry for the selected date - (`insert-anniversary-diary-entry'). - -`i b' - Add a block diary entry for the current region - (`insert-block-diary-entry'). - -`i c' - Add a cyclic diary entry starting at the date - (`insert-cyclic-diary-entry'). - - If you want to make a diary entry that applies to the anniversary of -a specific date, move point to that date and use the `i a' command. -This displays the end of your diary file in another window and inserts -the anniversary description; you can then type the rest of the diary -entry. The entry looks like this: - - The effect of `i a' is to add a `diary-anniversary' sexp to your -diary file. You can also add one manually, for instance: - - %%(diary-anniversary 10 31 1948) Arthur's birthday - -This entry applies to October 31 in any year after 1948; `10 31 1948' -specifies the date. (If you are using the European calendar style, the -month and day are interchanged.) The reason this expression requires a -beginning year is that advanced diary functions can use it to calculate -the number of elapsed years. - - A "block" diary entry applies to a specified range of consecutive -dates. Here is a block diary entry that applies to all dates from June -24, 1990 through July 10, 1990: - - %%(diary-block 6 24 1990 7 10 1990) Vacation - -The `6 24 1990' indicates the starting date and the `7 10 1990' -indicates the stopping date. (Again, if you are using the European -calendar style, the month and day are interchanged.) - - To insert a block entry, place point and the mark on the two dates -that begin and end the range, and type `i b'. This command displays -the end of your diary file in another window and inserts the block -description; you can then type the diary entry. - - "Cyclic" diary entries repeat after a fixed interval of days. To -create one, select the starting date and use the `i c' command. The -command prompts for the length of interval, then inserts the entry, -which looks like this: - - %%(diary-cyclic 50 3 1 1990) Renew medication - -This entry applies to March 1, 1990 and every 50th day following; `3 1 -1990' specifies the starting date. (If you are using the European -calendar style, the month and day are interchanged.) - - All three of these commands make marking diary entries. To insert a -nonmarking entry, give a numeric argument to the command. For example, -`C-u i a' makes a nonmarking anniversary diary entry. - - Marking sexp diary entries in the calendar is _extremely_ -time-consuming, since every date visible in the calendar window must be -individually checked. So it's a good idea to make sexp diary entries -nonmarking (with `&') when possible. - - Another sophisticated kind of sexp entry, a "floating" diary entry, -specifies a regularly occurring event by offsets specified in days, -weeks, and months. It is comparable to a crontab entry interpreted by -the `cron' utility. Here is a nonmarking, floating diary entry that -applies to the last Thursday in November: - - &%%(diary-float 11 4 -1) American Thanksgiving - -The 11 specifies November (the eleventh month), the 4 specifies Thursday -(the fourth day of the week, where Sunday is numbered zero), and the -1 -specifies "last" (1 would mean "first", 2 would mean "second", -2 would -mean "second-to-last", and so on). The month can be a single month or -a list of months. Thus you could change the 11 above to `'(1 2 3)' and -have the entry apply to the last Thursday of January, February, and -March. If the month is `t', the entry applies to all months of the -year. - - The sexp feature of the diary allows you to specify diary entries -based on any Emacs Lisp expression. You can use the library of built-in -functions or you can write your own functions. The built-in functions -include the ones shown in this section, plus a few others (*note Sexp -Diary Entries::). - - The generality of sexps lets you specify any diary entry that you can -describe algorithmically. Suppose you get paid on the 21st of the month -if it is a weekday, and to the Friday before if the 21st is on a -weekend. The diary entry - - &%%(let ((dayname (calendar-day-of-week date)) - (day (car (cdr date)))) - (or (and (= day 21) (memq dayname '(1 2 3 4 5))) - (and (memq day '(19 20)) (= dayname 5))) - ) Pay check deposited - -to just those dates. This example illustrates how the sexp can depend -on the variable `date'; this variable is a list (MONTH DAY YEAR) that -gives the Gregorian date for which the diary entries are being found. -If the value of the sexp is `t', the entry applies to that date. If -the sexp evaluates to `nil', the entry does _not_ apply to that date. - - -File: xemacs.info, Node: Calendar Customization, Prev: Diary, Up: Calendar/Diary - -Customizing the Calendar and Diary ----------------------------------- - - There are many customizations that you can use to make the calendar -and diary suit your personal tastes. - -* Menu: - -* 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. - - -File: xemacs.info, Node: Calendar Customizing, Next: Holiday Customizing, Up: Calendar Customization - -Customizing the Calendar -........................ - - If you set the variable `view-diary-entries-initially' to `t', -calling up the calendar automatically displays the diary entries for -the current date as well. The diary dates appear only if the current -date is visible. If you add both of the following lines to your -`.emacs' file: - - (setq view-diary-entries-initially t) - (calendar) - -this displays both the calendar and diary windows whenever you start -Emacs. - - Similarly, if you set the variable -`view-calendar-holidays-initially' to `t', entering the calendar -automatically displays a list of holidays for the current three-month -period. The holiday list appears in a separate window. - - You can set the variable `mark-diary-entries-in-calendar' to `t' in -order to mark any dates with diary entries. This takes effect whenever -the calendar window contents are recomputed. There are two ways of -marking these dates: by changing the face (*note Faces::), if the -display supports that, or by placing a plus sign (`+') beside the date -otherwise. - - Similarly, setting the variable `mark-holidays-in-calendar' to `t' -marks holiday dates, either with a change of face or with an asterisk -(`*'). - - The variable `calendar-holiday-marker' specifies how to mark a date -as being a holiday. Its value may be a character to insert next to the -date, or a face name to use for displaying the date. Likewise, the -variable `diary-entry-marker' specifies how to mark a date that has -diary entries. The calendar creates faces named `holiday-face' and -`diary-face' for these purposes; those symbols are the default values -of these variables, when Emacs supports multiple faces on your terminal. - - The variable `calendar-load-hook' is a normal hook run when the -calendar package is first loaded (before actually starting to display -the calendar). - - Starting the calendar runs the normal hook -`initial-calendar-window-hook'. Recomputation of the calendar display -does not run this hook. But if you leave the calendar with the `q' -command and reenter it, the hook runs again. - - The variable `today-visible-calendar-hook' is a normal hook run -after the calendar buffer has been prepared with the calendar when the -current date is visible in the window. One use of this hook is to -replace today's date with asterisks; to do that, use the hook function -`calendar-star-date'. - - (add-hook 'today-visible-calendar-hook 'calendar-star-date) - -Another standard hook function marks the current date, either by -changing its face or by adding an asterisk. Here's how to use it: - - (add-hook 'today-visible-calendar-hook 'calendar-mark-today) - -The variable `calendar-today-marker' specifies how to mark today's -date. Its value should be a character to insert next to the date or a -face name to use for displaying the date. A face named -`calendar-today-face' is provided for this purpose; that symbol is the -default for this variable when Emacs supports multiple faces on your -terminal. - -A similar normal hook, `today-invisible-calendar-hook' is run if the -current date is _not_ visible in the window. - - -File: xemacs.info, Node: Holiday Customizing, Next: Date Display Format, Prev: Calendar Customizing, Up: Calendar Customization - -Customizing the Holidays -........................ - - 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") ... ) - - -File: xemacs.info, Node: Date Display Format, Next: Time Display Format, Prev: Holiday Customizing, Up: Calendar Customization - -Date Display Format -................... - - 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: - - ((if dayname (concat dayname ", ")) monthname " " day ", " year) - -while in the European style this value is the default: - - ((if dayname (concat dayname ", ")) day " " monthname " " year) - - + The ISO standard date representation is this: - - (year "-" month "-" day) - -This specifies a typical American format: - - (month "/" day "/" (substring year -2)) - - -File: xemacs.info, Node: Time Display Format, Next: Daylight Savings, Prev: Date Display Format, Up: Calendar Customization - -Time Display Format -................... - - 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: - - (12-hours ":" minutes am-pm - (if time-zone " (") time-zone (if time-zone ")")) - -Here is a value that provides European style times: - - (24-hours ":" minutes - (if time-zone " (") time-zone (if time-zone ")")) - -gives military-style times like `21:07 (UT)' if time zone names are -defined, and times like `21:07' if they are not. - - -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. -