mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
1007 lines
No EOL
48 KiB
Text
1007 lines
No EOL
48 KiB
Text
This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
|
||
input file emacs.texi.
|
||
|
||
This file documents the GNU Emacs editor.
|
||
|
||
Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
|
||
|
||
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:
|
||
|
||
* Distrib:: How to get the latest Emacs distribution.
|
||
* License:: The GNU General Public License gives you permission
|
||
to redistribute GNU Emacs on certain terms; and also
|
||
explains that there is no warranty.
|
||
* Intro:: An introduction to Emacs concepts.
|
||
* Glossary:: The glossary.
|
||
* Version 19:: Changes coming in Emacs version 19, to be released.
|
||
* 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.
|
||
* Characters:: Emacs's character sets for file contents and for keyboard.
|
||
* Keys:: Key sequences: what you type to request one editing action.
|
||
* 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.
|
||
* 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.
|
||
* Compiling/Testing::
|
||
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.
|
||
* 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 other nodes which are really inferiors of the ones
|
||
already listed, 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 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.
|
||
* Nonincremental 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 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.
|
||
* Texinfo Mode::The major mode for editing input to the formatter Texinfo.
|
||
* 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, killing 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 Compiling/Testing
|
||
* 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.
|
||
|
||
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
|
||
************
|
||
|
||
GNU Emacs is "free"; this means that everyone is free to use it and
|
||
free to redistribute it on a free basis. 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 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, our
|
||
distribution service is not. An order form is included at the end of
|
||
manuals printed by the Foundation. It is also 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
|
||
|
||
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 is 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 your commands. *Note Display: Screen.
|
||
|
||
We call it 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 it to find out what any command does, or to find all the
|
||
commands that pertain to a topic. *Note Help::.
|
||
|
||
"Customizable" means that you can change the definitions of Emacs
|
||
commands in little ways. 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, if you prefer the four basic cursor
|
||
motion commands (up, down, left and right) on keys in a diamond pattern
|
||
on the keyboard, you can have it. *Note Customization::.
|
||
|
||
"Extensible" means that 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,
|
||
which means that it is divided into many functions that call each other,
|
||
any of which can be redefined in the middle of an editing session. Any
|
||
part of Emacs can be replaced without making a separate copy of all of
|
||
Emacs. Most of the editing commands of Emacs are written in Lisp
|
||
already; the few exceptions could have been written in Lisp but are
|
||
written in C for efficiency. Although only a programmer can write an
|
||
extension, anybody can use it afterward.
|
||
|
||
|
||
File: emacs, Node: Screen, Next: Characters, Prev: Concept Index, Up: Top
|
||
|
||
The Organization of the Screen
|
||
******************************
|
||
|
||
Emacs divides the screen into several areas, each of which contains
|
||
its own sorts of information. The biggest area, of course, is the one
|
||
in which you usually see the text you are editing.
|
||
|
||
When you are using Emacs, the screen is divided into a number of
|
||
"windows". Initially there is one text window occupying all but the
|
||
last line, plus the special "echo area" or "minibuffer window" in the
|
||
last line. The text window can be subdivided horizontally or
|
||
vertically into multiple text windows, each of which can be used for a
|
||
different file (*note Windows::.). The window that the cursor is in is
|
||
the "selected window", in which editing takes place. The other windows
|
||
are just for reference unless you select one of them.
|
||
|
||
Each text window's last line is a "mode line" which describes what is
|
||
going on in that window. It is in inverse video if the terminal
|
||
supports that, and contains text that starts like `-----Emacs:
|
||
SOMETHING'. Its purpose is to indicate what buffer is being displayed
|
||
above it in the window; what major and minor modes are in use; and
|
||
whether the buffer's text has been changed.
|
||
|
||
* 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.
|
||
|
||
|
||
File: emacs, Node: Point, Next: Echo Area, Prev: Screen, Up: Screen
|
||
|
||
Point
|
||
=====
|
||
|
||
When Emacs is running, the terminal's cursor shows the location at
|
||
which editing commands will take effect. This location is called
|
||
"point". Other commands move point through the text, so that you can
|
||
edit at different places in it.
|
||
|
||
While the cursor appears to point AT a character, point should be
|
||
thought of as BETWEEN two characters; it points BEFORE the character
|
||
that the cursor appears on top of. Sometimes people speak of "the
|
||
cursor" when they mean "point", or speak of commands that move point as
|
||
"cursor motion" commands.
|
||
|
||
Terminals have only one cursor, and when output is in progress it
|
||
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 so that it can be seen when you look at that 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. This also is how you can tell 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'.
|
||
|
||
|
||
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". It is used to display small amounts of text for several
|
||
purposes.
|
||
|
||
"Echoing" means printing out the characters that you type. Emacs
|
||
never echoes single-character commands, and multi-character commands are
|
||
echoed only if you pause while typing them. As soon as you pause for
|
||
more than a 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 when 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 a command cannot be executed, it may print an "error message" in
|
||
the echo area. Error messages are accompanied by a beep or by flashing
|
||
the screen. Also, 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 much like error messages, but they are not announced with
|
||
a beep and do not throw away input. Sometimes the 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 begins with
|
||
a prompt string that usually ends with a colon; also, the cursor
|
||
appears in that line because it is the selected window. 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',
|
||
then 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 one that editing takes place in. When we
|
||
speak of what some command does to "the buffer", we are talking about
|
||
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 all on the
|
||
screen, POS is `All'. Otherwise, it 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 of the possible major
|
||
modes. The major modes available include Fundamental mode (the least
|
||
specialized), Text mode, Lisp mode, and C mode. *Note Major Modes::,
|
||
for details of how the modes differ and how to select one.
|
||
|
||
MINOR is a list of some of the "minor modes" that are turned on at
|
||
the moment in the window's chosen buffer. `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.
|
||
|
||
In addition, 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 this information
|
||
pertains 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 user 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'.
|
||
|
||
|
||
File: emacs, Node: Characters, Next: Keys, Prev: Screen, Up: Top
|
||
|
||
The Emacs Character Set
|
||
=======================
|
||
|
||
GNU Emacs uses the ASCII character set, which defines 128 different
|
||
character codes. Some of these codes are assigned graphic symbols such
|
||
as `a' and `='; the rest are control characters, such as `Control-a'
|
||
(also called `C-a' for short). `C-a' gets its name from the fact that
|
||
you type it by holding down the CTRL key and then pressing `a'. There
|
||
is no distinction between `C-a' and `C-A'; they are the same character.
|
||
|
||
Some control characters have special names, and special keys you can
|
||
type them with: RET, TAB, LFD, DEL and ESC. The space character is
|
||
usually referred to below as SPC, even though strictly speaking it is a
|
||
graphic character whose graphic happens to be blank.
|
||
|
||
Emacs extends the 7-bit ASCII code to an 8-bit code by adding an
|
||
extra bit to each character. This makes 256 possible command
|
||
characters. The additional bit is called Meta. Any ASCII character
|
||
can be made Meta; examples of Meta characters include `Meta-a' (`M-a',
|
||
for short), `M-A' (not the same character as `M-a', but those two
|
||
characters normally have the same meaning in Emacs), `M-RET', and
|
||
`M-C-a'. For traditional reasons, `M-C-a' is usually called `C-M-a';
|
||
logically speaking, the order in which the modifier keys CTRL and META
|
||
are mentioned does not matter.
|
||
|
||
Some terminals have a META key, and allow you to type Meta
|
||
characters by holding this key down. Thus, `Meta-a' is typed by
|
||
holding down META and pressing `a'. The META key works much like the
|
||
SHIFT key. Such a key is not always labeled META, however, as this
|
||
function is often a special option for a key with some other primary
|
||
purpose.
|
||
|
||
If there is no META key, you can still type Meta characters using
|
||
two-character sequences starting with ESC. Thus, to enter `M-a', you
|
||
could type `ESC a'. To enter `C-M-a', you would type `ESC C-a'. ESC is
|
||
allowed on terminals with Meta keys, too, in case you have formed a
|
||
habit of using it.
|
||
|
||
Emacs believes the terminal has a META key if the variable
|
||
`meta-flag' is non-`nil'. Normally this is set automatically according
|
||
to the termcap entry for your terminal type. However, sometimes the
|
||
termcap entry is wrong, and then it is useful to set this variable
|
||
yourself. *Note Variables::, for how to do this.
|
||
|
||
Emacs buffers also use an 8-bit character set, because bytes have 8
|
||
bits, but only the ASCII characters are considered meaningful. ASCII
|
||
graphic characters in Emacs buffers are displayed with their graphics.
|
||
LFD is the same as a newline character; it is displayed by starting a
|
||
new line. TAB is displayed by moving to the next tab stop column
|
||
(usually every 8 columns). Other control characters are displayed as a
|
||
caret (`^') followed by the non-control version of the character; thus,
|
||
`C-a' is displayed as `^A'. Non-ASCII characters 128 and up are
|
||
displayed with octal escape sequences; thus, character code 243
|
||
(octal), also called `M-#' when used as an input character, is
|
||
displayed as `\243'.
|
||
|
||
|
||
File: emacs, Node: Keys, Next: Commands, Prev: Characters, Up: Top
|
||
|
||
Keys
|
||
====
|
||
|
||
A "complete key"--where `key' is short for "key sequence"--is a
|
||
sequence of keystrokes that are understood by Emacs as a unit, as a
|
||
single command (possibly undefined). Most single characters constitute
|
||
complete keys in the standard Emacs command set; there are also some
|
||
multi-character keys. Examples of complete keys are `C-a', `X', RET,
|
||
`C-x C-f' and `C-x 4 C-f'.
|
||
|
||
A "prefix key" is a sequence of keystrokes that are the beginning of
|
||
a complete key, but not a whole one. Prefix keys and complete keys are
|
||
collectively called "keys".
|
||
|
||
A prefix key is the beginning of a series of longer sequences that
|
||
are valid keys; adding any single character to the end of the prefix
|
||
gives a valid key, which could be defined as an Emacs command, or could
|
||
be a prefix itself. For example, `C-x' is standardly defined as a
|
||
prefix, so `C-x' and the next input character combine to make a
|
||
two-character key. There are 256 different two-character keys starting
|
||
with `C-x', one for each possible second character. Many of these
|
||
two-character keys starting with `C-x' are standardly defined as Emacs
|
||
commands. Notable examples include `C-x C-f' and `C-x s' (*note
|
||
Files::.).
|
||
|
||
Adding one character to a prefix key does not have to form a complete
|
||
key. It could make another, longer prefix. For example, `C-x 4' is
|
||
itself a prefix that leads to 256 different three-character keys,
|
||
including `C-x 4 f', `C-x 4 b' and so on. It would be possible to
|
||
define one of those three-character sequences as a prefix, creating a
|
||
series of four-character keys, but we did not define any of them this
|
||
way.
|
||
|
||
By contrast, the two-character sequence `C-f C-k' is not a key,
|
||
because the `C-f' is a complete key in itself. It's impossible to give
|
||
`C-f C-k' an independent meaning as a command as long as `C-f' retains
|
||
its meaning. `C-f C-k' is two commands.
|
||
|
||
All told, the prefix keys in Emacs are `C-c', `C-x', `C-h', `C-x 4',
|
||
and ESC. But this is not built in; it is just a matter of Emacs's
|
||
standard key bindings. In customizing Emacs, you could make new prefix
|
||
keys, or eliminate these. *Note Key Bindings::.
|
||
|
||
Whether a sequence is a key can be changed by customization. For
|
||
example, if you redefine `C-f' as a prefix, `C-f C-k' automatically
|
||
becomes a key (complete, unless you define it too as a prefix).
|
||
Conversely, if you remove the prefix definition of `C-x 4', then `C-x 4
|
||
f' (or `C-x 4 ANYTHING') is no longer a key.
|
||
|
||
|