update.
[chise/xemacs-chise.git-] / info / xemacs.info-13
1 This is ../info/xemacs.info, produced by makeinfo version 4.0 from
2 xemacs/xemacs.texi.
3
4 INFO-DIR-SECTION XEmacs Editor
5 START-INFO-DIR-ENTRY
6 * XEmacs: (xemacs).             XEmacs Editor.
7 END-INFO-DIR-ENTRY
8
9    This file documents the XEmacs editor.
10
11    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
12 1991, 1992, 1993, 1994 Lucid, Inc.  Copyright (C) 1993, 1994 Sun
13 Microsystems, Inc.  Copyright (C) 1995 Amdahl Corporation.
14
15    Permission is granted to make and distribute verbatim copies of this
16 manual provided the copyright notice and this permission notice are
17 preserved on all copies.
18
19    Permission is granted to copy and distribute modified versions of
20 this manual under the conditions for verbatim copying, provided also
21 that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
22 General Public License" are included exactly as in the original, and
23 provided that the entire resulting derived work is distributed under the
24 terms of a permission notice identical to this one.
25
26    Permission is granted to copy and distribute translations of this
27 manual into another language, under the above conditions for modified
28 versions, except that the sections entitled "The GNU Manifesto",
29 "Distribution" and "GNU General Public License" may be included in a
30 translation approved by the author instead of in the original English.
31
32 \1f
33 File: xemacs.info,  Node: Building Packages,  Prev: Using Packages,  Up: Packages
34
35    Source packages are available from the `packages/source-packages'
36 subdirectory of your favorite XEmacs distribution site.  Alternatively,
37 they are available via CVS from `cvs.xemacs.org'.  Look at
38 `http://cvs.xemacs.org' for instructions.
39
40 Prerequisites for Building Source Packages
41 ------------------------------------------
42
43    You must have GNU `cp', GNU `install' (or a BSD compatible `install'
44 program) GNU `make' (3.75 or later preferred), `makeinfo' (1.68 from
45 `texinfo-3.11' or later required), GNU `tar' and XEmacs 21.0.  The
46 source packages will untar into a correct directory structure.  At the
47 top level you must have `XEmacs.rules' and `package-compile.el'.  These
48 files are available from the XEmacs FTP site from the same place you
49 obtained your source package distributions.
50
51 What You Can Do With Source Packages
52 ------------------------------------
53
54    NB:  A global build operation doesn't exist yet as of 13 January
55 1998.
56
57    Source packages are most useful for creating XEmacs package tarballs
58 for installation into your own XEmacs installations or for distributing
59 to others.
60
61    Supported operations from `make' are:
62
63 `clean'
64      Remove all built files except `auto-autoloads.el' and
65      `custom-load.el'.
66
67 `distclean'
68      Remove XEmacs backups as well as the files deleted by `make clean'.
69
70 `all'
71      Bytecompile all files, build and bytecompile byproduct files like
72      `auto-autoloads.el' and `custom-load.el'.  Create info version of
73      TeXinfo documentation if present.
74
75 `srckit'
76      Usually aliased to `make srckit-std'.  This does a `make
77      distclean' and creates a package source tarball in the staging
78      directory.  This is generally only of use for package maintainers.
79
80 `binkit'
81      May be aliased to `binkit-sourceonly', `binkit-sourceinfo',
82      `binkit-sourcedata', or `binkit-sourcedatainfo'. `sourceonly'
83      indicates there is nothing to install in a data directory or info
84      directory.  `sourceinfo' indicates that source and info files are
85      to be installed.  `sourcedata' indicates that source and etc
86      (data) files are to be installed.  `sourcedatainfo' indicates
87      source, etc (data), and info files are to be installed.  A few
88      packages have needs beyond the basic templates so this is not yet
89      complete.
90
91 `dist'
92      Runs the rules `srckit' followed by `binkit'.  This is primarily
93      of use by XEmacs maintainers producing files for distribution.
94
95 \1f
96 File: xemacs.info,  Node: Abbrevs,  Next: Picture,  Prev: Packages,  Up: Top
97
98 Abbrevs
99 *******
100
101    An "abbrev" is a word which "expands" into some different text.
102 Abbrevs are defined by the user to expand in specific ways.  For
103 example, you might define `foo' as an abbrev expanding to `find outer
104 otter'.  With this abbrev defined, you would be able to get `find outer
105 otter ' into the buffer by typing `f o o <SPC>'.
106
107    Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
108 Disabling Abbrev mode does not cause abbrev definitions to be discarded,
109 but they do not expand until Abbrev mode is enabled again.  The command
110 `M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
111 turns Abbrev mode on if the argument is positive, off otherwise.  *Note
112 Minor Modes::.  `abbrev-mode' is also a variable; Abbrev mode is on
113 when the variable is non-`nil'.  The variable `abbrev-mode'
114 automatically becomes local to the current buffer when it is set.
115
116    Abbrev definitions can be "mode-specific"--active only in one major
117 mode.  Abbrevs can also have "global" definitions that are active in
118 all major modes.  The same abbrev can have a global definition and
119 various mode-specific definitions for different major modes.  A
120 mode-specific definition for the current major mode overrides a global
121 definition.
122
123    You can define Abbrevs interactively during an editing session.  You
124 can also save lists of abbrev definitions in files and reload them in
125 later sessions.  Some users keep extensive lists of abbrevs that they
126 load in every session.
127
128    A second kind of abbreviation facility is called the "dynamic
129 expansion".  Dynamic abbrev expansion happens only when you give an
130 explicit command and the result of the expansion depends only on the
131 current contents of the buffer.  *Note Dynamic Abbrevs::.
132
133 * Menu:
134
135 * Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
136 * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
137 * Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
138 * Saving Abbrevs::    Saving the entire list of abbrevs for another session.
139 * Dynamic Abbrevs::   Abbreviations for words already in the buffer.
140
141 \1f
142 File: xemacs.info,  Node: Defining Abbrevs,  Next: Expanding Abbrevs,  Prev: Abbrevs,  Up: Abbrevs
143
144 Defining Abbrevs
145 ================
146
147 `C-x a g'
148      Define an abbrev to expand into some text before point
149      (`add-global-abbrev').
150
151 `C-x a l'
152      Similar, but define an abbrev available only in the current major
153      mode (`add-mode-abbrev').
154
155 `C-x a i g'
156      Define a word in the buffer as an abbrev
157      (`inverse-add-global-abbrev').
158
159 `C-x a i l'
160      Define a word in the buffer as a mode-specific abbrev
161      (`inverse-add-mode-abbrev').
162
163 `M-x kill-all-abbrevs'
164      After this command, no abbrev definitions remain in effect.
165
166    The usual way to define an abbrev is to enter the text you want the
167 abbrev to expand to, position point after it, and type `C-x a g'
168 (`add-global-abbrev').  This reads the abbrev itself using the
169 minibuffer, and then defines it as an abbrev for one or more words
170 before point.  Use a numeric argument to say how many words before point
171 should be taken as the expansion.  For example, to define the abbrev
172 `foo' as in the example above, insert the text `find outer otter', then
173 type
174 `C-u 3 C-x a g f o o <RET>'.
175
176    An argument of zero to `C-x a g' means to use the contents of the
177 region as the expansion of the abbrev being defined.
178
179    The command `C-x a l' (`add-mode-abbrev') is similar, but defines a
180 mode-specific abbrev.  Mode-specific abbrevs are active only in a
181 particular major mode.  `C-x a l' defines an abbrev for the major mode
182 in effect at the time `C-x a l' is typed.  The arguments work the same
183 way they do for `C-x a g'.
184
185    If the text of an abbrev you want is already in the buffer instead of
186 the expansion, use command `C-x a i g' (`inverse-add-global-abbrev')
187 instead of `C-x a g', or use `C-x a i l' (`inverse-add-mode-abbrev')
188 instead of `C-x a l'.  These commands are called "inverse" because they
189 invert the meaning of the argument found in the buffer and the argument
190 read using the minibuffer.
191
192    To change the definition of an abbrev, just add the new definition.
193 You will be asked to confirm if the abbrev has a prior definition.  To
194 remove an abbrev definition, give a negative argument to `C-x a g' or
195 `C-x a l'.  You must choose the command to specify whether to kill a
196 global definition or a mode-specific definition for the current mode,
197 since those two definitions are independent for one abbrev.
198
199    `M-x kill-all-abbrevs' removes all existing abbrev definitions.
200
201 \1f
202 File: xemacs.info,  Node: Expanding Abbrevs,  Next: Editing Abbrevs,  Prev: Defining Abbrevs,  Up: Abbrevs
203
204 Controlling Abbrev Expansion
205 ============================
206
207    An abbrev expands whenever it is in a buffer just before point and
208 you type a self-inserting punctuation character (<SPC>, comma, etc.).
209 Most often an abbrev is used by inserting the abbrev followed by
210 punctuation.
211
212    Abbrev expansion preserves case; thus, `foo' expands into `find
213 outer otter', `Foo' into `Find outer otter', and `FOO' into `FIND OUTER
214 OTTER' or `Find Outer Otter' according to the variable
215 `abbrev-all-caps' (a non-`nil' value chooses the first of the two
216 expansions).
217
218    Two commands are available to control abbrev expansion:
219
220 `M-''
221      Separate a prefix from a following abbrev to be expanded
222      (`abbrev-prefix-mark').
223
224 `C-x a e'
225      Expand the abbrev before point (`expand-abbrev').  This is
226      effective even when Abbrev mode is not enabled.
227
228 `M-x unexpand-abbrev'
229      Undo last abbrev expansion.
230
231 `M-x expand-region-abbrevs'
232      Expand some or all abbrevs found in the region.
233
234    You may wish to expand an abbrev with a prefix attached.  For
235 example, if `cnst' expands into `construction', you may want to use it
236 to enter `reconstruction'.  It does not work to type `recnst', because
237 that is not necessarily a defined abbrev.  Instead, you can use the
238 command `M-'' (`abbrev-prefix-mark') between the prefix `re' and the
239 abbrev `cnst'.  First, insert `re'.  Then type `M-''; this inserts a
240 minus sign in the buffer to indicate that it has done its work.  Then
241 insert the abbrev `cnst'.  The buffer now contains `re-cnst'.  Now
242 insert a punctuation character to expand the abbrev `cnst' into
243 `construction'.  The minus sign is deleted at this point by `M-''.  The
244 resulting text is the desired `reconstruction'.
245
246    If you actually want the text of the abbrev in the buffer, rather
247 than its expansion, insert the following punctuation with `C-q'.  Thus,
248 `foo C-q -' leaves `foo-' in the buffer.
249
250    If you expand an abbrev by mistake, you can undo the expansion
251 (replace the expansion by the original abbrev text) with `M-x
252 unexpand-abbrev'.  You can also use `C-_' (`undo') to undo the
253 expansion; but that will first undo the insertion of the punctuation
254 character.
255
256    `M-x expand-region-abbrevs' searches through the region for defined
257 abbrevs, and  offers to replace each one it finds with its expansion.
258 This command is useful if you have typed text using abbrevs but forgot
259 to turn on Abbrev mode first.  It may also be useful together with a
260 special set of abbrev definitions for making several global
261 replacements at once.  The command is effective even if Abbrev mode is
262 not enabled.
263
264 \1f
265 File: xemacs.info,  Node: Editing Abbrevs,  Next: Saving Abbrevs,  Prev: Expanding Abbrevs,  Up: Abbrevs
266
267 Examining and Editing Abbrevs
268 =============================
269
270 `M-x list-abbrevs'
271      Print a list of all abbrev definitions.
272
273 `M-x edit-abbrevs'
274      Edit a list of abbrevs; you can add, alter, or remove definitions.
275
276    The output from `M-x list-abbrevs' looks like this:
277
278      (lisp-mode-abbrev-table)
279      "dk"           0    "define-key"
280      (global-abbrev-table)
281      "dfn"          0    "definition"
282
283 (Some blank lines of no semantic significance, and some other abbrev
284 tables, have been omitted.)
285
286    A line containing a name in parentheses is the header for abbrevs in
287 a particular abbrev table; `global-abbrev-table' contains all the global
288 abbrevs, and the other abbrev tables that are named after major modes
289 contain the mode-specific abbrevs.
290
291    Within each abbrev table, each non-blank line defines one abbrev.
292 The word at the beginning is the abbrev.  The number that appears is
293 the number of times the abbrev has been expanded.  Emacs keeps track of
294 this to help you see which abbrevs you actually use, in case you want
295 to eliminate those that you don't use often.  The string at the end of
296 the line is the expansion.
297
298    `M-x edit-abbrevs' allows you to add, change or kill abbrev
299 definitions by editing a list of them in an Emacs buffer.  The list has
300 the format described above.  The buffer of abbrevs is called
301 `*Abbrevs*', and is in Edit-Abbrevs mode.  This mode redefines the key
302 `C-c C-c' to install the abbrev definitions as specified in the buffer.
303 The  `edit-abbrevs-redefine' command does this.  Any abbrevs not
304 described in the buffer are eliminated when this is done.
305
306    `edit-abbrevs' is actually the same as `list-abbrevs', except that
307 it selects the buffer `*Abbrevs*' whereas `list-abbrevs' merely
308 displays it in another window.
309
310 \1f
311 File: xemacs.info,  Node: Saving Abbrevs,  Next: Dynamic Abbrevs,  Prev: Editing Abbrevs,  Up: Abbrevs
312
313 Saving Abbrevs
314 ==============
315
316    These commands allow you to keep abbrev definitions between editing
317 sessions.
318
319 `M-x write-abbrev-file'
320      Write a file describing all defined abbrevs.
321
322 `M-x read-abbrev-file'
323      Read such an abbrev file and define abbrevs as specified there.
324
325 `M-x quietly-read-abbrev-file'
326      Similar, but do not display a message about what is going on.
327
328 `M-x define-abbrevs'
329      Define abbrevs from buffer.
330
331 `M-x insert-abbrevs'
332      Insert all abbrevs and their expansions into the buffer.
333
334    Use `M-x write-abbrev-file' to save abbrev definitions for use in a
335 later session.  The command reads a file name using the minibuffer and
336 writes a description of all current abbrev definitions into the
337 specified file.  The text stored in the file looks like the output of
338 `M-x list-abbrevs'.
339
340    `M-x read-abbrev-file' prompts for a file name using the minibuffer
341 and reads the specified file, defining abbrevs according to its
342 contents.  `M-x quietly-read-abbrev-file' is the same but does not
343 display a message in the echo area; it is actually useful primarily in
344 the `.emacs' file.  If you give an empty argument to either of these
345 functions, the file name Emacs uses is the value of the variable
346 `abbrev-file-name', which is by default `"~/.abbrev_defs"'.
347
348    Emacs offers to save abbrevs automatically if you have changed any of
349 them, whenever it offers to save all files (for `C-x s' or `C-x C-c').
350 Set the variable `save-abbrevs' to `nil' to inhibit this feature.
351
352    The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are
353 similar to the previous commands but work on text in an Emacs buffer.
354 `M-x insert-abbrevs' inserts text into the current buffer before point,
355 describing all current abbrev definitions; `M-x define-abbrevs' parses
356 the entire current buffer and defines abbrevs accordingly.
357
358 \1f
359 File: xemacs.info,  Node: Dynamic Abbrevs,  Prev: Saving Abbrevs,  Up: Abbrevs
360
361 Dynamic Abbrev Expansion
362 ========================
363
364    The abbrev facility described above operates automatically as you
365 insert text, but all abbrevs must be defined explicitly.  By contrast,
366 "dynamic abbrevs" allow the meanings of abbrevs to be determined
367 automatically from the contents of the buffer, but dynamic abbrev
368 expansion happens only when you request it explicitly.
369
370 `M-/'
371      Expand the word in the buffer before point as a "dynamic abbrev",
372      by searching in the buffer for words starting with that
373      abbreviation (`dabbrev-expand').
374
375    For example, if the buffer contains `does this follow ' and you type
376 `f o M-/', the effect is to insert `follow' because that is the last
377 word in the buffer that starts with `fo'.  A numeric argument to `M-/'
378 says to take the second, third, etc. distinct expansion found looking
379 backward from point.  Repeating `M-/' searches for an alternative
380 expansion by looking farther back.  After the entire buffer before
381 point has been considered, the buffer after point is searched.
382
383    Dynamic abbrev expansion is completely independent of Abbrev mode;
384 the expansion of a word with `M-/' is completely independent of whether
385 it has a definition as an ordinary abbrev.
386
387 \1f
388 File: xemacs.info,  Node: Picture,  Next: Sending Mail,  Prev: Abbrevs,  Up: Top
389
390 Editing Pictures
391 ****************
392
393    If you want to create a picture made out of text characters (for
394 example, a picture of the division of a register into fields, as a
395 comment in a program), use the command `edit-picture' to enter Picture
396 mode.
397
398    In Picture mode, editing is based on the "quarter-plane" model of
399 text.  In this model, the text characters lie studded on an area that
400 stretches infinitely far to the right and downward.  The concept of the
401 end of a line does not exist in this model; the most you can say is
402 where the last non-blank character on the line is found.
403
404    Of course, Emacs really always considers text as a sequence of
405 characters, and lines really do have ends.  But in Picture mode most
406 frequently-used keys are rebound to commands that simulate the
407 quarter-plane model of text.  They do this by inserting spaces or by
408 converting tabs to spaces.
409
410    Most of the basic editing commands of Emacs are redefined by Picture
411 mode to do essentially the same thing but in a quarter-plane way.  In
412 addition, Picture mode defines various keys starting with the `C-c'
413 prefix to run special picture editing commands.
414
415    One of these keys, `C-c C-c', is pretty important.  Often a picture
416 is part of a larger file that is usually edited in some other major
417 mode.  `M-x edit-picture' records the name of the previous major mode.
418 You can then use the `C-c C-c' command (`picture-mode-exit') to restore
419 that mode.  `C-c C-c' also deletes spaces from the ends of lines,
420 unless you give it a numeric argument.
421
422    The commands used in Picture mode all work in other modes (provided
423 the `picture' library is loaded), but are only  bound to keys in
424 Picture mode.  Note that the descriptions below talk of moving "one
425 column" and so on, but all the picture mode commands handle numeric
426 arguments as their normal equivalents do.
427
428    Turning on Picture mode calls the value of the variable
429 `picture-mode-hook' as a function, with no arguments, if that value
430 exists and is non-`nil'.
431
432 * Menu:
433
434 * Basic Picture::         Basic concepts and simple commands of Picture Mode.
435 * Insert in Picture::     Controlling direction of cursor motion
436                            after "self-inserting" characters.
437 * Tabs in Picture::       Various features for tab stops and indentation.
438 * Rectangles in Picture:: Clearing and superimposing rectangles.
439
440 \1f
441 File: xemacs.info,  Node: Basic Picture,  Next: Insert in Picture,  Prev: Picture,  Up: Picture
442
443 Basic Editing in Picture Mode
444 =============================
445
446    Most keys do the same thing in Picture mode that they usually do,
447 but do it in a quarter-plane style.  For example, `C-f' is rebound to
448 run `picture-forward-column', which moves point one column to the
449 right, by inserting a space if necessary, so that the actual end of the
450 line makes no difference.  `C-b' is rebound to run
451 `picture-backward-column', which always moves point left one column,
452 converting a tab to multiple spaces if necessary.  `C-n' and `C-p' are
453 rebound to run `picture-move-down' and `picture-move-up', which can
454 either insert spaces or convert tabs as necessary to make sure that
455 point stays in exactly the same column.  `C-e' runs
456 `picture-end-of-line', which moves to after the last non-blank
457 character on the line.  There was no need to change `C-a', as the choice
458 of screen model does not affect beginnings of lines.
459
460    Insertion of text is adapted to the quarter-plane screen model
461 through the use of Overwrite mode (*note Minor Modes::).
462 Self-inserting characters replace existing text, column by column,
463 rather than pushing existing text to the right.  <RET> runs
464 `picture-newline', which just moves to the beginning of the following
465 line so that new text will replace that line.
466
467    Text is erased instead of deleted and killed.  <DEL>
468 (`picture-backward-clear-column') replaces the preceding character with
469 a space rather than removing it.  `C-d' (`picture-clear-column') does
470 the same in a forward direction.  `C-k' (`picture-clear-line') really
471 kills the contents of lines, but never removes the newlines from a
472 buffer.
473
474    To do actual insertion, you must use special commands.  `C-o'
475 (`picture-open-line') creates a blank line, but does so after the
476 current line; it never splits a line.  `C-M-o', `split-line', makes
477 sense in Picture mode, so it remains unchanged.  <LFD>
478 (`picture-duplicate-line') inserts another line with the same contents
479 below the current line.
480
481    To actually delete parts of the picture, use `C-w', or with `C-c
482 C-d' (which is defined as `delete-char', as `C-d' is in other modes),
483 or with one of the picture rectangle commands (*note Rectangles in
484 Picture::).
485
486 \1f
487 File: xemacs.info,  Node: Insert in Picture,  Next: Tabs in Picture,  Prev: Basic Picture,  Up: Picture
488
489 Controlling Motion After Insert
490 ===============================
491
492    Since "self-inserting" characters just overwrite and move point in
493 Picture mode, there is no essential restriction on how point should be
494 moved.  Normally point moves right, but you can specify any of the eight
495 orthogonal or diagonal directions for motion after a "self-inserting"
496 character.  This is useful for drawing lines in the buffer.
497
498 `C-c <'
499      Move left after insertion (`picture-movement-left').
500
501 `C-c >'
502      Move right after insertion (`picture-movement-right').
503
504 `C-c ^'
505      Move up after insertion (`picture-movement-up').
506
507 `C-c .'
508      Move down after insertion (`picture-movement-down').
509
510 `C-c `'
511      Move up and left ("northwest") after insertion
512      (`picture-movement-nw').
513
514 `C-c ''
515      Move up and right ("northeast") after insertion
516      (`picture-movement-ne').
517
518 `C-c /'
519      Move down and left ("southwest") after insertion
520      (`picture-movement-sw').
521
522 `C-c \'
523      Move down and right ("southeast") after insertion
524      (`picture-movement-se').
525
526    Two motion commands move based on the current Picture insertion
527 direction.  The command `C-c C-f' (`picture-motion') moves in the same
528 direction as motion after "insertion" currently does, while `C-c C-b'
529 (`picture-motion-reverse') moves in the opposite direction.
530
531 \1f
532 File: xemacs.info,  Node: Tabs in Picture,  Next: Rectangles in Picture,  Prev: Insert in Picture,  Up: Picture
533
534 Picture Mode Tabs
535 =================
536
537    Two kinds of tab-like action are provided in Picture mode.
538 Context-based tabbing is done with `M-<TAB>' (`picture-tab-search').
539 With no argument, it moves to a point underneath the next "interesting"
540 character that follows whitespace in the previous non-blank line.
541 "Next" here means "appearing at a horizontal position greater than the
542 one point starts out at".  With an argument, as in `C-u M-<TAB>', the
543 command moves to the next such interesting character in the current
544 line.  `M-<TAB>' does not change the text; it only moves point.
545 "Interesting" characters are defined by the variable
546 `picture-tab-chars', which contains a string of characters considered
547 interesting.  Its default value is `"!-~"'.
548
549    <TAB> itself runs `picture-tab', which operates based on the current
550 tab stop settings; it is the Picture mode equivalent of
551 `tab-to-tab-stop'.  Without arguments it just moves point, but with a
552 numeric argument it clears the text that it moves over.
553
554    The context-based and tab-stop-based forms of tabbing are brought
555 together by the command `C-c <TAB>' (`picture-set-tab-stops'.)  This
556 command sets the tab stops to the positions which `M-<TAB>' would
557 consider significant in the current line.  If you use this command with
558 <TAB>, you can get the effect of context-based tabbing.  But `M-<TAB>'
559 is more convenient in the cases where it is sufficient.
560
561 \1f
562 File: xemacs.info,  Node: Rectangles in Picture,  Prev: Tabs in Picture,  Up: Picture
563
564 Picture Mode Rectangle Commands
565 ===============================
566
567    Picture mode defines commands for working on rectangular pieces of
568 the text in ways that fit with the quarter-plane model.  The standard
569 rectangle commands may also be useful (*note Rectangles::).
570
571 `C-c C-k'
572      Clear out the region-rectangle (`picture-clear-rectangle').  With
573      argument, kill it.
574
575 `C-c C-w R'
576      Similar but save rectangle contents in register R first
577      (`picture-clear-rectangle-to-register').
578
579 `C-c C-y'
580      Copy last killed rectangle into the buffer by overwriting, with
581      upper left corner at point (`picture-yank-rectangle').  With
582      argument, insert instead.
583
584 `C-c C-x R'
585      Similar, but use the rectangle in register R
586      (`picture-yank-rectangle-from-register').
587
588    The picture rectangle commands `C-c C-k' (`picture-clear-rectangle')
589 and `C-c C-w' (`picture-clear-rectangle-to-register') differ from the
590 standard rectangle commands in that they normally clear the rectangle
591 instead of deleting it; this is analogous with the way `C-d' is changed
592 in Picture mode.
593
594    However, deletion of rectangles can be useful in Picture mode, so
595 these commands delete the rectangle if given a numeric argument.
596
597    The Picture mode commands for yanking rectangles differ from the
598 standard ones in overwriting instead of inserting.  This is the same
599 way that Picture mode insertion of other text is different from other
600 modes.  `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting)
601 the rectangle that was most recently killed, while `C-c C-x'
602 (`picture-yank-rectangle-from-register') does for the rectangle found
603 in a specified register.
604
605    Since most region commands in Picture mode operate on rectangles,
606 when you select a region of text with the mouse in Picture mode, it is
607 highlighted as a rectangle.
608
609 \1f
610 File: xemacs.info,  Node: Sending Mail,  Next: Reading Mail,  Prev: Picture,  Up: Top
611
612 Sending Mail
613 ************
614
615    To send a message in Emacs, start by typing the command (`C-x m') to
616 select and initialize the `*mail*' buffer.  You can then edit the text
617 and headers of the message in the mail buffer, and type the command
618 (`C-c C-c') to send the message.
619
620 `C-x m'
621      Begin composing a message to send (`mail').
622
623 `C-x 4 m'
624      Likewise, but display the message in another window
625      (`mail-other-window').
626
627 `C-c C-c'
628      In Mail mode, send the message and switch to another buffer
629      (`mail-send-and-exit').
630
631    The command `C-x m' (`mail') selects a buffer named `*mail*' and
632 initializes it with the skeleton of an outgoing message.  `C-x 4 m'
633 (`mail-other-window') selects the `*mail*' buffer in a different
634 window, leaving the previous current buffer visible.
635
636    Because the buffer for mail composition is an ordinary Emacs buffer,
637 you can switch to other buffers while in the middle of composing mail,
638 and switch back later (or never).  If you use the `C-x m' command again
639 when you have been composing another message but have not sent it, a
640 new mail buffer will be created; in this way, you can compose multiple
641 messages at once.  You can switch back to and complete an unsent
642 message by using the normal buffer selection mechanisms.
643
644    `C-u C-x m' is another way to switch back to a message in progress:
645 it will search for an existing, unsent mail message buffer and select
646 it.
647
648 * Menu:
649
650 * Format: Mail Format.    Format of the mail being composed.
651 * Headers: Mail Headers.  Details of allowed mail header fields.
652 * Mode: Mail Mode.        Special commands for editing mail being composed.
653
654 \1f
655 File: xemacs.info,  Node: Mail Format,  Next: Mail Headers,  Prev: Sending Mail,  Up: Sending Mail
656
657 The Format of the Mail Buffer
658 =============================
659
660    In addition to the "text" or contents, a message has "header
661 fields", which say who sent it, when, to whom, why, and so on.  Some
662 header fields, such as the date and sender, are created automatically
663 after the message is sent.  Others, such as the recipient names, must
664 be specified by you in order to send the message properly.
665
666    Mail mode provides a few commands to help you edit some header
667 fields, and some are preinitialized in the buffer automatically at
668 times.  You can insert or edit any header fields using ordinary editing
669 commands.
670
671    The line in the buffer that says:
672
673      --text follows this line--
674
675 is a special delimiter that separates the headers you have specified
676 from the text.  Whatever follows this line is the text of the message;
677 the headers precede it.  The delimiter line itself does not appear in
678 the message actually sent.  The text used for the delimiter line is
679 controlled by the variable `mail-header-separator'.
680
681    Here is an example of what the headers and text in the `*mail*'
682 buffer might look like.
683
684      To: rms@mc
685      CC: mly@mc, rg@oz
686      Subject: The XEmacs User's Manual
687      --Text follows this line--
688      Please ignore this message.
689
690 \1f
691 File: xemacs.info,  Node: Mail Headers,  Next: Mail Mode,  Prev: Mail Format,  Up: Sending Mail
692
693 Mail Header Fields
694 ==================
695
696    There are several header fields you can use in the `*mail*' buffer.
697 Each header field starts with a field name at the beginning of a line,
698 terminated by a colon.  It does not matter whether you use upper or
699 lower case in the field name.  After the colon and optional whitespace
700 comes the contents of the field.
701
702 `To'
703      This field contains the mailing addresses of the message.
704
705 `Subject'
706      The contents of the `Subject' field should be a piece of text that
707      says what the message is about.  Subject fields are useful because
708      most mail-reading programs can provide a summary of messages,
709      listing the subject of each message but not its text.
710
711 `CC'
712      This field contains additional mailing addresses to send the
713      message to, but whose readers should not regard the message as
714      addressed to them.
715
716 `BCC'
717      This field contains additional mailing addresses to send the
718      message to, but which should not appear in the header of the
719      message actually sent.
720
721 `FCC'
722      This field contains the name of one file (in Unix mail file
723      format) to which a copy of the message should be appended when the
724      message is sent.
725
726 `From'
727      Use the `From' field to say who you are, when the account you are
728      using to send the mail is not your own.  The contents of the
729      `From' field should be a valid mailing address, since replies will
730      normally go there.
731
732 `Reply-To'
733      Use the `Reply-To' field to direct replies to a different address,
734      not your own. `From' and `Reply-To' have the same effect on where
735      replies go, but they convey a different meaning to the person who
736      reads the message.
737
738 `In-Reply-To'
739      This field contains a piece of text describing a message you are
740      replying to.  Some mail systems can use the information to
741      correlate related pieces of mail.  This field is normally filled
742      in by your mail handling package when you are replying to a
743      message and you never need to think about it.
744
745 The `To', `CC', `BCC' and `FCC' fields can appear any number of times,
746 to specify many places to send the message.
747
748 The `To', `CC', and `BCC', fields can have continuation lines.  All the
749 lines starting with whitespace, following the line on which the field
750 starts, are considered part of the field.  For example,
751
752      To: foo@here, this@there,
753        me@gnu.cambridge.mass.usa.earth.spiral3281
754
755 If you have a `~/.mailrc' file, Emacs scans it for mail aliases the
756 first time you try to send mail in an Emacs session.  Emacs expands
757 aliases found in the `To', `CC', and `BCC' fields where appropriate.
758 You can set the variable `mail-abbrev-mailrc-file' to the name of the
759 file with mail aliases.  If `nil', `~/.mailrc' is used.
760
761    Your `.mailrc' file ensures that word-abbrevs are defined for each
762 of your mail aliases when point is in a `To', `CC', `BCC', or `From'
763 field.  The aliases are defined in your `.mailrc' file or in a file
764 specified by the MAILRC environment variable if it exists.  Your mail
765 aliases expand any time you type a word-delimiter at the end of an
766 abbreviation.
767
768    In this version of Emacs, what you see is what you get: in contrast
769 to some other versions, no abbreviations are expanded after you have
770 sent the mail.  This means you don't suffer the annoyance of having the
771 system do things behind your back--if the system rewrites an address
772 you typed, you know it immediately, instead of after the mail has been
773 sent and it's too late to do anything about it.  For example, you will
774 never again be in trouble because you forgot to delete an old alias
775 from your `.mailrc' and a new local user is given a userid which
776 conflicts with one of your aliases.
777
778    Your mail alias abbrevs are in effect only when point is in an
779 appropriate header field. The mail aliases will not expand in the body
780 of the message, or in other header fields.  The default mode-specific
781 abbrev table `mail-mode-abbrev-table' is used instead if defined.  That
782 means if you have been using mail-mode specific abbrevs, this code will
783 not adversely affect you.  You can control which header fields the
784 abbrevs are used in by changing the variable `mail-abbrev-mode-regexp'.
785
786    If auto-fill mode is on, abbrevs wrap at commas instead of at word
787 boundaries, and header continuation lines will be properly indented.
788
789    You can also insert a mail alias with
790 `mail-interactive-insert-alias'.  This function, which is bound to `C-c
791 C-a', prompts you for an alias (with completion) and inserts its
792 expansion at point.
793
794    In this version of Emacs, it is possible to have lines like the
795 following in your `.mailrc' file:
796
797           alias someone "John Doe <doe@quux.com>"
798
799    That is, if you want an address to have embedded spaces, simply
800 surround it with double-quotes.  The quotes are necessary because the
801 format of the `.mailrc' file uses spaces as address delimiters.
802
803    Aliases in the `.mailrc' file may be nested. For example, assume you
804 define aliases like:
805           alias group1 fred ethel
806           alias group2 larry curly moe
807           alias everybody group1 group2
808
809    When you now type `everybody' on the `To' line, it will expand to:
810           fred, ethyl, larry, curly, moe
811
812    Aliases may contain forward references; the alias of `everybody' in
813 the example above can precede the aliases of `group1' and `group2'.
814
815    In this version of Emacs, you can use the `source' `.mailrc' command
816 for reading aliases from some other file as well.
817
818    Aliases may contain hyphens, as in `"alias foo-bar foo@bar"', even
819 though word-abbrevs normally cannot contain hyphens.
820
821    To read in the contents of another `.mailrc'-type file from Emacs,
822 use the command `M-x merge-mail-aliases'.  The `rebuild-mail-aliases'
823 command is similar, but deletes existing aliases first.
824
825    If you want multiple addresses separated by a string other than `,'
826 (a comma), then set the variable `mail-alias-seperator-string' to it.
827 This has to be a comma bracketed by whitespace if you want any kind  of
828 reasonable behavior.
829
830    If the variable `mail-archive-file-name' is non-`nil', it should be
831 a string naming a file.  Each time you start to edit a message to send,
832 an `FCC' field is entered for that file.  Unless you remove the `FCC'
833 field, every message is written into that file when it is sent.
834
835 \1f
836 File: xemacs.info,  Node: Mail Mode,  Prev: Mail Headers,  Up: Sending Mail
837
838 Mail Mode
839 =========
840
841    The major mode used in the `*mail*' buffer is Mail mode.  Mail mode
842 is similar to Text mode, but several commands are provided on the `C-c'
843 prefix.  These commands all deal specifically with editing or sending
844 the message.
845
846 `C-c C-s'
847      Send the message, and leave the `*mail*' buffer selected
848      (`mail-send').
849
850 `C-c C-c'
851      Send the message, and select some other buffer
852      (`mail-send-and-exit').
853
854 `C-c C-f C-t'
855      Move to the `To' header field, creating one if there is none
856      (`mail-to').
857
858 `C-c C-f C-s'
859      Move to the `Subject' header field, creating one if there is none
860      (`mail-subject').
861
862 `C-c C-f C-c'
863      Move to the `CC' header field, creating one if there is none
864      (`mail-cc').
865
866 `C-c C-w'
867      Insert the file `~/.signature' at the end of the message text
868      (`mail-signature').
869
870 `C-c C-y'
871      Yank the selected message (`mail-yank-original').
872
873 `C-c C-q'
874      Fill all paragraphs of yanked old messages, each individually
875      (`mail-fill-yanked-message').
876
877 `<button3>'
878      Pops up a menu of useful mail-mode commands.
879
880    There are two ways to send a message.  `C-c C-c'
881 (`mail-send-and-exit') is the usual way to send the message.  It sends
882 the message and then deletes the window (if there is another window) or
883 switches to another buffer.  It puts the `*mail*' buffer at the lowest
884 priority for automatic reselection, since you are finished with using
885 it.  `C-c C-s' (`mail-send') sends the message and marks the `*mail*'
886 buffer unmodified, but leaves that buffer selected so that you can
887 modify the message (perhaps with new recipients) and send it again.
888
889    Mail mode provides some other special commands that are useful for
890 editing the headers and text of the message before you send it.  There
891 are three commands defined to move point to particular header fields,
892 all based on the prefix `C-c C-f' (`C-f' is for "field").  They are
893 `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s'
894 (`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc')
895 for the `CC' field.  These fields have special motion commands because
896 they are edited most frequently.
897
898    `C-c C-w' (`mail-signature') adds a standard piece of text at the
899 end of the message to say more about who you are.  The text comes from
900 the file `.signature' in your home directory.
901
902    When you use an Rmail command to send mail from the Rmail mail
903 reader, you can use `C-c C-y' `mail-yank-original' inside the `*mail*'
904 buffer to insert the text of the message you are replying to.  Normally
905 Rmail indents each line of that message four spaces and eliminates most
906 header fields.  A numeric argument specifies the number of spaces to
907 indent.  An argument of just `C-u' says not to indent at all and not to
908 eliminate anything.  `C-c C-y' always uses the current message from the
909 `RMAIL' buffer, so you can insert several old messages by selecting one
910 in `RMAIL', switching to `*mail*' and yanking it, then switching back
911 to `RMAIL' to select another.
912
913    After using `C-c C-y', you can use the command `C-c C-q'
914 (`mail-fill-yanked-message') to fill the paragraphs of the yanked old
915 message or messages.  One use of `C-c C-q' fills all such paragraphs,
916 each one separately.
917
918    Clicking the right mouse button in a mail buffer pops up a menu of
919 the above commands, for easy access.
920
921    Turning on Mail mode (which `C-x m' does automatically) calls the
922 value of `text-mode-hook', if it is not void or `nil', and then calls
923 the value of `mail-mode-hook' if that is not void or `nil'.
924
925 \1f
926 File: xemacs.info,  Node: Reading Mail,  Next: Calendar/Diary,  Prev: Sending Mail,  Up: Top
927
928 Reading Mail
929 ************
930
931    XEmacs provides three separate mail-reading packages.  Each one
932 comes with its own manual, which is included standard with the XEmacs
933 distribution.
934
935    The recommended mail-reading package for new users is VM.  VM works
936 with standard Unix-mail-format folders and was designed as a replacement
937 for the older Rmail.
938
939    XEmacs also provides a sophisticated and comfortable front-end to the
940 MH mail-processing system, called `mh-e'.  Unlike in other mail
941 programs, folders in MH are stored as file-system directories, with
942 each message occupying one (numbered) file.  This facilitates working
943 with mail using shell commands, and many other features of MH are also
944 designed to integrate well with the shell and with shell scripts.  Keep
945 in mind, however, that in order to use mh-e you must have the MH
946 mail-processing system installed on your computer.
947
948    Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
949 only mail reading package distributed with FSF GNU Emacs, and is
950 powerful in its own right.  However, it stores mail folders in a special
951 format called `Babyl', that is incompatible with all other
952 frequently-used mail programs.  A utility program is provided for
953 converting Babyl folders to standard Unix-mail format; however, unless
954 you already have mail in Babyl-format folders, you should consider
955 using VM or mh-e instead. (If at times you have to use FSF Emacs, it is
956 not hard to obtain and install VM for that editor.)
957
958 \1f
959 File: xemacs.info,  Node: Calendar/Diary,  Next: Sorting,  Prev: Reading Mail,  Up: Top
960
961 Calendar Mode and the Diary
962 ===========================
963
964    Emacs provides the functions of a desk calendar, with a diary of
965 planned or past events.  To enter the calendar, type `M-x calendar';
966 this displays a three-month calendar centered on the current month, with
967 point on the current date.  With a numeric argument, as in `C-u M-x
968 calendar', it prompts you for the month and year to be the center of the
969 three-month calendar.  The calendar uses its own buffer, whose major
970 mode is Calendar mode.
971
972    `Button2' in the calendar brings up a menu of operations on a
973 particular date; `Buttons3' brings up a menu of commonly used calendar
974 features that are independent of any particular date.  To exit the
975 calendar, type `q'.  *Note Customizing the Calendar and Diary:
976 (elisp)Calendar, for customization information about the calendar and
977 diary.
978
979 * Menu:
980
981 * Calendar Motion::        Moving through the calendar; selecting a date.
982 * Scroll Calendar::        Bringing earlier or later months onto the screen.
983 * Mark and Region::        Remembering dates, the mark ring.
984 * General Calendar::       Exiting or recomputing the calendar.
985 * LaTeX Calendar::         Print a calendar using LaTeX.
986 * Holidays::               Displaying dates of holidays.
987 * Sunrise/Sunset::         Displaying local times of sunrise and sunset.
988 * Lunar Phases::           Displaying phases of the moon.
989 * Other Calendars::        Converting dates to other calendar systems.
990 * Diary::                  Displaying events from your diary.
991 * Calendar Customization:: Altering the behavior of the features above.
992
993 \1f
994 File: xemacs.info,  Node: Calendar Motion,  Next: Scroll Calendar,  Prev: Calendar/Diary,  Up: Calendar/Diary
995
996 Movement in the Calendar
997 ------------------------
998
999    Calendar mode lets you move through the calendar in logical units of
1000 time such as days, weeks, months, and years.  If you move outside the
1001 three months originally displayed, the calendar display "scrolls"
1002 automatically through time to make the selected date visible.  Moving to
1003 a date lets you view its holidays or diary entries, or convert it to
1004 other calendars; moving longer time periods is also useful simply to
1005 scroll the calendar.
1006
1007 * Menu:
1008
1009 * Calendar Unit Motion::       Moving by days, weeks, months, and years.
1010 * Move to Beginning or End::   Moving to start/end of weeks, months, and years.
1011 * Specified Dates::            Moving to the current date or another
1012                                specific date.
1013
1014 \1f
1015 File: xemacs.info,  Node: Calendar Unit Motion,  Next: Move to Beginning or End,  Prev: Calendar Motion,  Up: Calendar Motion
1016
1017 Motion by Integral Days, Weeks, Months, Years
1018 .............................................
1019
1020    The commands for movement in the calendar buffer parallel the
1021 commands for movement in text.  You can move forward and backward by
1022 days, weeks, months, and years.
1023
1024 `C-f'
1025      Move point one day forward (`calendar-forward-day').
1026
1027 `C-b'
1028      Move point one day backward (`calendar-backward-day').
1029
1030 `C-n'
1031      Move point one week forward (`calendar-forward-week').
1032
1033 `C-p'
1034      Move point one week backward (`calendar-backward-week').
1035
1036 `M-}'
1037      Move point one month forward (`calendar-forward-month').
1038
1039 `M-{'
1040      Move point one month backward (`calendar-backward-month').
1041
1042 `C-x ]'
1043      Move point one year forward (`calendar-forward-year').
1044
1045 `C-x ['
1046      Move point one year backward (`calendar-backward-year').
1047
1048    The day and week commands are natural analogues of the usual Emacs
1049 commands for moving by characters and by lines.  Just as `C-n' usually
1050 moves to the same column in the following line, in Calendar mode it
1051 moves to the same day in the following week.  And `C-p' moves to the
1052 same day in the previous week.
1053
1054    The arrow keys are equivalent to `C-f', `C-b', `C-n' and `C-p', just
1055 as they normally are in other modes.
1056
1057    The commands for motion by months and years work like those for
1058 weeks, but move a larger distance.  The month commands `M-}' and `M-{'
1059 move forward or backward by an entire month's time.  The year commands
1060 `C-x ]' and `C-x [' move forward or backward a whole year.
1061
1062    The easiest way to remember these commands is to consider months and
1063 years analogous to paragraphs and pages of text, respectively.  But the
1064 commands themselves are not quite analogous.  The ordinary Emacs
1065 paragraph commands move to the beginning or end of a paragraph, whereas
1066 these month and year commands move by an entire month or an entire
1067 year, which usually involves skipping across the end of a month or year.
1068
1069    All these commands accept a numeric argument as a repeat count.  For
1070 convenience, the digit keys and the minus sign specify numeric
1071 arguments in Calendar mode even without the Meta modifier.  For example,
1072 `100 C-f' moves point 100 days forward from its present location.
1073
1074 \1f
1075 File: xemacs.info,  Node: Move to Beginning or End,  Next: Specified Dates,  Prev: Calendar Unit Motion,  Up: Calendar Motion
1076
1077 Beginning or End of Week, Month or Year
1078 .......................................
1079
1080    A week (or month, or year) is not just a quantity of days; we think
1081 of weeks (months, years) as starting on particular dates.  So Calendar
1082 mode provides commands to move to the beginning or end of a week, month
1083 or year:
1084
1085 `C-a'
1086      Move point to start of week (`calendar-beginning-of-week').
1087
1088 `C-e'
1089      Move point to end of week (`calendar-end-of-week').
1090
1091 `M-a'
1092      Move point to start of month (`calendar-beginning-of-month').
1093
1094 `M-e'
1095      Move point to end of month (`calendar-end-of-month').
1096
1097 `M-<'
1098      Move point to start of year (`calendar-beginning-of-year').
1099
1100 `M->'
1101      Move point to end of year (`calendar-end-of-year').
1102
1103    These commands also take numeric arguments as repeat counts, with the
1104 repeat count indicating how many weeks, months, or years to move
1105 backward or forward.
1106
1107    By default, weeks begin on Sunday.  To make them begin on Monday
1108 instead, set the variable `calendar-week-start-day' to 1.
1109
1110 \1f
1111 File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
1112
1113 Particular Dates
1114 ................
1115
1116    Calendar mode provides commands for moving to a particular date
1117 specified in various ways.
1118
1119 `g d'
1120      Move point to specified date (`calendar-goto-date').
1121
1122 `o'
1123      Center calendar around specified month (`calendar-other-month').
1124
1125 `.'
1126      Move point to today's date (`calendar-goto-today').
1127
1128    `g d' (`calendar-goto-date') prompts for a year, a month, and a day
1129 of the month, and then moves to that date.  Because the calendar
1130 includes all dates from the beginning of the current era, you must type
1131 the year in its entirety; that is, type `1990', not `90'.
1132
1133    `o' (`calendar-other-month') prompts for a month and year, then
1134 centers the three-month calendar around that month.
1135
1136    You can return to today's date with `.' (`calendar-goto-today').
1137
1138 \1f
1139 File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
1140
1141 Scrolling the Calendar through Time
1142 -----------------------------------
1143
1144    The calendar display scrolls automatically through time when you
1145 move out of the visible portion.  You can also scroll it manually.
1146 Imagine that the calendar window contains a long strip of paper with
1147 the months on it.  Scrolling it means moving the strip so that new
1148 months become visible in the window.
1149
1150 `C-x <'
1151      Scroll calendar one month forward (`scroll-calendar-left').
1152
1153 `C-x >'
1154      Scroll calendar one month backward (`scroll-calendar-right').
1155
1156 `C-v'
1157 `<NEXT>'
1158      Scroll calendar three months forward
1159      (`scroll-calendar-left-three-months').
1160
1161 `M-v'
1162 `<PRIOR>'
1163      Scroll calendar three months backward
1164      (`scroll-calendar-right-three-months').
1165
1166    The most basic calendar scroll commands scroll by one month at a
1167 time.  This means that there are two months of overlap between the
1168 display before the command and the display after.  `C-x <' scrolls the
1169 calendar contents one month to the left; that is, it moves the display
1170 forward in time.  `C-x >' scrolls the contents to the right, which
1171 moves backwards in time.
1172
1173    The commands `C-v' and `M-v' scroll the calendar by an entire
1174 "screenful"--three months--in analogy with the usual meaning of these
1175 commands.  `C-v' makes later dates visible and `M-v' makes earlier
1176 dates visible.  These commands take a numeric argument as a repeat
1177 count; in particular, since `C-u' multiplies the next command by four,
1178 typing `C-u C-v' scrolls the calendar forward by a year and typing `C-u
1179 M-v' scrolls the calendar backward by a year.
1180
1181    The function keys <NEXT> and <PRIOR> are equivalent to `C-v' and
1182 `M-v', just as they are in other modes.
1183
1184 \1f
1185 File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
1186
1187 The Mark and the Region
1188 -----------------------
1189
1190    The concept of the mark applies to the calendar just as to any other
1191 buffer, but it marks a _date_, not a _position_ in the buffer.  The
1192 region consists of the days between the mark and point (including the
1193 starting and stopping dates).
1194
1195 `C-SPC'
1196      Set the mark to today's date (`calendar-set-mark').
1197
1198 `C-@'
1199      The same.
1200
1201 `C-x C-x'
1202      Interchange mark and point (`calendar-exchange-point-and-mark').
1203
1204 `M-='
1205      Display the number of days in the current region
1206      (`calendar-count-days-region').
1207
1208    You set the mark in the calendar, as in any other buffer, by using
1209 `C-@' or `C-SPC' (`calendar-set-mark').  You return to the marked date
1210 with the command `C-x C-x' (`calendar-exchange-point-and-mark') which
1211 puts the mark where point was and point where mark was.  The calendar
1212 is scrolled as necessary, if the marked date was not visible on the
1213 screen.  This does not change the extent of the region.
1214
1215    To determine the number of days in the region, type `M-='
1216 (`calendar-count-days-region').  The numbers of days printed is
1217 _inclusive_; that is, it includes the days specified by mark and point.
1218
1219    The main use of the mark in the calendar is to remember dates that
1220 you may want to go back to.  To make this feature more useful, the mark
1221 ring (*note Mark Ring::) operates exactly as in other buffers:  Emacs
1222 remembers 16 previous locations of the mark.  To return to a marked
1223 date, type `C-u C-SPC' (or `C-u C-@'); this is the command
1224 `calendar-set-mark' given a numeric argument.  It moves point to where
1225 the mark was, restores the mark from the ring of former marks, and
1226 stores the previous point at the end of the mark ring.  So, repeated
1227 use of this command moves point through all the old marks on the ring,
1228 one by one.
1229