home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-08 | 49.7 KB | 1,078 lines |
- Info file ../info/emacs, produced by Makeinfo, -*- Text -*- from input
- file lemacs.tex.
-
- This file documents the GNU Emacs editor.
-
- Copyright (C) 1985, 1986, 1988 Richard M. Stallman. Copyright (C)
- 1991, 1992 Lucid, Inc.
-
- Permission is granted to make and distribute verbatim copies of
- this manual provided the copyright notice and this permission notice
- are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided also
- that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
- General Public License" are included exactly as in the original, and
- provided that the entire resulting derived work is distributed under
- the terms of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that the sections entitled "The GNU Manifesto",
- "Distribution" and "GNU General Public License" may be included in a
- translation approved by the author instead of in the original English.
-
- File: emacs, Node: Top, Next: Distrib, Up: (dir)
-
- The Emacs Editor ****************
-
- Emacs is the extensible, customizable, self-documenting real-time
- display editor. This Info file describes how to edit with Emacs and
- some of how to customize it, but not how to extend it.
-
- * Menu:
-
- * License:: The GNU General Public License gives you permission
- to redistribute GNU Emacs on certain terms; and also
- explains that there is no warranty.
- * Distrib:: How to get Emacs.
- * Intro:: An introduction to Emacs concepts.
- * Glossary:: The glossary.
- * Manifesto:: What's GNU? Gnu's Not Unix!
-
- Indexes, nodes containing large menus
- * Key Index:: An item for each standard Emacs key sequence.
- * Command Index:: An item for each command name.
- * Variable Index:: An item for each documented variable.
- * Concept Index:: An item for each concept.
-
- Important General Concepts
- * Screen:: How to interpret what you see on the screen.
- * Keystrokes:: Keyboard gestures Emacs recognizes.
- * Pull-down Menus::
- The Lucid GNU Emacs Pull-down Menus available under X.
- * Mouse Selection::
- Selecting Text with the Mouse.
- * Keystrokes::
- Using Keystrokes to represent key sequences.
- * Commands:: Commands: named functions run by key sequences to do editing.
- * Entering Emacs::
- Starting Emacs from the shell.
- * Command Switches::
- Hairy startup options.
- * Exiting:: Stopping or killing Emacs.
- * Basic:: The most basic editing commands.
- * Undo:: Undoing recently made changes in the text.
- * Minibuffer:: Entering arguments that are prompted for.
- * M-x:: Invoking commands by their names.
- * Help:: Commands for asking Emacs about its commands.
-
- Important Text-Changing Commands
- * Mark:: The mark: how to delimit a "region" of text.
- * Killing:: Killing text.
- * Yanking:: Recovering killed text. Moving text.
- * Using X Selections::
- Using primary selection, cut buffers, and highlighted regions.
- * Accumulating Text::
- Other ways of copying text.
- * Rectangles:: Operating on the text inside a rectangle on the screen.
- * Registers:: Saving a text string or a location in the buffer.
- * Display:: Controlling what text is displayed.
- * Search:: Finding or replacing occurrences of a string.
- * Fixit:: Commands especially useful for fixing typos.
-
- Larger Units of Text
- * Files:: All about handling files.
- * Buffers:: Multiple buffers; editing several files at once.
- * Windows:: Viewing two pieces of text at once.
-
- Advanced Features
- * Major Modes:: Text mode vs. Lisp mode vs. C mode ...
- * Indentation:: Editing the white space at the beginnings of lines.
- * Text:: Commands and modes for editing English.
- * Programs:: Commands and modes for editing programs.
- * Running:: Compiling, running and debugging programs.
- * Abbrevs:: How to define text abbreviations to reduce
- the number of characters you must type.
- * Picture:: Editing pictures made up of characters
- using the quarter-plane screen model.
- * Sending Mail::Sending mail in Emacs.
- * Rmail:: Reading mail in Emacs.
- * Recursive Edit::
- A command can allow you to do editing
- "within the command". This is called a
- `recursive editing level'.
- * Narrowing:: Restricting display and editing to a portion
- of the buffer.
- * Sorting:: Sorting lines, paragraphs or pages within Emacs.
- * Shell:: Executing shell commands from Emacs.
- * Hardcopy:: Printing buffers or regions.
- * Dissociated Press:: Dissociating text for fun.
- * CONX:: A different kind of dissociation.
- * Amusements:: Various games and hacks.
- * Emulation:: Emulating some other editors with Emacs.
- * Customization:: Modifying the behavior of Emacs.
-
- Recovery from Problems.
- * Quitting:: Quitting and aborting.
- * Lossage:: What to do if Emacs is hung or malfunctioning.
- * Bugs:: How and when to report a bug.
-
- Here are some nodes which are inferiors of the ones already listed. They
- are mentioned here so you can get to them in one step:
-
- Subnodes of Screen
- * Point:: The place in the text where editing commands operate.
- * Echo Area:: Short messages appear at the bottom of the screen.
- * Mode Line:: Interpreting the mode line.
-
- Subnodes of Basic
- * Blank Lines:: Commands to make or delete blank lines.
- * Continuation Lines:: Lines too wide for the screen.
- * Position Info:: What page, line, row, or column is point on?
- * Arguments:: Giving numeric arguments to commands.
-
- Subnodes of Keystrokes
- * Representing Keystrokes:: Using lists of modifiers and keysyms to
- represent keystrokes.
- * Key Sequences:: Combine key strokes into key sequences you can
- bind to commands.
- * String Key Sequences:: Available for upward compatibility.
- * Meta Key:: Using ESC to represent Meta
- * Super and Hyper Keys:: Adding modifier keys on certain keyboards
- * Character Representation:: How characters appear in Emacs buffers.
- * Commands:: How commands are bound to key sequences.
-
- Subnodes of Pull-down Menus
- * File Menu:: Items on the File menu
- * Edit Menu:: Items on the Edit menu
- * Buffers Menu:: Information about the Buffers menu
- * Help Menu:: Items on the Help menu
- * Menu Customization:: Adding and removing menu items and related
- operations.
-
- Subnodes of Minibuffer
- * Minibuffer File:: Entering file names with the minibuffer.
- * Minibuffer Edit:: How to edit in the minibuffer.
- * Completion:: An abbreviation facility for minibuffer input.
- * Repetition:: Re-executing previous commands that used the minibuffer.
-
- Subnodes of Mark
- * Setting Mark:: Commands to set the mark.
- * Using Region:: Summary of ways to operate on contents of the region.
- * Marking Objects:: Commands to put region around textual units.
- * Mark Ring:: Previous mark positions saved so you can go back there.
-
- Subnodes of Yanking
- * Kill Ring:: Where killed text is stored. Basic yanking.
- * Appending Kills:: Several kills in a row all yank together.
- * Earlier Kills:: Yanking something killed some time ago.
-
- Subnodes of Registers
- * RegPos:: Saving positions in registers.
- * RegText:: Saving text in registers.
- * RegRect:: Saving rectangles in registers.
-
- Subnodes of Display
- * Scrolling:: Moving text up and down in a window.
- * Horizontal Scrolling:: Moving text left and right in a window.
- * Selective Display:: Hiding lines with lots of indentation.
- * Display Vars:: Information on variables for customizing display.
-
- Subnodes of Search
- * Incremental Search:: Search happens as you type the string.
- * Non-Incremental Search:: Specify entire string and then search.
- * Word Search:: Search for sequence of words.
- * Regexp Search:: Search for match for a regexp.
- * Regexps:: Syntax of regular expressions.
- * Search Case:: To ignore case while searching, or not.
- * Replace:: Search, and replace some or all matches.
- * Unconditional Replace:: Everything about replacement except for querying.
- * Query Replace:: How to use querying.
- * Other Repeating Search:: Operating on all matches for some regexp.
-
- Subnodes of Fixit
- * Kill Errors:: Commands to kill a batch of recently entered text.
- * Transpose:: Exchanging two characters, words, lines, lists...
- * Fixing Case:: Correcting case of last word entered.
-
- * Spelling:: Apply spelling checker to a word, or a whole file.
-
- Subnodes of Files
- * File Names:: How to type and edit file name arguments.
- * Visiting:: Visiting a file prepares Emacs to edit the file.
- * Saving:: Saving makes your changes permanent.
- * Backup:: How Emacs saves the old version of your file.
- * Interlocking::How Emacs protects against simultaneous editing
- of one file by two users.
- * Reverting:: Reverting cancels all the changes not saved.
- * Auto Save:: Auto Save periodically protects against loss of data.
- * ListDir:: Listing the contents of a file directory.
- * Dired:: "Editing" a directory to delete, rename, etc.
- the files in it.
- * Misc File Ops:: Other things you can do on files.
-
- Subnodes of Buffers
- * Select Buffer:: Creating a new buffer or reselecting an old one.
- * List Buffers:: Getting a list of buffers that exist.
- * Misc Buffer:: Renaming; changing read-only status.
- * Kill Buffer:: Killing buffers you no longer need.
- * Several Buffers:: How to go through the list of all buffers
- and operate variously on several of them.
-
- Subnodes of Windows
- * Basic Window:: Introduction to Emacs windows.
- * Split Window:: New windows are made by splitting existing windows.
- * Other Window:: Moving to another window or doing something to it.
- * Pop Up Window:: Finding a file or buffer in another window.
- * Change Window:: Deleting windows and changing their sizes.
-
- Subnodes of Using X Selections
- * X Clipboard Selection:: Storing the primary selection.
- * Active Regions:: Using zmacs-style highlighting of the selected region.
- * X Cut Buffers:: X cut buffers are available for compatibility.
-
- Subnodes of Indentation
- * Indentation Commands:: Various commands and techniques for indentation.
- * Tab Stops:: You can set arbitrary "tab stops" and then
- indent to the next tab stop when you want to.
- * Just Spaces:: You can request indentation using just spaces.
-
- Subnodes of Text
- * Text Mode:: The major mode for editing text files.
- * Nroff Mode:: The major mode for editing input to the formatter nroff.
- * TeX Mode:: The major mode for editing input to the formatter TeX.
- * Outline Mode::The major mode for editing outlines.
- * Words:: Moving over and killing words.
- * Sentences:: Moving over and killing sentences.
- * Paragraphs:: Moving over paragraphs.
- * Pages:: Moving over pages.
- * Filling:: Filling or justifying text
- * Case:: Changing the case of text
-
- Subnodes of Programs
- * Program Modes:: Major modes for editing programs.
- * Lists:: Expressions with balanced parentheses.
- There are editing commands to operate on them.
- * Defuns:: Each program is made up of separate functions.
- There are editing commands to operate on them.
- * Grinding:: Adjusting indentation to show the nesting.
- * Matching:: Insertion of a close-delimiter flashes matching open.
- * Comments:: Inserting, illing and aligning comments.
- * Balanced Editing:: Inserting two matching parentheses at once, etc.
- * Lisp Completion:: Completion on symbol names in Lisp code.
- * Documentation:: Getting documentation of functions you plan to call.
- * Change Log:: Maintaining a change history for your program.
- * Tags:: Go direct to any function in your program in one
- command. Tags remembers which file it is in.
- * Fortran:: Fortran mode and its special features.
-
- Subnodes of Running
- * Compilation:: Compiling programs in languages other than Lisp
- (C, Pascal, etc.)
- * Lisp Modes:: Various modes for editing Lisp programs, with
- different facilities for running the Lisp programs.
- * Lisp Libraries:: Creating Lisp programs to run in Emacs.
- * Lisp Interaction:: Executing Lisp in an Emacs buffer.
- * Lisp Eval:: Executing a single Lisp expression in Emacs.
- * Lisp Debug:: Debugging Lisp programs running in Emacs.
- * External Lisp:: Communicating through Emacs with a separate Lisp.
-
- Subnodes of Abbrevs
- * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
- * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
- * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
- * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
- * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
-
- Subnodes of Picture
- * Basic Picture:: Basic concepts and simple commands of Picture Mode.
- * Insert in Picture:: Controlling direction of cursor motion
- after "self-inserting" characters.
- * Tabs in Picture:: Various features for tab stops and indentation.
- * Rectangles in Picture:: Clearing and superimposing rectangles.
-
- Subnodes of Sending Mail
- * Mail Format:: Format of the mail being composed.
- * Mail Headers:: Details of allowed mail header fields.
- * Mail Mode:: Special commands for editing mail being composed.
-
- Subnodes of Rmail
- * Rmail Scrolling:: Scrolling through a message.
- * Rmail Motion:: Moving to another message.
- * Rmail Deletion:: Deleting and expunging messages.
- * Rmail Inbox:: How mail gets into the Rmail file.
- * Rmail Files:: Using multiple Rmail files.
- * Rmail Output:: Copying message out to files.
- * Rmail Labels:: Classifying messages by labeling them.
- * Rmail Summary:: Summaries show brief info on many messages.
- * Rmail Reply:: Sending replies to messages you are viewing.
- * Rmail Editing:: Editing message text and headers in Rmail.
- * Rmail Digest:: Extracting the messages from a digest message.
-
- Subnodes of Shell
- * Single Shell:: Commands to run one shell command and return.
- * Interactive Shell:: Permanent shell taking input via Emacs.
- * Shell Mode:: Special Emacs commands used with permanent shell.
-
- Subnodes of Customization
- * Minor Modes:: Each minor mode is one feature you can turn on
- independently of any others.
- * Variables:: Many Emacs commands examine Emacs variables
- to decide what to do; by setting variables,
- you can control their functioning.
- * Examining:: Examining or setting one variable's value.
- * Edit Options:: Examining or editing list of all variables' values.
- * Locals:: Per-buffer values of variables.
- * File Variables:: How files can specify variable values.
- * Keyboard Macros:: A keyboard macro records a sequence of keystrokes
- to be replayed with a single command.
- * Key Bindings:: The keymaps say what command each key runs.
- By changing them, you can "redefine keys".
- * Keymaps:: Definition of the keymap data structure.
- * Rebinding:: How to redefine one key's meaning conveniently.
- * Disabling:: Disabling a command means confirmation is required
- before it can be executed. This is done to protect
- beginners from surprises.
- * Syntax:: The syntax table controls how words and expressions
- are parsed.
- * Init File:: How to write common customizations in the `.emacs'
- file.
- * Audible Bell:: Changing how Emacs sound the bell.
- * Faces::
- Changing the fonts and colors of a region of text.
-
- Subnodes of Lossage (and recovery)
- * Stuck Recursive:: `[...]' in mode line around the parentheses.
- * Screen Garbled:: Garbage on the screen.
- * Text Garbled:: Garbage in the text.
- * Unasked-for Search::Spontaneous entry to incremental search.
- * Emergency Escape:: Emergency escape--
- What to do if Emacs stops responding.
- * Total Frustration:: When you are at your wits' end.
-
- File: emacs, Node: Distrib, Next: License, Prev: Top, Up: Top
-
- Distribution
- ************
-
- Lucid GNU Emacs is "free"; this means that everyone is free to use
- it and free to redistribute it on a free basis. Lucid GNU Emacs is
- not in the public domain; it is copyrighted and there are restrictions
- on its distribution, but these restrictions are designed to permit
- everything that a good cooperating citizen would want to do. What is
- not allowed is to try to prevent others from further sharing any
- version of GNU Emacs that they might get from you. The precise
- conditions are found in the GNU General Public License that comes with
- Emacs and also appears following this section.
-
- The easiest way to get a copy of GNU Emacs is from someone else who
- has it. You need not ask for permission to do so, or tell any one
- else; just copy it.
-
- If you have access to the Internet, you can send mail to Lucid and
- we will send you information on how you can get a copy. Since the
- information may change, we are asking you to send mail rather than
- giving you instructions on how to get the copy. The email address is:
-
- emacs-distribution@lucid.com
-
- If you do not have access to the Internet, you can send mail to
- Lucid and we will send back instructions on how to obtain a copy. The
- address is:
-
- Emacs Distribution
- Lucid, Inc.
- 707 Laurel Street
- Menlo Park, California 94025
-
- Getting Earlier Versions of GNU Emacs
- =====================================
-
- Lucid GNU Emacs, the version of Emacs described in this manual, is
- not distributed by the Free Software Foundation. You can, however,
- still get other versions of Emacs from there.
-
- If you have access to the Internet, you can get the latest
- distribution version of GNU Emacs from host `prep.ai.mit.edu' using
- anonymous login. See the file `/u2/emacs/GETTING.GNU.SOFTWARE' on
- that host to find out about your options for copying and which files
- to use.
-
- You may also receive GNU Emacs when you buy a computer. Computer
- manufacturers are free to distribute copies on the same terms that
- apply to everyone else. These terms require them to give you the full
- sources, including whatever changes they may have made, and to permit
- you to redistribute the GNU Emacs received from them under the usual
- terms of the General Public License. In other words, the program must
- be free for you when you get it, not just free for the manufacturer.
-
- If you cannot get a copy in any of those ways, you can order one
- from the Free Software Foundation. Though Emacs itself is free, the
- Free Software Foundation's distribution service is not. An order form
- is included in the file `etc/DISTRIB' in the Emacs distribution. For
- further information, write to
-
- Free Software Foundation
- 675 Mass Ave
- Cambridge, MA 02139
- USA
-
- The income from distribution fees goes to support the foundation's
- purpose: the development of more free software to distribute just like
- GNU Emacs.
-
- If you find GNU Emacs useful, please send a donation to the Free
- Software Foundation. This will help support development of the rest
- of the GNU system, and other useful software beyond that. Your
- donation is tax deductible.
-
- File: emacs, Node: License, Next: Intro, Prev: Distrib, Up: Top
-
- GNU GENERAL PUBLIC LICENSE
- **************************
-
- Version 1, February 1989
-
- Copyright (C) 1989 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
- ========
-
- The license agreements of most software companies try to keep users
- at the mercy of those companies. By contrast, our General Public
- License is intended to guarantee your freedom to share and change free
- software--to make sure the software is free for all its users. The
- General Public License applies to the Free Software Foundation's
- software and to any other program whose authors commit to using it.
- You can use it for your programs, too.
-
- When we speak of free software, we are referring to freedom, not
- price. Specifically, the General Public License is designed to make
- sure that you have the freedom to give away or sell copies of free
- software, that you receive source code or can get it if you want it,
- that you can change the software or use pieces of it in new free
- programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if you
- distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of a such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have. You must make sure that they, too, receive or can get the
- source code. And you must tell them their rights.
-
- We protect your rights with two steps: (1) copyright the software,
- and (2) offer you this license which gives you legal permission to
- copy, distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
- that everyone understands that there is no warranty for this free
- software. If the software is modified by someone else and passed on,
- we want its recipients to know that what they have is not the
- original, so that any problems introduced by others will not reflect
- on the original authors' reputations.
-
- The precise terms and conditions for copying, distribution and
- modification follow.
-
- TERMS AND CONDITIONS
-
- 1. This License Agreement applies to any program or other work which
- contains a notice placed by the copyright holder saying it may be
- distributed under the terms of this General Public License. The
- "Program", below, refers to any such program or work, and a "work
- based on the Program" means either the Program or any work
- containing the Program or a portion of it, either verbatim or
- with modifications. Each licensee is addressed as "you".
-
- 2. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an
- appropriate copyright notice and disclaimer of warranty; keep
- intact all the notices that refer to this General Public License
- and to the absence of any warranty; and give any other recipients
- of the Program a copy of this General Public License along with
- the Program. You may charge a fee for the physical act of
- transferring a copy.
-
- 3. You may modify your copy or copies of the Program or any portion
- of it, and copy and distribute such modifications under the terms
- of Paragraph 1 above, provided that you also do the following:
-
- * cause the modified files to carry prominent notices stating
- that you changed the files and the date of any change; and
-
- * cause the whole of any work that you distribute or publish,
- that in whole or in part contains the Program or any part
- thereof, either with or without modifications, to be
- licensed at no charge to all third parties under the terms
- of this General Public License (except that you may choose
- to grant warranty protection to some or all third parties,
- at your option).
-
- * If the modified program normally reads commands
- interactively when run, you must cause it, when started
- running for such interactive use in the simplest and most
- usual way, to print or display an announcement including an
- appropriate copyright notice and a notice that there is no
- warranty (or else, saying that you provide a warranty) and
- that users may redistribute the program under these
- conditions, and telling the user how to view a copy of this
- General Public License.
-
- * You may charge a fee for the physical act of transferring a
- copy, and you may at your option offer warranty protection in
- exchange for a fee.
-
- Mere aggregation of another independent work with the Program
- (or its derivative) on a volume of a storage or distribution
- medium does not bring the other work under the scope of these
- terms.
-
- 4. You may copy and distribute the Program (or a portion or
- derivative of it, under Paragraph 2) in object code or executable
- form under the terms of Paragraphs 1 and 2 above provided that
- you also do one of the following:
-
- * accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- * accompany it with a written offer, valid for at least three
- years, to give any third party free (except for a nominal
- charge for the cost of distribution) a complete
- machine-readable copy of the corresponding source code, to
- be distributed under the terms of Paragraphs 1 and 2 above;
- or,
-
- * accompany it with the information you received as to where
- the corresponding source code may be obtained. (This
- alternative is allowed only for noncommercial distribution
- and only if you received the program in object code or
- executable form alone.)
-
- Source code for a work means the preferred form of the work
- for making modifications to it. For an executable file, complete
- source code means all the source code for all modules it
- contains; but, as a special exception, it need not include source
- code for modules which are standard libraries that accompany the
- operating system on which the executable file runs, or for
- standard header files or definitions files that accompany that
- operating system.
-
- 5. You may not copy, modify, sublicense, distribute or transfer the
- Program except as expressly provided under this General Public
- License. Any attempt otherwise to copy, modify, sublicense,
- distribute or transfer the Program is void, and will
- automatically terminate your rights to use the Program under this
- License. However, parties who have received copies, or rights to
- use copies, from you under this General Public License will not
- have their licenses terminated so long as such parties remain in
- full compliance.
-
- 6. By copying, distributing or modifying the Program (or any work
- based on the Program) you indicate your acceptance of this
- license to do so, and all its terms and conditions.
-
- 7. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program
- subject to these terms and conditions. You may not impose any
- further restrictions on the recipients' exercise of the rights
- granted herein.
-
- 8. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such
- new versions will be similar in spirit to the present version,
- but may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of the license which applies
- to it and "any later version", you have the option of following
- the terms and conditions either of that version or of any later
- version published by the Free Software Foundation. If the
- Program does not specify a version number of the license, you may
- choose any version ever published by the Free Software Foundation.
-
- 9. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to
- the author to ask for permission. For software which is
- copyrighted by the Free Software Foundation, write to the Free
- Software Foundation; we sometimes make exceptions for this. Our
- decision will be guided by the two goals of preserving the free
- status of all derivatives of our free software and of promoting
- the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 10. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
- QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
- SERVICING, REPAIR OR CORRECTION.
-
- 11. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
- OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
- ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
- =======================================================
-
- If you develop a new program, and you want it to be of the greatest
- possible use to humanity, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these
- terms.
-
- To do so, attach the following notices to the program. It is
- safest to attach them to the start of each source file to most
- effectively convey the exclusion of warranty; and each file should
- have at least the "copyright" line and a pointer to where the full
- notice is found.
-
- ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
- Copyright (C) 19YY NAME OF AUTHOR
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Also add information on how to contact you by electronic and paper
- mail.
-
- If the program is interactive, make it output a short notice like
- this when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
- The hypothetical commands `show w' and `show c' should show the
- appropriate parts of the General Public License. Of course, the
- commands you use may be called something other than `show w' and `show
- c'; they could even be mouse-clicks or menu items--whatever suits your
- program.
-
- You should also get your employer (if you work as a programmer) or
- your school, if any, to sign a "copyright disclaimer" for the program,
- if necessary. Here a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- program `Gnomovision' (a program to direct compilers to make passes
- at assemblers) written by James Hacker.
-
- SIGNATURE OF TY COON, 1 April 1989
- Ty Coon, President of Vice
-
- That's all there is to it!
-
- File: emacs, Node: Intro, Next: Glossary, Prev: License, Up: Top
-
- Introduction
- ************
-
- You are reading about GNU Emacs, the GNU incarnation of the
- advanced, self-documenting, customizable, extensible real-time display
- editor Emacs. (The `G' in `GNU' is not silent.)
-
- We say that Emacs is a "display" editor because normally the text
- being edited is visible on the screen and is updated automatically as
- you type. *Note Display: Screen.
-
- We call Emacs a "real-time" editor because the display is updated
- very frequently, usually after each character or pair of characters you
- type. This minimizes the amount of information you must keep in your
- head as you edit. *Note Real-time: Basic.
-
- We call Emacs advanced because it provides facilities that go beyond
- simple insertion and deletion: filling of text; automatic indentation
- of programs; viewing two or more files at once; and dealing in terms of
- characters, words, lines, sentences, paragraphs, and pages, as well as
- expressions and comments in several different programming languages.
- It is much easier to type one command meaning "go to the end of the
- paragraph" than to find that spot with simple cursor keys.
-
- "Self-documenting" means that at any time you can type a special
- character, `Control-h', to find out what your options are. You can
- also use `C-h' to find out what a command does, or to find all the
- commands relevant to a topic. *Note Help::.
-
- "Customizable" means you can change the definitions of Emacs
- commands. For example, if you use a programming language in which
- comments start with `<**' and end with `**>', you can tell the Emacs
- comment manipulation commands to use those strings (*note
- Comments::.). Another sort of customization is rearrangement of the
- command set. For example, you can set up the four basic cursor motion
- commands (up, down, left and right) on keys in a diamond pattern on the
- keyboard if you prefer. *Note Customization::.
-
- "Extensible" means you can go beyond simple customization and write
- entirely new commands, programs in the Lisp language to be run by
- Emacs's own Lisp interpreter. Emacs is an "on-line extensible"
- system: it is divided into many functions that call each other. You
- can redefine any function in the middle of an editing session and
- replace any part of Emacs without making a separate copy of all of
- Emacs. Most of the editing commands of Emacs are written in Lisp; the
- few exceptions could have been written in Lisp but are written in C for
- efficiency. Only a programmer can write an extension to Emacs, but
- anybody can use it afterward.
-
- File: emacs, Node: Screen, Next: Keystrokes, Prev: Concept Index, Up: Top
-
- The Emacs Screen
- ****************
-
- Since Emacs was developed on environments that only had one window
- taking up the whole screen, the terminology used here reflects those
- environments:
-
- Screen
- In many environments, such as a tty terminal, an Emacs screen
- literally takes up the whole screen. If you are running Emacs in
- a multi-window system like the X Window System, the Emacs screen
- takes up one X window. *Note Emacs under X::, for more
- information.
-
- Window
- No matter what environment you are running in, Emacs allows you
- to look at several buffers at the same time by having several
- windows be part of the screen. Often, the whole screen is taken
- up by just one window, but you can split the screen into two or
- more subwindows. If you are running Emacs under the X window
- system, that means you can have several "Emacs windows" inside
- the X window that contains the Emacs screen. You can even have
- multiple screens in different X windows, each with their own set
- of subwindows.
-
- Each Emacs screen displays a variety of information:
-
- * The biggest area usually displays the text you are editing. It
- may consist of one window or of two windows or more if you need
- to look at two buffers a the same time.
-
- * Below each text window's last line is a "mode line" (*note Mode
- Line::.), which describes what is going on in that window. The
- mode line is in inverse video if the terminal supports that. If
- there are several Emacs windows in one screen, each window has
- its own mode line.
-
- * At the bottom of each Emacs screen is the "echo area" or
- "minibuffer window"(*note Echo Area::.). It is used by Emacs to
- exchange information with the user. There is only one echo area
- per Emacs screen.
-
- * If you are running Lucid GNU Emacs under the X Window System, a
- menu bar at the top of the screen makes shortcuts to several of
- the commands available (*note Pull-down Menus::.).
-
- You can subdivide the Emacs screen into multiple text windows, and
- use each window for a different file (*note Windows::.). Multiple
- Emacs windows are tiled vertically on the Emacs screen. The upper
- Emacs window is separated from the lower window by its mode line.
-
- When there are multiple, tiled Emacs windows on a single Emacs
- screen, the Emacs window receiving input from the keyboard has the
- "keyboard focus" and is called the "selected window". The selected
- window contains the cursor which indicates the insertion point. If
- you are working in an environment that permits multiple Emacs screens,
- and you move the focus from one Emacs screen into another, the
- selected window is the one that was last selected in that screen.
-
- The same text can be displayed simultaneously in several Emacs
- windows, which can be in different Emacs screens. If you alter the
- text in an Emacs buffer by editing it in one Emacs window, the changes
- are visible in all Emacs windows containing that buffer.
-
- * Menu:
-
- * Point:: The place in the text where editing commands operate.
- * Echo Area:: Short messages appear at the bottom of the screen.
- * Mode Line:: Interpreting the mode line.
- * Emacs under X:: Some information on Using Emacs under the X
- Window System.
- * Pull-down Menus:: Menus available in Lucid GNU Emacs
-
- File: emacs, Node: Emacs under X, Prev: Screen, Up: Screen
-
- Using Emacs under the X Window System
- =====================================
-
- Lucid GNU Emacs can be used with the X Window System and a window
- manager like MWM or TWM. In that case, the X Window System window
- manager opens, closes, and resizes Emacs screens. You use the window
- manager's mouse gestures to perform the operations. Consult your
- window manager guide or reference manual for information on
- manipulating X windows.
-
- When you are working under X, each X window (that is, each Emacs
- screen) has a menu bar for mouse-controlled operations (*note
- Pull-down Menus::.).
-
- Emacs under X is also a multi-screen Emacs. You can call the
- function `x-new-screen' or use the New Screen menu item from the File
- menu to create a new Emacs screen in a new X window from the same
- process. The different screens will share the same buffer list, but
- you can look at different buffers in the different screens. You can
- control the number of screens associated with the current display, by
- setting the variable `x-screen-count'.
-
- The function `find-file-new-screen' is just like `find-file', but
- creates a new screen to display the buffer in first.
-
- The function `switch-to-buffer-new-screen' is just like
- `switch-to-buffer', but creates a new screen to display the buffer in
- first.
-
- You can specify a different default screen size other than the one
- provided. Use the variable `screen-default-alist', which is an alist
- of default values for screen creation other than the first one. These
- may be set in your init file, like this:
-
- (setq screen-default-alist ((width . 80) (height . 55)))
-
- For values specific to the first Emacs screen, you must use X
- resources. The variable `x-screen-defaults' takes an alist of default
- screen creation parameters for X window screens. These override what
- is specified in `~/.Xdefaults' but are overridden by the arguments to
- the particular call to `x-create-screen'.
-
- When you create a new screen, the variable `create-screen-hook'
- causes the screen to be displayed with a menubar. The variable takes a
- function with one argument, SCREEN, that is called with each newly
- created screen.
-
- If you want to close one or more of the X windows you created using
- New Screen, use the Close menu item from the File menu.
-
- If you are working with multiple screens, some special information
- applies:
-
- * `screen-icon-title-format' determine the title of the screen and
- the title of the icon that results if you shrink the screen.
-
- * `auto-raise-screen' position a screen. If true,
- `auto-lower-screen' lowers a screen to the bottom when it is no
- longer selected. If true, `auto-raise-screen' raises a screen to
- the top when it is selected. Under X, most ICCCM-compliant window
- managers will have options to do this for you, but these
- variables are provided in case you are using a broken window
- manager.
-
- * to the name of the current screen (a screen's name is distinct
- from its title; the name is used for resource lookup, among other
- things, and the title is simply what appears above the window.)
-
- File: emacs, Node: Echo Area, Next: Mode Line, Prev: Point, Up: Screen
-
- The Echo Area
- =============
-
- The line at the bottom of the screen (below the mode line) is the
- "echo area". Emacs uses this area to communicate with the user:
-
- * "Echoing" means printing out the characters that the user
- types. Emacs never echoes single-character commands.
- Multi-character commands are echoed only if you pause while
- typing them: As soon as you pause for more than one second in the
- middle of a command, all the characters of the command so far are
- echoed. This is intended to "prompt" you for the rest of the
- command. Once echoing has started, the rest of the command is
- echoed immediately as you type it. This behavior is designed to
- give confident users fast response, while giving hesitant users
- maximum feedback. You can change this behavior by setting a
- variable (*note Display Vars::.).
-
- * If you issue a command that cannot be executed, Emacs may print
- an "error message" in the echo area. Error messages are
- accompanied by a beep or by flashing the screen. Any input you
- have typed ahead is thrown away when an error happens.
-
- * Some commands print informative messages in the echo area.
- These messages look similar to error messages, but are not
- announced with a beep and do not throw away input. Sometimes a
- message tells you what the command has done, when this is not
- obvious from looking at the text being edited. Sometimes the
- sole purpose of a command is to print a message giving you
- specific information. For example, the command `C-x =' is used
- to print a message describing the character position of point in
- the text and its current column in the window. Commands that
- take a long time often display messages ending in `...' while
- they are working, and add `done' at the end when they are
- finished.
-
- * The echo area is also used to display the "minibuffer", a window
- that is used for reading arguments to commands, such as the name
- of a file to be edited. When the minibuffer is in use, the echo
- area displays with a prompt string that usually ends with a
- colon. The cursor appears after the prompt. You can always get
- out of the minibuffer by typing `C-g'. *Note Minibuffer::.
-
- File: emacs, Node: Mode Line, Prev: Echo Area, Up: Screen
-
- The Mode Line
- =============
-
- Each text window's last line is a "mode line" which describes what
- is going on in that window. When there is only one text window, the
- mode line appears right above the echo area. The mode line is in
- inverse video if the terminal supports that, starts and ends with
- dashes, and contains text like `Emacs: SOMETHING'.
-
- If a mode line has something else in place of `Emacs: SOMETHING',
- the window above it is in a special subsystem such as Dired. The mode
- line then indicates the status of the subsystem.
-
- Normally, the mode line has the following appearance:
-
- --CH-Emacs: BUF (MAJOR MINOR)----POS------
-
- This gives information about the buffer being displayed in the window:
- the buffer's name, what major and minor modes are in use, whether the
- buffer's text has been changed, and how far down the buffer you are
- currently looking.
-
- CH contains two stars `**' if the text in the buffer has been
- edited (the buffer is "modified"), or `--' if the buffer has not been
- edited. Exception: for a read-only buffer, it is `%%'.
-
- BUF is the name of the window's chosen "buffer". The chosen buffer
- in the selected window (the window that the cursor is in) is also
- Emacs's selected buffer, the buffer in which editing takes place. When
- we speak of what some command does to "the buffer", we mean the
- currently selected buffer. *Note Buffers::.
-
- POS tells you whether there is additional text above the top of the
- screen, or below the bottom. If your file is small and it is
- completely visible on the screen, POS is `All'. Otherwise, POS is
- `Top' if you are looking at the beginning of the file, `Bot' if you
- are looking at the end of the file, or `NN%', where NN is the
- percentage of the file above the top of the screen.
-
- MAJOR is the name of the "major mode" in effect in the buffer. At
- any time, each buffer is in one and only one major mode. The
- available major modes include Fundamental mode (the least specialized),
- Text mode, Lisp mode, and C mode. *Note Major Modes::, for details on
- how the modes differ and how you select one.
-
- MINOR is a list of some of the "minor modes" that are turned on in
- the window's chosen buffer. For example, `Fill' means that Auto Fill
- mode is on. `Abbrev' means that Word Abbrev mode is on. `Ovwrt'
- means that Overwrite mode is on. *Note Minor Modes::, for more
- information. `Narrow' means that the buffer being displayed has
- editing restricted to only a portion of its text. This is not really a
- minor mode, but is like one. *Note Narrowing::. `Def' means that a
- keyboard macro is being defined. *Note Keyboard Macros::.
-
- Some buffers display additional information after the minor modes.
- For example, Rmail buffers display the current message number and the
- total number of messages. Compilation buffers and Shell mode display
- the status of the subprocess.
-
- If Emacs is currently inside a recursive editing level, square
- brackets (`[...]') appear around the parentheses that surround the
- modes. If Emacs is in one recursive editing level within another,
- double square brackets appear, and so on. Since information on
- recursive editing applies to Emacs in general and not to any one
- buffer, the square brackets appear in every mode line on the screen or
- not in any of them. *Note Recursive Edit::.
-
- Emacs can optionally display the time and system load in all mode
- lines. To enable this feature, type `M-x display-time'. The
- information added to the mode line usually appears after the file
- name, before the mode names and their parentheses. It looks like this:
-
- HH:MMpm L.LL [D]
-
- (Some fields may be missing if your operating system cannot support
- them.) HH and MM are the hour and minute, followed always by `am' or
- `pm'. L.LL is the average number of running processes in the whole
- system recently. D is an approximate index of the ratio of disk
- activity to cpu activity for all users.
-
- The word `Mail' appears after the load level if there is mail for
- you that you have not read yet.
-
- Customization note: the variable `mode-line-inverse-video' controls
- whether the mode line is displayed in inverse video (assuming the
- terminal supports it); `nil' means no inverse video. The default
- is`t'. For X screens, simply set the foreground and background colors
- appropriately.
-
- File: emacs, Node: Point, Next: Echo Area, Prev: Screen, Up: Screen
-
- Point
- =====
-
- When Emacs is running, the cursor shows the location at which
- editing commands will take effect. This location is called "point".
- You can use keystrokes or the mouse cursor to move point through the
- text and edit the text at different places.
-
- While the cursor appears to point AT a character, you should think
- of point as BETWEEN two characters: it points BEFORE the character on
- which the cursor appears. Sometimes people speak of "the cursor" when
- they mean "point", or speak of commands that move point as "cursor
- motion" commands.
-
- Each Emacs screen has only one cursor. When output is in progress,
- the cursor must appear where the typing is being done. This does not
- mean that point is moving. It is only that Emacs has no way to show
- you the location of point except when the terminal is idle.
-
- If you are editing several files in Emacs, each file has its own
- point location. A file that is not being displayed remembers where
- point is. Point becomes visible at the correct location when you look
- at the file again.
-
- When there are multiple text windows, each window has its own point
- location. The cursor shows the location of point in the selected
- window. The visible cursor also shows you which window is selected.
- If the same buffer appears in more than one window, point can be moved
- in each window independently.
-
- The term `point' comes from the character `.', which was the
- command in TECO (the language in which the original Emacs was written)
- for accessing the value now called `point'.
-