1 This is ../info/xemacs.info, produced by makeinfo version 4.0b from
4 INFO-DIR-SECTION XEmacs Editor
6 * XEmacs: (xemacs). XEmacs Editor.
9 This file documents the XEmacs editor.
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.
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.
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.
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.
33 File: xemacs.info, Node: Available Packages, Prev: Creating Packages, Up: Packages
38 This section lists the Lisp packages that are currently available
39 from xemacs.org and it's mirrors. If a particular package that you are
40 looking for isn't here, please send a message to the XEmacs Beta list
41 <xemacs-beta@xemacs.org>.
43 This data is up-to-date as of January 17, 2001.
45 Library Packages (libs)
46 -----------------------
48 These packages are required to build and support most of the rest of
49 XEmacs. By design, xemacs-base is a `regular' package. Use restraint
50 when adding new files there as it is required by almost everything.
53 Support for Sparcworks.
56 A Portable Emacs Library. Used by XEmacs MIME support.
59 The DIRectory EDitor is for manipulating, and running commands on
66 Treat files on remote systems the same as local files.
69 Portable Emacs Lisp utilities library.
72 FSF Emacs compatibility files.
75 Fundamental lisp files for providing email support.
78 XEmacs Sun sound files.
81 XEmacs Microsoft sound files.
84 Support for building with Tooltalk.
87 Fundamental XEmacs support. Install this unless you wish a totally
91 XEmacs Lisp developer support. This package contains utilities for
92 supporting Lisp development. It is a single-file package so it
95 Communications Packages (comm)
96 ------------------------------
98 These packages provide support for various communications, primarily
102 The Big Brother Data Base
105 ICQ Client developed and tested on Linux x86; only supported on
109 Emacs Unified Directory Client (LDAP, PH).
112 Footnoting in mail message editing modes.
118 The Gnus Newsreader and Mailreader.
121 Support for messaging encryption with PGP.
124 Messaging in an Emacs World.
127 Front end support for MH.
130 Miscellaneous Networking Utilities. This is a single-file package
131 and files may be deleted at will.
134 An obsolete Emacs mailer. If you do not already use it don't
138 An Emacs citation tool. Useful with all Emacs Mailers and
142 Emacs MIME support. Not needed for Gnus >= 5.8.0
153 Games and Amusements (games)
154 ----------------------------
156 All work and no play...
159 Spook and Yow (Zippy quotes).
162 Tetris, Sokoban, and Snake.
168 Other amusements and diversions.
173 MULti-lingual Enhancement. Support for world scripts such as Latin,
174 Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. To use these
175 packages your XEmacs must be compiled with Mule support.
178 Lisp Interface to EDICT, Kanji Dictionary.
181 Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to
185 Quail. Used for everything other than English and Japanese.
188 Used for localized menubars (French and Japanese) and localized
189 splash screens (Japanese).
192 Dictionary support. (This isn't an English dictionary program)
195 Basic Mule support. Must be installed prior to building with Mule.
198 Another Japanese Language Input Method. Can be used without a
199 separate process running as a dictionary server.
201 Productivity Packages (oa)
202 --------------------------
204 Things to make life a little easier.
210 Calendar and diary support.
213 Single file lisp packages for various XEmacs goodies. Load this
214 and weed out the junk you don't want.
217 Forms editing support (obsolete, use the built-in Widget instead).
220 Provide a WM icon based on major mode.
226 Spell-checking with ispell.
229 PC style interface emulation.
232 Validated HTML/SGML editing.
235 SGML/Linuxdoc-SGML editing.
241 Provides a separate frame with convenient references.
244 Mouse enhancement utility.
247 Various single file lisp packages for editing text files.
250 Display time & date on the modeline.
252 Operating System Utilities (os)
253 -------------------------------
255 Tools for working with the operating system.
258 Command shell implemented entirely in Emacs Lisp.
264 Enhanced front-end for Grep.
267 Front-end for Inferior Lisp.
270 Miscellaneous single-file O/S utilities, for printing, archiving,
271 compression, remote shells, etc.
274 Provides programmatic completion.
277 Old, but no-Mule safe ps-print.
280 A Unix process browsing tool.
282 Program Editing Support (prog)
283 ------------------------------
285 XEmacs supports a multitude of programming languages. These
286 packages will help your coding.
289 Ada language support.
292 Basic single-file add-ons for editing C code.
295 C, C++ and Java language support.
298 GUD, gdb, dbx debugging support.
301 Interface over patch.
304 Another interface over patch.
307 Editing and Shell mode for the Interactive Data Language.
310 Java language and development support.
316 Miscellaneous single-file lisp files for various programming
320 Front-end support for Inferior Scheme.
326 Support for editing shell scripts.
329 Version Control for Free systems.
332 Version Control for ClearCase. This package will shortly be
333 replaced with clearcase.el
344 Basic TeX/LaTeX support.
347 Crisp/Brief emulation.
350 DEC EDIT/EDT emulation.
353 Emacs support for LaTeX cross-references, citations.
356 XEmacs TeXinfo support.
359 Single-file TeX support.
362 DEC EDIT/TPU support.
365 VI emulation support.
368 File: xemacs.info, Node: Abbrevs, Next: Picture, Prev: Running, Up: Top
373 An "abbrev" is a word which "expands" into some different text.
374 Abbrevs are defined by the user to expand in specific ways. For
375 example, you might define `foo' as an abbrev expanding to `find outer
376 otter'. With this abbrev defined, you would be able to get `find outer
377 otter ' into the buffer by typing `f o o <SPC>'.
379 Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
380 Disabling Abbrev mode does not cause abbrev definitions to be discarded,
381 but they do not expand until Abbrev mode is enabled again. The command
382 `M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
383 turns Abbrev mode on if the argument is positive, off otherwise. *Note
384 Minor Modes::. `abbrev-mode' is also a variable; Abbrev mode is on
385 when the variable is non-`nil'. The variable `abbrev-mode'
386 automatically becomes local to the current buffer when it is set.
388 Abbrev definitions can be "mode-specific"--active only in one major
389 mode. Abbrevs can also have "global" definitions that are active in
390 all major modes. The same abbrev can have a global definition and
391 various mode-specific definitions for different major modes. A
392 mode-specific definition for the current major mode overrides a global
395 You can define Abbrevs interactively during an editing session. You
396 can also save lists of abbrev definitions in files and reload them in
397 later sessions. Some users keep extensive lists of abbrevs that they
398 load in every session.
400 A second kind of abbreviation facility is called the "dynamic
401 expansion". Dynamic abbrev expansion happens only when you give an
402 explicit command and the result of the expansion depends only on the
403 current contents of the buffer. *Note Dynamic Abbrevs::.
407 * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
408 * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
409 * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
410 * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
411 * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
414 File: xemacs.info, Node: Defining Abbrevs, Next: Expanding Abbrevs, Prev: Abbrevs, Up: Abbrevs
420 Define an abbrev to expand into some text before point
421 (`add-global-abbrev').
424 Similar, but define an abbrev available only in the current major
425 mode (`add-mode-abbrev').
428 Define a word in the buffer as an abbrev
429 (`inverse-add-global-abbrev').
432 Define a word in the buffer as a mode-specific abbrev
433 (`inverse-add-mode-abbrev').
435 `M-x kill-all-abbrevs'
436 After this command, no abbrev definitions remain in effect.
438 The usual way to define an abbrev is to enter the text you want the
439 abbrev to expand to, position point after it, and type `C-x a g'
440 (`add-global-abbrev'). This reads the abbrev itself using the
441 minibuffer, and then defines it as an abbrev for one or more words
442 before point. Use a numeric argument to say how many words before point
443 should be taken as the expansion. For example, to define the abbrev
444 `foo' as in the example above, insert the text `find outer otter', then
446 `C-u 3 C-x a g f o o <RET>'.
448 An argument of zero to `C-x a g' means to use the contents of the
449 region as the expansion of the abbrev being defined.
451 The command `C-x a l' (`add-mode-abbrev') is similar, but defines a
452 mode-specific abbrev. Mode-specific abbrevs are active only in a
453 particular major mode. `C-x a l' defines an abbrev for the major mode
454 in effect at the time `C-x a l' is typed. The arguments work the same
455 way they do for `C-x a g'.
457 If the text of an abbrev you want is already in the buffer instead of
458 the expansion, use command `C-x a i g' (`inverse-add-global-abbrev')
459 instead of `C-x a g', or use `C-x a i l' (`inverse-add-mode-abbrev')
460 instead of `C-x a l'. These commands are called "inverse" because they
461 invert the meaning of the argument found in the buffer and the argument
462 read using the minibuffer.
464 To change the definition of an abbrev, just add the new definition.
465 You will be asked to confirm if the abbrev has a prior definition. To
466 remove an abbrev definition, give a negative argument to `C-x a g' or
467 `C-x a l'. You must choose the command to specify whether to kill a
468 global definition or a mode-specific definition for the current mode,
469 since those two definitions are independent for one abbrev.
471 `M-x kill-all-abbrevs' removes all existing abbrev definitions.
474 File: xemacs.info, Node: Expanding Abbrevs, Next: Editing Abbrevs, Prev: Defining Abbrevs, Up: Abbrevs
476 Controlling Abbrev Expansion
477 ============================
479 An abbrev expands whenever it is in a buffer just before point and
480 you type a self-inserting punctuation character (<SPC>, comma, etc.).
481 Most often an abbrev is used by inserting the abbrev followed by
484 Abbrev expansion preserves case; thus, `foo' expands into `find
485 outer otter', `Foo' into `Find outer otter', and `FOO' into `FIND OUTER
486 OTTER' or `Find Outer Otter' according to the variable
487 `abbrev-all-caps' (a non-`nil' value chooses the first of the two
490 Two commands are available to control abbrev expansion:
493 Separate a prefix from a following abbrev to be expanded
494 (`abbrev-prefix-mark').
497 Expand the abbrev before point (`expand-abbrev'). This is
498 effective even when Abbrev mode is not enabled.
500 `M-x unexpand-abbrev'
501 Undo last abbrev expansion.
503 `M-x expand-region-abbrevs'
504 Expand some or all abbrevs found in the region.
506 You may wish to expand an abbrev with a prefix attached. For
507 example, if `cnst' expands into `construction', you may want to use it
508 to enter `reconstruction'. It does not work to type `recnst', because
509 that is not necessarily a defined abbrev. Instead, you can use the
510 command `M-'' (`abbrev-prefix-mark') between the prefix `re' and the
511 abbrev `cnst'. First, insert `re'. Then type `M-''; this inserts a
512 minus sign in the buffer to indicate that it has done its work. Then
513 insert the abbrev `cnst'. The buffer now contains `re-cnst'. Now
514 insert a punctuation character to expand the abbrev `cnst' into
515 `construction'. The minus sign is deleted at this point by `M-''. The
516 resulting text is the desired `reconstruction'.
518 If you actually want the text of the abbrev in the buffer, rather
519 than its expansion, insert the following punctuation with `C-q'. Thus,
520 `foo C-q -' leaves `foo-' in the buffer.
522 If you expand an abbrev by mistake, you can undo the expansion
523 (replace the expansion by the original abbrev text) with `M-x
524 unexpand-abbrev'. You can also use `C-_' (`undo') to undo the
525 expansion; but that will first undo the insertion of the punctuation
528 `M-x expand-region-abbrevs' searches through the region for defined
529 abbrevs, and offers to replace each one it finds with its expansion.
530 This command is useful if you have typed text using abbrevs but forgot
531 to turn on Abbrev mode first. It may also be useful together with a
532 special set of abbrev definitions for making several global
533 replacements at once. The command is effective even if Abbrev mode is
537 File: xemacs.info, Node: Editing Abbrevs, Next: Saving Abbrevs, Prev: Expanding Abbrevs, Up: Abbrevs
539 Examining and Editing Abbrevs
540 =============================
543 Print a list of all abbrev definitions.
546 Edit a list of abbrevs; you can add, alter, or remove definitions.
548 The output from `M-x list-abbrevs' looks like this:
550 (lisp-mode-abbrev-table)
552 (global-abbrev-table)
555 (Some blank lines of no semantic significance, and some other abbrev
556 tables, have been omitted.)
558 A line containing a name in parentheses is the header for abbrevs in
559 a particular abbrev table; `global-abbrev-table' contains all the global
560 abbrevs, and the other abbrev tables that are named after major modes
561 contain the mode-specific abbrevs.
563 Within each abbrev table, each non-blank line defines one abbrev.
564 The word at the beginning is the abbrev. The number that appears is
565 the number of times the abbrev has been expanded. Emacs keeps track of
566 this to help you see which abbrevs you actually use, in case you want
567 to eliminate those that you don't use often. The string at the end of
568 the line is the expansion.
570 `M-x edit-abbrevs' allows you to add, change or kill abbrev
571 definitions by editing a list of them in an Emacs buffer. The list has
572 the format described above. The buffer of abbrevs is called
573 `*Abbrevs*', and is in Edit-Abbrevs mode. This mode redefines the key
574 `C-c C-c' to install the abbrev definitions as specified in the buffer.
575 The `edit-abbrevs-redefine' command does this. Any abbrevs not
576 described in the buffer are eliminated when this is done.
578 `edit-abbrevs' is actually the same as `list-abbrevs', except that
579 it selects the buffer `*Abbrevs*' whereas `list-abbrevs' merely
580 displays it in another window.
583 File: xemacs.info, Node: Saving Abbrevs, Next: Dynamic Abbrevs, Prev: Editing Abbrevs, Up: Abbrevs
588 These commands allow you to keep abbrev definitions between editing
591 `M-x write-abbrev-file'
592 Write a file describing all defined abbrevs.
594 `M-x read-abbrev-file'
595 Read such an abbrev file and define abbrevs as specified there.
597 `M-x quietly-read-abbrev-file'
598 Similar, but do not display a message about what is going on.
601 Define abbrevs from buffer.
604 Insert all abbrevs and their expansions into the buffer.
606 Use `M-x write-abbrev-file' to save abbrev definitions for use in a
607 later session. The command reads a file name using the minibuffer and
608 writes a description of all current abbrev definitions into the
609 specified file. The text stored in the file looks like the output of
612 `M-x read-abbrev-file' prompts for a file name using the minibuffer
613 and reads the specified file, defining abbrevs according to its
614 contents. `M-x quietly-read-abbrev-file' is the same but does not
615 display a message in the echo area; it is actually useful primarily in
616 the init file. *Note Init File::. If you give an empty argument to
617 either of these functions, the file name Emacs uses is the value of the
618 variable `abbrev-file-name', which is by default `"~/.abbrev_defs"'.
620 Emacs offers to save abbrevs automatically if you have changed any of
621 them, whenever it offers to save all files (for `C-x s' or `C-x C-c').
622 Set the variable `save-abbrevs' to `nil' to inhibit this feature.
624 The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are
625 similar to the previous commands but work on text in an Emacs buffer.
626 `M-x insert-abbrevs' inserts text into the current buffer before point,
627 describing all current abbrev definitions; `M-x define-abbrevs' parses
628 the entire current buffer and defines abbrevs accordingly.
631 File: xemacs.info, Node: Dynamic Abbrevs, Prev: Saving Abbrevs, Up: Abbrevs
633 Dynamic Abbrev Expansion
634 ========================
636 The abbrev facility described above operates automatically as you
637 insert text, but all abbrevs must be defined explicitly. By contrast,
638 "dynamic abbrevs" allow the meanings of abbrevs to be determined
639 automatically from the contents of the buffer, but dynamic abbrev
640 expansion happens only when you request it explicitly.
643 Expand the word in the buffer before point as a "dynamic abbrev",
644 by searching in the buffer for words starting with that
645 abbreviation (`dabbrev-expand').
647 For example, if the buffer contains `does this follow ' and you type
648 `f o M-/', the effect is to insert `follow' because that is the last
649 word in the buffer that starts with `fo'. A numeric argument to `M-/'
650 says to take the second, third, etc. distinct expansion found looking
651 backward from point. Repeating `M-/' searches for an alternative
652 expansion by looking farther back. After the entire buffer before
653 point has been considered, the buffer after point is searched.
655 Dynamic abbrev expansion is completely independent of Abbrev mode;
656 the expansion of a word with `M-/' is completely independent of whether
657 it has a definition as an ordinary abbrev.
660 File: xemacs.info, Node: Picture, Next: Sending Mail, Prev: Abbrevs, Up: Top
665 If you want to create a picture made out of text characters (for
666 example, a picture of the division of a register into fields, as a
667 comment in a program), use the command `edit-picture' to enter Picture
670 In Picture mode, editing is based on the "quarter-plane" model of
671 text. In this model, the text characters lie studded on an area that
672 stretches infinitely far to the right and downward. The concept of the
673 end of a line does not exist in this model; the most you can say is
674 where the last non-blank character on the line is found.
676 Of course, Emacs really always considers text as a sequence of
677 characters, and lines really do have ends. But in Picture mode most
678 frequently-used keys are rebound to commands that simulate the
679 quarter-plane model of text. They do this by inserting spaces or by
680 converting tabs to spaces.
682 Most of the basic editing commands of Emacs are redefined by Picture
683 mode to do essentially the same thing but in a quarter-plane way. In
684 addition, Picture mode defines various keys starting with the `C-c'
685 prefix to run special picture editing commands.
687 One of these keys, `C-c C-c', is pretty important. Often a picture
688 is part of a larger file that is usually edited in some other major
689 mode. `M-x edit-picture' records the name of the previous major mode.
690 You can then use the `C-c C-c' command (`picture-mode-exit') to restore
691 that mode. `C-c C-c' also deletes spaces from the ends of lines,
692 unless you give it a numeric argument.
694 The commands used in Picture mode all work in other modes (provided
695 the `picture' library is loaded), but are only bound to keys in
696 Picture mode. Note that the descriptions below talk of moving "one
697 column" and so on, but all the picture mode commands handle numeric
698 arguments as their normal equivalents do.
700 Turning on Picture mode calls the value of the variable
701 `picture-mode-hook' as a function, with no arguments, if that value
702 exists and is non-`nil'.
706 * Basic Picture:: Basic concepts and simple commands of Picture Mode.
707 * Insert in Picture:: Controlling direction of cursor motion
708 after "self-inserting" characters.
709 * Tabs in Picture:: Various features for tab stops and indentation.
710 * Rectangles in Picture:: Clearing and superimposing rectangles.
713 File: xemacs.info, Node: Basic Picture, Next: Insert in Picture, Prev: Picture, Up: Picture
715 Basic Editing in Picture Mode
716 =============================
718 Most keys do the same thing in Picture mode that they usually do,
719 but do it in a quarter-plane style. For example, `C-f' is rebound to
720 run `picture-forward-column', which moves point one column to the
721 right, by inserting a space if necessary, so that the actual end of the
722 line makes no difference. `C-b' is rebound to run
723 `picture-backward-column', which always moves point left one column,
724 converting a tab to multiple spaces if necessary. `C-n' and `C-p' are
725 rebound to run `picture-move-down' and `picture-move-up', which can
726 either insert spaces or convert tabs as necessary to make sure that
727 point stays in exactly the same column. `C-e' runs
728 `picture-end-of-line', which moves to after the last non-blank
729 character on the line. There was no need to change `C-a', as the choice
730 of screen model does not affect beginnings of lines.
732 Insertion of text is adapted to the quarter-plane screen model
733 through the use of Overwrite mode (*note Minor Modes::).
734 Self-inserting characters replace existing text, column by column,
735 rather than pushing existing text to the right. <RET> runs
736 `picture-newline', which just moves to the beginning of the following
737 line so that new text will replace that line.
739 Text is erased instead of deleted and killed. <DEL>
740 (`picture-backward-clear-column') replaces the preceding character with
741 a space rather than removing it. `C-d' (`picture-clear-column') does
742 the same in a forward direction. `C-k' (`picture-clear-line') really
743 kills the contents of lines, but never removes the newlines from a
746 To do actual insertion, you must use special commands. `C-o'
747 (`picture-open-line') creates a blank line, but does so after the
748 current line; it never splits a line. `C-M-o', `split-line', makes
749 sense in Picture mode, so it remains unchanged. <LFD>
750 (`picture-duplicate-line') inserts another line with the same contents
751 below the current line.
753 To actually delete parts of the picture, use `C-w', or with `C-c
754 C-d' (which is defined as `delete-char', as `C-d' is in other modes),
755 or with one of the picture rectangle commands (*note Rectangles in
759 File: xemacs.info, Node: Insert in Picture, Next: Tabs in Picture, Prev: Basic Picture, Up: Picture
761 Controlling Motion After Insert
762 ===============================
764 Since "self-inserting" characters just overwrite and move point in
765 Picture mode, there is no essential restriction on how point should be
766 moved. Normally point moves right, but you can specify any of the eight
767 orthogonal or diagonal directions for motion after a "self-inserting"
768 character. This is useful for drawing lines in the buffer.
771 Move left after insertion (`picture-movement-left').
774 Move right after insertion (`picture-movement-right').
777 Move up after insertion (`picture-movement-up').
780 Move down after insertion (`picture-movement-down').
783 Move up and left ("northwest") after insertion
784 (`picture-movement-nw').
787 Move up and right ("northeast") after insertion
788 (`picture-movement-ne').
791 Move down and left ("southwest") after insertion
792 (`picture-movement-sw').
795 Move down and right ("southeast") after insertion
796 (`picture-movement-se').
798 Two motion commands move based on the current Picture insertion
799 direction. The command `C-c C-f' (`picture-motion') moves in the same
800 direction as motion after "insertion" currently does, while `C-c C-b'
801 (`picture-motion-reverse') moves in the opposite direction.
804 File: xemacs.info, Node: Tabs in Picture, Next: Rectangles in Picture, Prev: Insert in Picture, Up: Picture
809 Two kinds of tab-like action are provided in Picture mode.
810 Context-based tabbing is done with `M-<TAB>' (`picture-tab-search').
811 With no argument, it moves to a point underneath the next "interesting"
812 character that follows whitespace in the previous non-blank line.
813 "Next" here means "appearing at a horizontal position greater than the
814 one point starts out at". With an argument, as in `C-u M-<TAB>', the
815 command moves to the next such interesting character in the current
816 line. `M-<TAB>' does not change the text; it only moves point.
817 "Interesting" characters are defined by the variable
818 `picture-tab-chars', which contains a string of characters considered
819 interesting. Its default value is `"!-~"'.
821 <TAB> itself runs `picture-tab', which operates based on the current
822 tab stop settings; it is the Picture mode equivalent of
823 `tab-to-tab-stop'. Without arguments it just moves point, but with a
824 numeric argument it clears the text that it moves over.
826 The context-based and tab-stop-based forms of tabbing are brought
827 together by the command `C-c <TAB>' (`picture-set-tab-stops'.) This
828 command sets the tab stops to the positions which `M-<TAB>' would
829 consider significant in the current line. If you use this command with
830 <TAB>, you can get the effect of context-based tabbing. But `M-<TAB>'
831 is more convenient in the cases where it is sufficient.
834 File: xemacs.info, Node: Rectangles in Picture, Prev: Tabs in Picture, Up: Picture
836 Picture Mode Rectangle Commands
837 ===============================
839 Picture mode defines commands for working on rectangular pieces of
840 the text in ways that fit with the quarter-plane model. The standard
841 rectangle commands may also be useful (*note Rectangles::).
844 Clear out the region-rectangle (`picture-clear-rectangle'). With
848 Similar but save rectangle contents in register R first
849 (`picture-clear-rectangle-to-register').
852 Copy last killed rectangle into the buffer by overwriting, with
853 upper left corner at point (`picture-yank-rectangle'). With
854 argument, insert instead.
857 Similar, but use the rectangle in register R
858 (`picture-yank-rectangle-from-register').
860 The picture rectangle commands `C-c C-k' (`picture-clear-rectangle')
861 and `C-c C-w' (`picture-clear-rectangle-to-register') differ from the
862 standard rectangle commands in that they normally clear the rectangle
863 instead of deleting it; this is analogous with the way `C-d' is changed
866 However, deletion of rectangles can be useful in Picture mode, so
867 these commands delete the rectangle if given a numeric argument.
869 The Picture mode commands for yanking rectangles differ from the
870 standard ones in overwriting instead of inserting. This is the same
871 way that Picture mode insertion of other text is different from other
872 modes. `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting)
873 the rectangle that was most recently killed, while `C-c C-x'
874 (`picture-yank-rectangle-from-register') does for the rectangle found
875 in a specified register.
877 Since most region commands in Picture mode operate on rectangles,
878 when you select a region of text with the mouse in Picture mode, it is
879 highlighted as a rectangle.
882 File: xemacs.info, Node: Sending Mail, Next: Reading Mail, Prev: Picture, Up: Top
887 To send a message in Emacs, start by typing the command (`C-x m') to
888 select and initialize the `*mail*' buffer. You can then edit the text
889 and headers of the message in the mail buffer, and type the command
890 (`C-c C-c') to send the message.
893 Begin composing a message to send (`mail').
896 Likewise, but display the message in another window
897 (`mail-other-window').
900 In Mail mode, send the message and switch to another buffer
901 (`mail-send-and-exit').
903 The command `C-x m' (`mail') selects a buffer named `*mail*' and
904 initializes it with the skeleton of an outgoing message. `C-x 4 m'
905 (`mail-other-window') selects the `*mail*' buffer in a different
906 window, leaving the previous current buffer visible.
908 Because the buffer for mail composition is an ordinary Emacs buffer,
909 you can switch to other buffers while in the middle of composing mail,
910 and switch back later (or never). If you use the `C-x m' command again
911 when you have been composing another message but have not sent it, a
912 new mail buffer will be created; in this way, you can compose multiple
913 messages at once. You can switch back to and complete an unsent
914 message by using the normal buffer selection mechanisms.
916 `C-u C-x m' is another way to switch back to a message in progress:
917 it will search for an existing, unsent mail message buffer and select
922 * Format: Mail Format. Format of the mail being composed.
923 * Headers: Mail Headers. Details of allowed mail header fields.
924 * Mode: Mail Mode. Special commands for editing mail being composed.
927 File: xemacs.info, Node: Mail Format, Next: Mail Headers, Prev: Sending Mail, Up: Sending Mail
929 The Format of the Mail Buffer
930 =============================
932 In addition to the "text" or contents, a message has "header
933 fields", which say who sent it, when, to whom, why, and so on. Some
934 header fields, such as the date and sender, are created automatically
935 after the message is sent. Others, such as the recipient names, must
936 be specified by you in order to send the message properly.
938 Mail mode provides a few commands to help you edit some header
939 fields, and some are preinitialized in the buffer automatically at
940 times. You can insert or edit any header fields using ordinary editing
943 The line in the buffer that says:
945 --text follows this line--
947 is a special delimiter that separates the headers you have specified
948 from the text. Whatever follows this line is the text of the message;
949 the headers precede it. The delimiter line itself does not appear in
950 the message actually sent. The text used for the delimiter line is
951 controlled by the variable `mail-header-separator'.
953 Here is an example of what the headers and text in the `*mail*'
954 buffer might look like.
958 Subject: The XEmacs User's Manual
959 --Text follows this line--
960 Please ignore this message.
963 File: xemacs.info, Node: Mail Headers, Next: Mail Mode, Prev: Mail Format, Up: Sending Mail
968 There are several header fields you can use in the `*mail*' buffer.
969 Each header field starts with a field name at the beginning of a line,
970 terminated by a colon. It does not matter whether you use upper or
971 lower case in the field name. After the colon and optional whitespace
972 comes the contents of the field.
975 This field contains the mailing addresses of the message.
978 The contents of the `Subject' field should be a piece of text that
979 says what the message is about. Subject fields are useful because
980 most mail-reading programs can provide a summary of messages,
981 listing the subject of each message but not its text.
984 This field contains additional mailing addresses to send the
985 message to, but whose readers should not regard the message as
989 This field contains additional mailing addresses to send the
990 message to, but which should not appear in the header of the
991 message actually sent.
994 This field contains the name of one file (in Unix mail file
995 format) to which a copy of the message should be appended when the
999 Use the `From' field to say who you are, when the account you are
1000 using to send the mail is not your own. The contents of the
1001 `From' field should be a valid mailing address, since replies will
1005 Use the `Reply-To' field to direct replies to a different address,
1006 not your own. `From' and `Reply-To' have the same effect on where
1007 replies go, but they convey a different meaning to the person who
1011 This field contains a piece of text describing a message you are
1012 replying to. Some mail systems can use the information to
1013 correlate related pieces of mail. This field is normally filled
1014 in by your mail handling package when you are replying to a
1015 message and you never need to think about it.
1017 The `To', `CC', `BCC' and `FCC' fields can appear any number of times,
1018 to specify many places to send the message.
1020 The `To', `CC', and `BCC', fields can have continuation lines. All the
1021 lines starting with whitespace, following the line on which the field
1022 starts, are considered part of the field. For example,
1024 To: foo@here, this@there,
1025 me@gnu.cambridge.mass.usa.earth.spiral3281
1027 If you have a `~/.mailrc' file, Emacs scans it for mail aliases the
1028 first time you try to send mail in an Emacs session. Emacs expands
1029 aliases found in the `To', `CC', and `BCC' fields where appropriate.
1030 You can set the variable `mail-abbrev-mailrc-file' to the name of the
1031 file with mail aliases. If `nil', `~/.mailrc' is used.
1033 Your `.mailrc' file ensures that word-abbrevs are defined for each
1034 of your mail aliases when point is in a `To', `CC', `BCC', or `From'
1035 field. The aliases are defined in your `.mailrc' file or in a file
1036 specified by the MAILRC environment variable if it exists. Your mail
1037 aliases expand any time you type a word-delimiter at the end of an
1040 In this version of Emacs, what you see is what you get: in contrast
1041 to some other versions, no abbreviations are expanded after you have
1042 sent the mail. This means you don't suffer the annoyance of having the
1043 system do things behind your back--if the system rewrites an address
1044 you typed, you know it immediately, instead of after the mail has been
1045 sent and it's too late to do anything about it. For example, you will
1046 never again be in trouble because you forgot to delete an old alias
1047 from your `.mailrc' and a new local user is given a userid which
1048 conflicts with one of your aliases.
1050 Your mail alias abbrevs are in effect only when point is in an
1051 appropriate header field. The mail aliases will not expand in the body
1052 of the message, or in other header fields. The default mode-specific
1053 abbrev table `mail-mode-abbrev-table' is used instead if defined. That
1054 means if you have been using mail-mode specific abbrevs, this code will
1055 not adversely affect you. You can control which header fields the
1056 abbrevs are used in by changing the variable `mail-abbrev-mode-regexp'.
1058 If auto-fill mode is on, abbrevs wrap at commas instead of at word
1059 boundaries, and header continuation lines will be properly indented.
1061 You can also insert a mail alias with
1062 `mail-interactive-insert-alias'. This function, which is bound to `C-c
1063 C-a', prompts you for an alias (with completion) and inserts its
1066 In this version of Emacs, it is possible to have lines like the
1067 following in your `.mailrc' file:
1069 alias someone "John Doe <doe@quux.com>"
1071 That is, if you want an address to have embedded spaces, simply
1072 surround it with double-quotes. The quotes are necessary because the
1073 format of the `.mailrc' file uses spaces as address delimiters.
1075 Aliases in the `.mailrc' file may be nested. For example, assume you
1076 define aliases like:
1077 alias group1 fred ethel
1078 alias group2 larry curly moe
1079 alias everybody group1 group2
1081 When you now type `everybody' on the `To' line, it will expand to:
1082 fred, ethyl, larry, curly, moe
1084 Aliases may contain forward references; the alias of `everybody' in
1085 the example above can precede the aliases of `group1' and `group2'.
1087 In this version of Emacs, you can use the `source' `.mailrc' command
1088 for reading aliases from some other file as well.
1090 Aliases may contain hyphens, as in `"alias foo-bar foo@bar"', even
1091 though word-abbrevs normally cannot contain hyphens.
1093 To read in the contents of another `.mailrc'-type file from Emacs,
1094 use the command `M-x merge-mail-aliases'. The `rebuild-mail-aliases'
1095 command is similar, but deletes existing aliases first.
1097 If you want multiple addresses separated by a string other than `,'
1098 (a comma), then set the variable `mail-alias-separator-string' to it.
1099 This has to be a comma bracketed by whitespace if you want any kind of
1100 reasonable behavior.
1102 If the variable `mail-archive-file-name' is non-`nil', it should be
1103 a string naming a file. Each time you start to edit a message to send,
1104 an `FCC' field is entered for that file. Unless you remove the `FCC'
1105 field, every message is written into that file when it is sent.
1108 File: xemacs.info, Node: Mail Mode, Prev: Mail Headers, Up: Sending Mail
1113 The major mode used in the `*mail*' buffer is Mail mode. Mail mode
1114 is similar to Text mode, but several commands are provided on the `C-c'
1115 prefix. These commands all deal specifically with editing or sending
1119 Send the message, and leave the `*mail*' buffer selected
1123 Send the message, and select some other buffer
1124 (`mail-send-and-exit').
1127 Move to the `To' header field, creating one if there is none
1131 Move to the `Subject' header field, creating one if there is none
1135 Move to the `CC' header field, creating one if there is none
1139 Insert the file `~/.signature' at the end of the message text
1143 Yank the selected message (`mail-yank-original').
1146 Fill all paragraphs of yanked old messages, each individually
1147 (`mail-fill-yanked-message').
1150 Pops up a menu of useful mail-mode commands.
1152 There are two ways to send a message. `C-c C-c'
1153 (`mail-send-and-exit') is the usual way to send the message. It sends
1154 the message and then deletes the window (if there is another window) or
1155 switches to another buffer. It puts the `*mail*' buffer at the lowest
1156 priority for automatic reselection, since you are finished with using
1157 it. `C-c C-s' (`mail-send') sends the message and marks the `*mail*'
1158 buffer unmodified, but leaves that buffer selected so that you can
1159 modify the message (perhaps with new recipients) and send it again.
1161 Mail mode provides some other special commands that are useful for
1162 editing the headers and text of the message before you send it. There
1163 are three commands defined to move point to particular header fields,
1164 all based on the prefix `C-c C-f' (`C-f' is for "field"). They are
1165 `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s'
1166 (`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc')
1167 for the `CC' field. These fields have special motion commands because
1168 they are edited most frequently.
1170 `C-c C-w' (`mail-signature') adds a standard piece of text at the
1171 end of the message to say more about who you are. The text comes from
1172 the file `.signature' in your home directory.
1174 When you use an Rmail command to send mail from the Rmail mail
1175 reader, you can use `C-c C-y' `mail-yank-original' inside the `*mail*'
1176 buffer to insert the text of the message you are replying to. Normally
1177 Rmail indents each line of that message four spaces and eliminates most
1178 header fields. A numeric argument specifies the number of spaces to
1179 indent. An argument of just `C-u' says not to indent at all and not to
1180 eliminate anything. `C-c C-y' always uses the current message from the
1181 `RMAIL' buffer, so you can insert several old messages by selecting one
1182 in `RMAIL', switching to `*mail*' and yanking it, then switching back
1183 to `RMAIL' to select another.
1185 After using `C-c C-y', you can use the command `C-c C-q'
1186 (`mail-fill-yanked-message') to fill the paragraphs of the yanked old
1187 message or messages. One use of `C-c C-q' fills all such paragraphs,
1188 each one separately.
1190 Clicking the right mouse button in a mail buffer pops up a menu of
1191 the above commands, for easy access.
1193 Turning on Mail mode (which `C-x m' does automatically) calls the
1194 value of `text-mode-hook', if it is not void or `nil', and then calls
1195 the value of `mail-mode-hook' if that is not void or `nil'.
1198 File: xemacs.info, Node: Reading Mail, Next: Calendar/Diary, Prev: Sending Mail, Up: Top
1203 XEmacs provides three separate mail-reading packages. Each one
1204 comes with its own manual, which is included standard with the XEmacs
1207 The recommended mail-reading package for new users is VM. VM works
1208 with standard Unix-mail-format folders and was designed as a replacement
1209 for the older Rmail.
1211 XEmacs also provides a sophisticated and comfortable front-end to the
1212 MH mail-processing system, called `mh-e'. Unlike in other mail
1213 programs, folders in MH are stored as file-system directories, with
1214 each message occupying one (numbered) file. This facilitates working
1215 with mail using shell commands, and many other features of MH are also
1216 designed to integrate well with the shell and with shell scripts. Keep
1217 in mind, however, that in order to use mh-e you must have the MH
1218 mail-processing system installed on your computer.
1220 Finally, XEmacs provides the Rmail package. Rmail is (currently) the
1221 only mail reading package distributed with FSF GNU Emacs, and is
1222 powerful in its own right. However, it stores mail folders in a special
1223 format called `Babyl', that is incompatible with all other
1224 frequently-used mail programs. A utility program is provided for
1225 converting Babyl folders to standard Unix-mail format; however, unless
1226 you already have mail in Babyl-format folders, you should consider
1227 using VM or mh-e instead. (If at times you have to use FSF Emacs, it is
1228 not hard to obtain and install VM for that editor.)
1231 File: xemacs.info, Node: Calendar/Diary, Next: Sorting, Prev: Reading Mail, Up: Top
1233 Calendar Mode and the Diary
1234 ===========================
1236 Emacs provides the functions of a desk calendar, with a diary of
1237 planned or past events. To enter the calendar, type `M-x calendar';
1238 this displays a three-month calendar centered on the current month, with
1239 point on the current date. With a numeric argument, as in `C-u M-x
1240 calendar', it prompts you for the month and year to be the center of the
1241 three-month calendar. The calendar uses its own buffer, whose major
1242 mode is Calendar mode.
1244 `Button2' in the calendar brings up a menu of operations on a
1245 particular date; `Buttons3' brings up a menu of commonly used calendar
1246 features that are independent of any particular date. To exit the
1247 calendar, type `q'. *Note Customizing the Calendar and Diary:
1248 (lispref)Calendar, for customization information about the calendar and
1253 * Calendar Motion:: Moving through the calendar; selecting a date.
1254 * Scroll Calendar:: Bringing earlier or later months onto the screen.
1255 * Mark and Region:: Remembering dates, the mark ring.
1256 * General Calendar:: Exiting or recomputing the calendar.
1257 * LaTeX Calendar:: Print a calendar using LaTeX.
1258 * Holidays:: Displaying dates of holidays.
1259 * Sunrise/Sunset:: Displaying local times of sunrise and sunset.
1260 * Lunar Phases:: Displaying phases of the moon.
1261 * Other Calendars:: Converting dates to other calendar systems.
1262 * Diary:: Displaying events from your diary.
1263 * Calendar Customization:: Altering the behavior of the features above.
1266 File: xemacs.info, Node: Calendar Motion, Next: Scroll Calendar, Prev: Calendar/Diary, Up: Calendar/Diary
1268 Movement in the Calendar
1269 ------------------------
1271 Calendar mode lets you move through the calendar in logical units of
1272 time such as days, weeks, months, and years. If you move outside the
1273 three months originally displayed, the calendar display "scrolls"
1274 automatically through time to make the selected date visible. Moving to
1275 a date lets you view its holidays or diary entries, or convert it to
1276 other calendars; moving longer time periods is also useful simply to
1277 scroll the calendar.
1281 * Calendar Unit Motion:: Moving by days, weeks, months, and years.
1282 * Move to Beginning or End:: Moving to start/end of weeks, months, and years.
1283 * Specified Dates:: Moving to the current date or another
1287 File: xemacs.info, Node: Calendar Unit Motion, Next: Move to Beginning or End, Prev: Calendar Motion, Up: Calendar Motion
1289 Motion by Integral Days, Weeks, Months, Years
1290 .............................................
1292 The commands for movement in the calendar buffer parallel the
1293 commands for movement in text. You can move forward and backward by
1294 days, weeks, months, and years.
1297 Move point one day forward (`calendar-forward-day').
1300 Move point one day backward (`calendar-backward-day').
1303 Move point one week forward (`calendar-forward-week').
1306 Move point one week backward (`calendar-backward-week').
1309 Move point one month forward (`calendar-forward-month').
1312 Move point one month backward (`calendar-backward-month').
1315 Move point one year forward (`calendar-forward-year').
1318 Move point one year backward (`calendar-backward-year').
1320 The day and week commands are natural analogues of the usual Emacs
1321 commands for moving by characters and by lines. Just as `C-n' usually
1322 moves to the same column in the following line, in Calendar mode it
1323 moves to the same day in the following week. And `C-p' moves to the
1324 same day in the previous week.
1326 The arrow keys are equivalent to `C-f', `C-b', `C-n' and `C-p', just
1327 as they normally are in other modes.
1329 The commands for motion by months and years work like those for
1330 weeks, but move a larger distance. The month commands `M-}' and `M-{'
1331 move forward or backward by an entire month's time. The year commands
1332 `C-x ]' and `C-x [' move forward or backward a whole year.
1334 The easiest way to remember these commands is to consider months and
1335 years analogous to paragraphs and pages of text, respectively. But the
1336 commands themselves are not quite analogous. The ordinary Emacs
1337 paragraph commands move to the beginning or end of a paragraph, whereas
1338 these month and year commands move by an entire month or an entire
1339 year, which usually involves skipping across the end of a month or year.
1341 All these commands accept a numeric argument as a repeat count. For
1342 convenience, the digit keys and the minus sign specify numeric
1343 arguments in Calendar mode even without the Meta modifier. For example,
1344 `100 C-f' moves point 100 days forward from its present location.
1347 File: xemacs.info, Node: Move to Beginning or End, Next: Specified Dates, Prev: Calendar Unit Motion, Up: Calendar Motion
1349 Beginning or End of Week, Month or Year
1350 .......................................
1352 A week (or month, or year) is not just a quantity of days; we think
1353 of weeks (months, years) as starting on particular dates. So Calendar
1354 mode provides commands to move to the beginning or end of a week, month
1358 Move point to start of week (`calendar-beginning-of-week').
1361 Move point to end of week (`calendar-end-of-week').
1364 Move point to start of month (`calendar-beginning-of-month').
1367 Move point to end of month (`calendar-end-of-month').
1370 Move point to start of year (`calendar-beginning-of-year').
1373 Move point to end of year (`calendar-end-of-year').
1375 These commands also take numeric arguments as repeat counts, with the
1376 repeat count indicating how many weeks, months, or years to move
1377 backward or forward.
1379 By default, weeks begin on Sunday. To make them begin on Monday
1380 instead, set the variable `calendar-week-start-day' to 1.