mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-26 07:33:47 +00:00
1466 lines
65 KiB
Plaintext
1466 lines
65 KiB
Plaintext
\input texinfo
|
|
|
|
@setchapternewpage odd
|
|
@settitle GNU Emacs Manual
|
|
@setfilename ../info/emacs
|
|
@synindex pg cp
|
|
|
|
@ifinfo
|
|
@c The edition number appears in several places in this file
|
|
This is the thirteenth edition of the @cite{GNU Emacs Manual},
|
|
updated for Emacs version 20.4
|
|
@c Please REMEMBER to update edition number in *three* places in this file.
|
|
|
|
@dircategory Editors
|
|
@direntry
|
|
* Emacs: (emacs). The extensible self-documenting text editor.
|
|
@end direntry
|
|
|
|
Published by the Free Software Foundation
|
|
59 Temple Place, Suite 330
|
|
Boston, MA 02111-1307 USA
|
|
|
|
Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999
|
|
Free Software Foundation, 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.
|
|
|
|
@ignore
|
|
Permission is granted to process this file through Tex and print the
|
|
results, provided the printed document carries copying permission
|
|
notice identical to this one except for the removal of this paragraph
|
|
(this paragraph not being relevant to the printed manual).
|
|
|
|
@end ignore
|
|
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 Free Software Foundation instead of in the
|
|
original English.
|
|
@end ifinfo
|
|
|
|
@c in general, keep the following line commented out, unless doing a
|
|
@c copy of this manual that will be published. the manual should go
|
|
@c onto the distribution in the full, 8.5 x 11" size.
|
|
|
|
@smallbook
|
|
|
|
@iftex
|
|
@kbdinputstyle code
|
|
|
|
@shorttitlepage GNU Emacs Manual
|
|
@end iftex
|
|
@titlepage
|
|
@sp 6
|
|
@center @titlefont{GNU Emacs Manual}
|
|
@sp 4
|
|
@center Thirteenth Edition, Updated for Emacs Version 20.4
|
|
@sp 5
|
|
@center Richard Stallman
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
Copyright @copyright{} 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999
|
|
Free Software Foundation, Inc.
|
|
@sp 2
|
|
Thirteenth Edition @*
|
|
Updated for Emacs Version 20.4, @*
|
|
February 1999
|
|
|
|
ISBN 1-882114-06-X
|
|
@sp 1
|
|
Published by the Free Software Foundation @*
|
|
59 Temple Place, Suite 330 @*
|
|
Boston, MA 02111-1307 USA
|
|
@sp 1
|
|
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 Free Software Foundation instead of in the
|
|
original English.
|
|
|
|
@sp 2
|
|
Cover art by Etienne Suvasa.
|
|
|
|
@end titlepage
|
|
@page
|
|
@ifinfo
|
|
@node Top, Distrib, (dir), (dir)
|
|
@top 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; it corresponds to GNU Emacs version 20.4.
|
|
For information on extending Emacs, see @ref{,Emacs Lisp,, elisp, The
|
|
Emacs Lisp Reference Manual}.
|
|
@end ifinfo
|
|
|
|
@ignore
|
|
These subcategories have been deleted for simplicity
|
|
and to avoid conflicts.
|
|
Completion
|
|
Backup Files
|
|
Auto-Saving: Protection Against Disasters
|
|
Snapshots
|
|
Text Mode
|
|
Outline Mode
|
|
@TeX{} Mode
|
|
Formatted Text
|
|
Fortran Mode
|
|
Fortran Indentation
|
|
Shell Command History
|
|
|
|
The ones for Dired and Rmail have had the items turned into :: items
|
|
to avoid conflicts.
|
|
Also Running Shell Commands from Emacs
|
|
and Sending Mail and Registers and Minibuffer.
|
|
@end ignore
|
|
|
|
@menu
|
|
* Distrib:: How to get the latest Emacs distribution.
|
|
* Copying:: The GNU General Public License gives you permission
|
|
to redistribute GNU Emacs on certain terms;
|
|
it also explains that there is no warranty.
|
|
* Intro:: An introduction to Emacs concepts.
|
|
* Glossary:: The glossary.
|
|
* Antinews:: Information about Emacs version 19.
|
|
* MS-DOS:: Using Emacs on MS-DOS (otherwise known as "MS-DOG").
|
|
* Manifesto:: What's GNU? Gnu's Not Unix!
|
|
* Acknowledgments:: Major contributors to GNU Emacs.
|
|
|
|
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.
|
|
* User Input:: Kinds of input events (characters, buttons,
|
|
function keys).
|
|
* Keys:: Key sequences: what you type to request one
|
|
editing action.
|
|
* Commands:: Named functions run by key sequences to do editing.
|
|
* Text Characters:: Character set for text (the contents of buffers
|
|
and strings).
|
|
* Entering Emacs:: Starting Emacs from the shell.
|
|
* Exiting:: Stopping or killing Emacs.
|
|
* Command Arguments:: Hairy startup options.
|
|
|
|
Fundamental Editing Commands
|
|
* Basic:: The most basic editing commands.
|
|
* 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.
|
|
|
|
Major Structures of Emacs
|
|
* Files:: All about handling files.
|
|
* Buffers:: Multiple buffers; editing several files at once.
|
|
* Windows:: Viewing two pieces of text at once.
|
|
* Frames:: Running the same Emacs session in multiple X windows.
|
|
* International:: Using non-ASCII character sets (the MULE features).
|
|
|
|
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.
|
|
* Building:: 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.
|
|
* Dired:: You can ``edit'' a directory to manage files in it.
|
|
* Calendar/Diary:: The calendar and diary facilities.
|
|
* Gnus:: How to read netnews with Emacs.
|
|
* Shell:: Executing shell commands from Emacs.
|
|
* Emacs Server:: Using Emacs as an editing server for @code{mail}, etc.
|
|
* Hardcopy:: Printing buffers or regions.
|
|
* PostScript:: Printing buffers or regions as PostScript.
|
|
* PostScript Variables::
|
|
Customizing the PostScript printing commands.
|
|
* Sorting:: Sorting lines, paragraphs or pages within Emacs.
|
|
* Narrowing:: Restricting display and editing to a portion
|
|
of the buffer.
|
|
* Two-Column:: Splitting apart columns to edit them
|
|
in side-by-side windows.
|
|
* Editing Binary Files::
|
|
Using Hexl mode to edit binary files.
|
|
* Saving Emacs Sessions::
|
|
Saving Emacs state from one session to the next.
|
|
* Recursive Edit:: A command can allow you to do editing
|
|
"within the command". This is called a
|
|
`recursive editing level'.
|
|
* Emulation:: Emulating some other editors with Emacs.
|
|
* Dissociated Press:: Dissociating text for fun.
|
|
* Amusements:: Various games and hacks.
|
|
* 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.
|
|
* Contributing:: How to contribute improvements to Emacs.
|
|
* Service:: How to get help for your own Emacs needs.
|
|
|
|
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:
|
|
|
|
--- The Detailed Node Listing ---
|
|
|
|
The Organization of the 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.
|
|
* Menu Bar:: How to use the menu bar.
|
|
|
|
Basic Editing Commands
|
|
|
|
* Inserting Text:: Inserting text by simply typing it.
|
|
* Moving Point:: How to move the cursor to the place where you want to
|
|
change something.
|
|
* Erasing:: Deleting and killing text.
|
|
* Undo:: Undoing recent changes in the text.
|
|
* Files: Basic Files. Visiting, creating, and saving files.
|
|
* Help: Basic Help. Asking what a character does.
|
|
* 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:: Numeric arguments for repeating a command.
|
|
|
|
The Minibuffer
|
|
|
|
* Minibuffer File:: Entering file names with the minibuffer.
|
|
* Minibuffer Edit:: How to edit in the minibuffer.
|
|
* Completion:: An abbreviation facility for minibuffer input.
|
|
* Minibuffer History:: Reusing recent minibuffer arguments.
|
|
* Repetition:: Re-executing commands that used the minibuffer.
|
|
|
|
Help
|
|
|
|
* Help Summary:: Brief list of all Help commands.
|
|
* Key Help:: Asking what a key does in Emacs.
|
|
* Name Help:: Asking about a command, variable or function name.
|
|
* Apropos:: Asking what pertains to a given topic.
|
|
* Library Keywords:: Finding Lisp libraries by keywords (topics).
|
|
* Language Help:: Help relating to international language support.
|
|
* Misc Help:: Other help commands.
|
|
|
|
The Mark and the Region
|
|
|
|
* Setting Mark:: Commands to set the mark.
|
|
* Transient Mark:: How to make Emacs highlight the region--
|
|
when there is one.
|
|
* 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.
|
|
* Global Mark Ring:: Previous mark positions in various buffers.
|
|
|
|
Deletion and Killing
|
|
|
|
* Deletion:: Commands for deleting small amounts of text and
|
|
blank areas.
|
|
* Killing by Lines:: How to kill entire lines of text at one time.
|
|
* Other Kill Commands:: Commands to kill large regions of text and
|
|
syntactic units such as words and sentences.
|
|
|
|
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.
|
|
|
|
Registers
|
|
|
|
* RegPos:: Saving positions in registers.
|
|
* RegText:: Saving text in registers.
|
|
* RegRect:: Saving rectangles in registers.
|
|
* RegConfig:: Saving window configurations in registers.
|
|
* RegFiles:: File names in registers.
|
|
* Bookmarks:: Bookmarks are like registers, but persistent.
|
|
|
|
Controlling the Display
|
|
|
|
* Scrolling:: Moving text up and down in a window.
|
|
* Horizontal Scrolling:: Moving text left and right in a window.
|
|
* Follow Mode:: Follow mode lets two windows scroll as one.
|
|
* Selective Display:: Hiding lines with lots of indentation.
|
|
* Optional Mode Line:: Optional mode line display features.
|
|
* Text Display:: How text is normally displayed.
|
|
* Display Vars:: Information on variables for customizing display.
|
|
|
|
Searching and Replacement
|
|
|
|
* 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.
|
|
* Other Repeating Search:: Operating on all matches for some regexp.
|
|
|
|
Replacement Commands
|
|
|
|
* Unconditional Replace:: Replacing all matches for a string.
|
|
* Regexp Replace:: Replacing all matches for a regexp.
|
|
* Replacement and Case:: How replacements preserve case of letters.
|
|
* Query Replace:: How to use querying.
|
|
|
|
Commands for Fixing Typos
|
|
|
|
* 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 buffer.
|
|
|
|
File Handling
|
|
|
|
* 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.
|
|
* Reverting:: Reverting cancels all the changes not saved.
|
|
* Auto Save:: Auto Save periodically protects against loss of data.
|
|
* File Aliases:: Handling multiple names for one file.
|
|
* Version Control:: Version control systems (RCS, CVS and SCCS).
|
|
* Directories:: Creating, deleting, and listing file directories.
|
|
* Comparing Files:: Finding where two files differ.
|
|
* Misc File Ops:: Other things you can do on files.
|
|
* Compressed Files:: Accessing compressed files.
|
|
* Remote Files:: Accessing files on other sites.
|
|
* Quoted File Names:: Quoting special characters in file names.
|
|
|
|
Saving Files
|
|
|
|
* Backup:: How Emacs saves the old version of your file.
|
|
* Interlocking:: How Emacs protects against simultaneous editing
|
|
of one file by two users.
|
|
|
|
Version Control
|
|
|
|
* Introduction to VC:: How version control works in general.
|
|
* VC Mode Line:: How the mode line shows version control status.
|
|
* Basic VC Editing:: How to edit a file under version control.
|
|
* Old Versions:: Examining and comparing old versions.
|
|
* Secondary VC Commands:: The commands used a little less frequently.
|
|
* Branches:: Multiple lines of development.
|
|
* Snapshots:: Sets of file versions treated as a unit.
|
|
* Miscellaneous VC:: Various other commands and features of VC.
|
|
* Customizing VC:: Variables that change VC's behavior.
|
|
|
|
Using Multiple 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-onlyness; copying text.
|
|
* 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.
|
|
* Indirect Buffers:: An indirect buffer shares the text of another buffer.
|
|
|
|
Multiple 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.
|
|
* Force Same Window:: Forcing certain buffers to appear in the selected
|
|
window rather than in another window.
|
|
* Change Window:: Deleting windows and changing their sizes.
|
|
|
|
Frames and X Windows
|
|
|
|
* Mouse Commands:: Moving, cutting, and pasting, with the mouse.
|
|
* Secondary Selection:: Cutting without altering point and mark.
|
|
* Mouse References:: Using the mouse to select an item from a list.
|
|
* Menu Mouse Clicks:: Mouse clicks that bring up menus.
|
|
* Mode Line Mouse:: Mouse clicks on the mode line.
|
|
* Creating Frames:: Creating additional Emacs frames with various contents.
|
|
* Multiple Displays:: How one Emacs job can talk to several displays.
|
|
* Special Buffer Frames:: You can make certain buffers have their own frames.
|
|
* Frame Parameters:: Changing the colors and other modes of frames.
|
|
* Scroll Bars:: How to enable and disable scroll bars; how to use them.
|
|
* Menu Bars:: Enabling and disabling the menu bar.
|
|
* Faces:: How to change the display style using faces.
|
|
* Font Lock:: Minor mode for syntactic highlighting using faces.
|
|
* Support Modes:: Font Lock support modes make Font Lock faster.
|
|
* Misc X:: Iconifying and deleting frames. Region highlighting.
|
|
* Non-Window Terminals:: Multiple frames on terminals that show only one.
|
|
|
|
Font Lock Support Modes
|
|
|
|
* Fast Lock Mode:: Saving font information in files.
|
|
* Lazy Lock Mode:: Fontifying only text that is actually displayed.
|
|
* Fast or Lazy:: Which support mode is best for you?
|
|
|
|
International Character Set Support
|
|
|
|
* International Intro:: Basic concepts of multibyte characters.
|
|
* Enabling Multibyte:: Controlling whether to use multibyte characters.
|
|
* Language Environments:: Setting things up for the language you use.
|
|
* Input Methods:: Entering text characters not on your keyboard.
|
|
* Select Input Method:: Specifying your choice of input methods.
|
|
* Coding Systems:: Character set conversion when you read and
|
|
write files, and so on.
|
|
* Recognize Coding:: How Emacs figures out which conversion to use.
|
|
* Specify Coding:: Various ways to choose which conversion to use.
|
|
* Fontsets:: Fontsets are collections of fonts
|
|
that cover the whole spectrum of characters.
|
|
* Defining Fontsets:: Defining a new fontset.
|
|
* Single-Byte Character Support::
|
|
You can pick one European character set
|
|
to use without multibyte characters.
|
|
|
|
Major Modes
|
|
|
|
* Choosing Modes:: How major modes are specified or chosen.
|
|
|
|
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.
|
|
|
|
Commands for Human Languages
|
|
|
|
* 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.
|
|
* Text Mode:: The major modes for editing text files.
|
|
* Outline Mode:: Editing outlines.
|
|
* TeX Mode:: Editing input to the formatter TeX.
|
|
* Nroff Mode:: Editing input to the formatter nroff.
|
|
* Formatted Text:: Editing formatted text directly in WYSIWYG fashion.
|
|
|
|
Filling Text
|
|
|
|
* Auto Fill:: Auto Fill mode breaks long lines automatically.
|
|
* Fill Commands:: Commands to refill paragraphs and center lines.
|
|
* Fill Prefix:: Filling paragraphs that are indented
|
|
or in a comment, etc.
|
|
* Adaptive Fill:: How Emacs can determine the fill prefix automatically.
|
|
|
|
Editing Programs
|
|
|
|
* Program Modes:: Major modes for editing programs.
|
|
* Lists:: Expressions with balanced parentheses.
|
|
* List Commands:: The commands for working with list and sexps.
|
|
* Defuns:: Each program is made up of separate functions.
|
|
There are editing commands to operate on them.
|
|
* Program Indent:: 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.
|
|
* Symbol Completion:: Completion on symbol names of your program or language.
|
|
* Documentation:: Getting documentation of functions you plan to call.
|
|
* Change Log:: Maintaining a change history for your program.
|
|
* Tags:: Go directly to any function in your program in one
|
|
command. Tags remembers which file it is in.
|
|
* Emerge:: A convenient way of merging two versions of a program.
|
|
* C Modes:: Special commands of C, C++, Objective-C and Java modes.
|
|
* Fortran:: Fortran mode and its special features.
|
|
* Asm Mode:: Asm mode and its special features.
|
|
|
|
Indentation for Programs
|
|
|
|
* Basic Indent:: Indenting a single line.
|
|
* Multi-line Indent:: Commands to reindent many lines at once.
|
|
* Lisp Indent:: Specifying how each Lisp function should be indented.
|
|
* C Indent:: Choosing an indentation style for C code.
|
|
|
|
Tags Tables
|
|
|
|
* Tag Syntax:: Tag syntax for various types of code and text files.
|
|
* Create Tags Table:: Creating a tags table with @code{etags}.
|
|
* Select Tags Table:: How to visit a tags table.
|
|
* Find Tag:: Commands to find the definition of a specific tag.
|
|
* Tags Search:: Using a tags table for searching and replacing.
|
|
* List Tags:: Listing and finding tags defined in a file.
|
|
|
|
Merging Files with Emerge
|
|
|
|
* Overview of Emerge:: How to start Emerge. Basic concepts.
|
|
* Submodes of Emerge:: Fast mode vs. Edit mode.
|
|
Skip Prefers mode and Auto Advance mode.
|
|
* State of Difference:: You do the merge by specifying state A or B
|
|
for each difference.
|
|
* Merge Commands:: Commands for selecting a difference,
|
|
changing states of differences, etc.
|
|
* Exiting Emerge:: What to do when you've finished the merge.
|
|
* Combining in Emerge:: How to keep both alternatives for a difference.
|
|
* Fine Points of Emerge:: Misc.
|
|
|
|
Compiling and Testing Programs
|
|
|
|
* Compilation:: Compiling programs in languages other
|
|
than Lisp (C, Pascal, etc.).
|
|
* Compilation Mode:: The mode for visiting compiler errors.
|
|
* Compilation Shell:: Customizing your shell properly
|
|
for use in the compilation buffer.
|
|
* Debuggers:: Running symbolic debuggers for non-Lisp programs.
|
|
* Executing Lisp:: 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.
|
|
* External Lisp:: Communicating through Emacs with a separate Lisp.
|
|
|
|
Running Debuggers Under Emacs
|
|
|
|
* Starting GUD:: How to start a debugger subprocess.
|
|
* Debugger Operation:: Connection between the debugger and source buffers.
|
|
* Commands of GUD:: Key bindings for common commands.
|
|
* GUD Customization:: Defining your own commands for GUD.
|
|
|
|
Abbrevs
|
|
|
|
* Abbrev Concepts:: Fundamentals of defined 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.
|
|
|
|
Editing Pictures
|
|
|
|
* 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.
|
|
|
|
Sending Mail
|
|
|
|
* Mail Format:: Format of the mail being composed.
|
|
* Mail Headers:: Details of permitted mail header fields.
|
|
* Mail Aliases:: Abbreviating and grouping mail addresses.
|
|
* Mail Mode:: Special commands for editing mail being composed.
|
|
* Distracting NSA:: How to distract the NSA's attention.
|
|
* Mail Methods:: Using alternative mail-composition methods.
|
|
|
|
Reading Mail with Rmail
|
|
|
|
* Rmail Basics:: Basic concepts of Rmail, and simple use.
|
|
* 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 Attributes:: Certain standard labels, called attributes.
|
|
* Rmail Reply:: Sending replies to messages you are viewing.
|
|
* Rmail Summary:: Summaries show brief info on many messages.
|
|
* Rmail Sorting:: Sorting messages in Rmail.
|
|
* Rmail Display:: How Rmail displays a message; customization.
|
|
* Rmail Editing:: Editing message text and headers in Rmail.
|
|
* Rmail Digest:: Extracting the messages from a digest message.
|
|
* Out of Rmail:: Converting an Rmail file to mailbox format.
|
|
* Rmail Rot13:: Reading messages encoded in the rot13 code.
|
|
* Movemail:: More details of fetching new mail.
|
|
|
|
Dired, the Directory Editor
|
|
|
|
* Dired Enter:: How to invoke Dired.
|
|
* Dired Commands:: Commands in the Dired buffer.
|
|
* Dired Deletion:: Deleting files with Dired.
|
|
* Flagging Many Files:: Flagging files based on their names.
|
|
* Dired Visiting:: Other file operations through Dired.
|
|
* Marks vs Flags:: Flagging for deletion vs marking.
|
|
* Operating on Files:: How to copy, rename, print, compress, etc.
|
|
either one file or several files.
|
|
* Shell Commands in Dired:: Running a shell command on the marked files.
|
|
* Transforming File Names:: Using patterns to rename multiple files.
|
|
* Comparison in Dired:: Running `diff' by way of Dired.
|
|
* Subdirectories in Dired:: Adding subdirectories to the Dired buffer.
|
|
* Subdirectory Motion:: Moving across subdirectories, and up and down.
|
|
* Hiding Subdirectories:: Making subdirectories visible or invisible.
|
|
* Dired Updating:: Discarding lines for files of no interest.
|
|
* Dired and Find:: Using `find' to choose the files for Dired.
|
|
|
|
The Calendar and the Diary
|
|
|
|
* Calendar Motion:: Moving through the calendar; selecting a date.
|
|
* Scroll Calendar:: Bringing earlier or later months onto the screen.
|
|
* Counting Days:: How many days are there between two dates?
|
|
* General Calendar:: Exiting or recomputing the calendar.
|
|
* LaTeX Calendar:: Print a calendar using LaTeX.
|
|
* Holidays:: Displaying dates of holidays.
|
|
* Sunrise/Sunset:: Displaying local times of sunrise and sunset.
|
|
* Lunar Phases:: Displaying phases of the moon.
|
|
* Other Calendars:: Converting dates to other calendar systems.
|
|
* Diary:: Displaying events from your diary.
|
|
* Appointments:: Reminders when it's time to do something.
|
|
* Daylight Savings:: How to specify when daylight savings time is active.
|
|
|
|
Movement in the Calendar
|
|
|
|
* Calendar Unit Motion:: Moving by days, weeks, months, and years.
|
|
* Move to Beginning or End:: Moving to start/end of weeks, months, and years.
|
|
* Specified Dates:: Moving to the current date or another
|
|
specific date.
|
|
|
|
Conversion To and From Other Calendars
|
|
|
|
* Calendar Systems:: The calendars Emacs understands
|
|
(aside from Gregorian).
|
|
* To Other Calendar:: Converting the selected date to various calendars.
|
|
* From Other Calendar:: Moving to a date specified in another calendar.
|
|
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
|
|
|
|
The Diary
|
|
|
|
* Diary Commands:: Viewing diary entries and associated calendar dates.
|
|
* Format of Diary File:: Entering events in your diary.
|
|
* Date Formats:: Various ways you can specify dates.
|
|
* Adding to Diary:: Commands to create diary entries.
|
|
* Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc.
|
|
|
|
@sc{Gnus}
|
|
|
|
* Buffers of Gnus:: The group, summary, and article buffers.
|
|
* Gnus Startup:: What you should know about starting Gnus.
|
|
* Summary of Gnus:: A short description of the basic Gnus commands.
|
|
|
|
Running Shell Commands from Emacs
|
|
|
|
* Single Shell:: How to run one shell command and return.
|
|
* Interactive Shell:: Permanent shell taking input via Emacs.
|
|
* Shell Mode:: Special Emacs commands used with permanent shell.
|
|
* Shell History:: Repeating previous commands in a shell buffer.
|
|
* Shell Options:: Options for customizing Shell mode.
|
|
* Remote Host:: Connecting to another computer.
|
|
|
|
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.
|
|
* 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".
|
|
* Keyboard Translations::
|
|
If your keyboard passes an undesired code
|
|
for a key, you can tell Emacs to
|
|
substitute another code.
|
|
* Syntax:: The syntax table controls how words and
|
|
expressions are parsed.
|
|
* Init File:: How to write common customizations in the
|
|
@file{.emacs} file.
|
|
|
|
Variables
|
|
|
|
* Examining:: Examining or setting one variable's value.
|
|
* Easy Customization::
|
|
Convenient and easy customization of variables.
|
|
* Hooks:: Hook variables let you specify programs for parts
|
|
of Emacs to run on particular occasions.
|
|
* Locals:: Per-buffer values of variables.
|
|
* File Variables:: How files can specify variable values.
|
|
|
|
Keyboard Macros
|
|
|
|
* Basic Kbd Macro:: Defining and running keyboard macros.
|
|
* Save Kbd Macro:: Giving keyboard macros names; saving them in files.
|
|
* Kbd Macro Query:: Making keyboard macros do different things each time.
|
|
|
|
Customizing Key Bindings
|
|
|
|
* Keymaps:: Generalities. The global keymap.
|
|
* Prefix Keymaps:: Keymaps for prefix keys.
|
|
* Local Keymaps:: Major and minor modes have their own keymaps.
|
|
* Minibuffer Maps:: The minibuffer uses its own local keymaps.
|
|
* Rebinding:: How to redefine one key's meaning conveniently.
|
|
* Init Rebinding:: Rebinding keys with your init file, @file{.emacs}.
|
|
* Function Keys:: Rebinding terminal function keys.
|
|
* Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on.
|
|
* Mouse Buttons:: Rebinding mouse buttons in Emacs.
|
|
* Disabling:: Disabling a command means confirmation is required
|
|
before it can be executed. This is done to protect
|
|
beginners from surprises.
|
|
|
|
The Init File, @file{~/.emacs}
|
|
|
|
* Init Syntax:: Syntax of constants in Emacs Lisp.
|
|
* Init Examples:: How to do some things with an init file.
|
|
* Terminal Init:: Each terminal type can have an init file.
|
|
* Find Init:: How Emacs finds the init file.
|
|
|
|
Dealing with Emacs Trouble
|
|
|
|
* DEL Gets Help:: What to do if @key{DEL} doesn't delete.
|
|
* 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.
|
|
* Memory Full:: How to cope when you run out of memory.
|
|
* Emergency Escape:: Emergency escape---
|
|
What to do if Emacs stops responding.
|
|
* Total Frustration:: When you are at your wits' end.
|
|
|
|
Reporting Bugs
|
|
|
|
* Criteria: Bug Criteria. Have you really found a bug?
|
|
* Understanding Bug Reporting:: How to report a bug effectively.
|
|
* Checklist:: Steps to follow for a good bug report.
|
|
* Sending Patches:: How to send a patch for GNU Emacs.
|
|
|
|
Command Line Options and Arguments
|
|
|
|
* Action Arguments:: Arguments to visit files, load libraries,
|
|
and call functions.
|
|
* Initial Options:: Arguments that take effect while starting Emacs.
|
|
* Command Example:: Examples of using command line arguments.
|
|
* Resume Arguments:: Specifying arguments when you resume a running Emacs.
|
|
* Environment:: Environment variables that Emacs uses.
|
|
|
|
* Display X:: Changing the default display and using remote login.
|
|
* Font X:: Choosing a font for text, under X.
|
|
* Colors X:: Choosing colors, under X.
|
|
* Window Size X:: Start-up window size, under X.
|
|
* Borders X:: Internal and external borders, under X.
|
|
* Title X:: Specifying the initial frame's title.
|
|
* Icons X:: Choosing what sort of icon to use, under X.
|
|
* Resources X:: Advanced use of classes and resources, under X.
|
|
* Lucid Resources:: X resources for Lucid menus.
|
|
* Motif Resources:: X resources for Motif menus.
|
|
|
|
Environment Variables
|
|
|
|
* General Variables:: Environment variables that all versions of Emacs use.
|
|
* Misc Variables:: Certain system specific variables.
|
|
|
|
MS-DOS and Windows 95/98/NT
|
|
|
|
* MS-DOS Input:: Keyboard and mouse usage on MS-DOS.
|
|
* MS-DOS Display:: Fonts, frames and display size on MS-DOS.
|
|
* MS-DOS File Names:: File-name conventions on MS-DOS.
|
|
* Text and Binary:: Text files on MS-DOS use CRLF to separate lines.
|
|
* MS-DOS Printing:: How to specify the printer on MS-DOS.
|
|
* MS-DOS Processes:: Running subprocesses on MS-DOS.
|
|
* Windows Processes:: Running subprocesses on Windows.
|
|
* Windows System Menu:: Controlling what the ALT key does.
|
|
@end menu
|
|
|
|
@iftex
|
|
@unnumbered Preface
|
|
|
|
This manual documents the use and simple customization of the Emacs
|
|
editor. The reader is not expected to be a programmer; simple
|
|
customizations do not require programming skill. But the user who is not
|
|
interested in customizing can ignore the scattered customization hints.
|
|
|
|
This is primarily a reference manual, but can also be used as a
|
|
primer. For complete beginners, it is a good idea to start with the
|
|
on-line, learn-by-doing tutorial, before reading the manual. To run the
|
|
tutorial, start Emacs and type @kbd{C-h t}. This way you can learn
|
|
Emacs by using Emacs on a specially designed file which describes
|
|
commands, tells you when to try them, and then explains the results you
|
|
see.
|
|
|
|
On first reading, just skim chapters 1 and 2, which describe the
|
|
notational conventions of the manual and the general appearance of the
|
|
Emacs display screen. Note which questions are answered in these
|
|
chapters, so you can refer back later. After reading chapter 4, you
|
|
should practice the commands there. The next few chapters describe
|
|
fundamental techniques and concepts that are used constantly. You need
|
|
to understand them thoroughly, experimenting with them if necessary.
|
|
|
|
Chapters 14 through 19 describe intermediate-level features that are
|
|
useful for all kinds of editing. Chapter 20 and following chapters
|
|
describe features that you may or may not want to use; read those
|
|
chapters when you need them.
|
|
|
|
Read the Trouble chapter if Emacs does not seem to be working
|
|
properly. It explains how to cope with some common problems
|
|
(@pxref{Lossage}), as well as when and how to report Emacs bugs
|
|
(@pxref{Bugs}).
|
|
|
|
To find the documentation on a particular command, look in the index.
|
|
Keys (character commands) and command names have separate indexes. There
|
|
is also a glossary, with a cross reference for each term.
|
|
|
|
This manual is available as a printed book and also as an Info file.
|
|
The Info file is for on-line perusal with the Info program, which will
|
|
be the principal way of viewing documentation on-line in the GNU system.
|
|
Both the Info file and the Info program itself are distributed along
|
|
with GNU Emacs. The Info file and the printed book contain
|
|
substantially the same text and are generated from the same source
|
|
files, which are also distributed along with GNU Emacs.
|
|
|
|
GNU Emacs is a member of the Emacs editor family. There are many Emacs
|
|
editors, all sharing common principles of organization. For information on
|
|
the underlying philosophy of Emacs and the lessons learned from its
|
|
development, write for a copy of AI memo 519a, ``Emacs, the Extensible,
|
|
Customizable Self-Documenting Display Editor,'' to Publications Department,
|
|
Artificial Intelligence Lab, 545 Tech Square, Cambridge, MA 02139, USA@. At
|
|
last report they charge $2.25 per copy. Another useful publication is LCS
|
|
TM-165, ``A Cookbook for an Emacs,'' by Craig Finseth, available from
|
|
Publications Department, Laboratory for Computer Science, 545 Tech Square,
|
|
Cambridge, MA 02139, USA@. The price today is $3.
|
|
|
|
This edition of the manual is intended for use with GNU Emacs installed
|
|
on GNU and Unix systems. GNU Emacs can also be used on VMS, MS-DOS
|
|
(also called MS-DOG), Windows NT, and Windows 95 systems. Those systems use
|
|
different file name syntax; in addition, VMS and MS-DOS do not support
|
|
all GNU Emacs features. We don't try to describe VMS usage in this
|
|
manual. @xref{MS-DOS}, for information about using Emacs on MS-DOS.
|
|
@end iftex
|
|
|
|
@node Distrib, Copying, Top, Top
|
|
@unnumbered Distribution
|
|
|
|
GNU Emacs is @dfn{free software}; this means that everyone is free to
|
|
use it and free to redistribute it on certain conditions. 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.
|
|
|
|
One way to get a copy of GNU Emacs is from someone else who has it. You
|
|
need not ask for our 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 by anonymous FTP; see the file
|
|
@file{etc/FTP} in the Emacs distribution for more information.
|
|
|
|
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.
|
|
|
|
You can also order copies of GNU Emacs from the Free Software Foundation
|
|
on CD-ROM@. This is a convenient and reliable way to get a copy; it is
|
|
also a good way to help fund our work. (The Foundation has always
|
|
received most of its funds in this way.) An order form is included in
|
|
the file @file{etc/ORDERS} in the Emacs distribution, and on our web
|
|
site in @url{http://www.gnu.org/order/order.html}. For further
|
|
information, write to
|
|
|
|
@display
|
|
Free Software Foundation
|
|
59 Temple Place, Suite 330
|
|
Boston, MA 02111-1307 USA
|
|
USA
|
|
@end display
|
|
|
|
The income from distribution fees goes to support the foundation's
|
|
purpose: the development of new free software, and improvements to our
|
|
existing programs including GNU Emacs.
|
|
|
|
If you find GNU Emacs useful, please @strong{send a donation} to the
|
|
Free Software Foundation to support our work. Donations to the Free
|
|
Software Foundation are tax deductible in the US. If you use GNU Emacs
|
|
at your workplace, please suggest that the company make a donation. If
|
|
company policy is unsympathetic to the idea of donating to charity, you
|
|
might instead suggest ordering a CD-ROM from the Foundation
|
|
occasionally, or subscribing to periodic updates.
|
|
|
|
@iftex
|
|
Contributors to GNU Emacs include Per Abrahamsen, Jay K. Adams, Joe
|
|
Arceneaux, Boaz Ben-Zvi, Jim Blandy, Terrence Brannon, Frank Bresz,
|
|
Peter Breton, Kevin Broadey, Vincent Broman, David M. Brown, Bill
|
|
Carpenter, Hans Chalupsky, Bob Chassell, James Clark, Mike Clarkson,
|
|
Glynn Clements, Andrew Csillag, Doug Cutting, Michael DeCorte, Gary
|
|
Delp, Matthieu Devin, Eri Ding, Carsten Dominik, Scott Draves, Viktor
|
|
Dukhovni, John Eaton, Rolf Ebert, Stephen Eglen, Torbj@"orn Einarsson,
|
|
Tsugumoto Enami, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi,
|
|
Frederick Farnback, Fred Fish, Karl Fogel, Gary Foster, Noah Friedman,
|
|
Keith Gabryelski, Kevin Gallagher, Kevin Gallo, Howard Gayle, Stephen
|
|
Gildea, David Gillespie, Bob Glickstein, Boris Goldowsky, Michelangelo
|
|
Grigni, Michael Gschwind, Henry Guillaume, Doug Gwyn, Ken'ichi Handa,
|
|
Chris Hanson, K. Shane Hartman, John Heidemann, Markus Heritsch, Karl
|
|
Heuer, Manabu Higashida, Anders Holst, Kurt Hornik, Tom Houlder, Lars
|
|
Ingebrigtsen, Andrew Innes, Michael K. Johnson, Kyle Jones, Tomoji
|
|
Kagatani, Brewster Kahle, David Kaufman, Henry Kautz, Howard Kaye,
|
|
Michael Kifer, Richard King, Larry K. Kolodney, Robert Krawitz,
|
|
Sebastian Kremer, Geoff Kuenning, David K@aa gedal, Daniel LaLiberte,
|
|
Aaron Larson, James R. Larus, Frederic Lepied, Lars Lindberg, Eric
|
|
Ludlam, Neil M. Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon
|
|
Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland McGrath,
|
|
David Megginson, Wayne Mesard, Richard Mlynarik, Keith Moore, Erik
|
|
Naggum, Thomas Neumann, Mike Newton, Jurgen Nickelsen, Jeff Norden,
|
|
Andrew Norman, Jeff Peck, Damon Anton Permezel, Tom Perrine, Jens
|
|
Petersen, Daniel Pfeiffer, Fred Pierresteguy, Christian Plaunt,
|
|
Francesco A. Potorti, Michael D. Prange, Ashwin Ram, Eric S. Raymond,
|
|
Paul Reilly, Edward M. Reingold, Rob Riepel, Roland B. Roberts, John
|
|
Robinson, Danny Roozendaal, William Rosenblatt, Guillermo J. Rozas, Ivar
|
|
Rummelhoff, Wolfgang Rupprecht, James B. Salem, Masahiko Sato, William
|
|
Schelter, Ralph Schleicher, Gregor Schmid, Michael Schmidt, Ronald
|
|
S. Schnell, Philippe Schnoebelen, Stephen Schoef, Randal Schwartz,
|
|
Manuel Serrano, Stanislav Shalunov, Mark Shapiro, Richard Sharman, Olin
|
|
Shivers, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith, David
|
|
Smith, Paul D. Smith, William Sommerfeld, Michael Staats, Sam Steingold,
|
|
Ake Stenhoff, Peter Stephenson, Jonathan Stigelman, Steve Strassman,
|
|
Jens T. Berger Thielemann, Spencer Thomas, Jim Thompson, Masanobu Umeda,
|
|
Neil W. Van Dyke, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Barry
|
|
Warsaw, Morten Welinder, Joseph Brian Wells, Rodney Whitby, Ed
|
|
Wilkinson, Mike Williams, Steven A. Wood, Dale R. Worley, Felix
|
|
S. T. Wu, Tom Wurgler, Eli Zaretskii, Jamie Zawinski, Ian T. Zimmermann,
|
|
Reto Zimmermann, and Neal Ziring.
|
|
@end iftex
|
|
|
|
@node Copying, Intro, Distrib, Top
|
|
@unnumbered GNU GENERAL PUBLIC LICENSE
|
|
@center Version 2, June 1991
|
|
|
|
@display
|
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
@end display
|
|
|
|
@unnumberedsec Preamble
|
|
|
|
The licenses for most software are designed to take away your
|
|
freedom to share and change it. By contrast, the GNU 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. This
|
|
General Public License applies to most of the Free Software
|
|
Foundation's software and to any other program whose authors commit to
|
|
using it. (Some other Free Software Foundation software is covered by
|
|
the GNU Library General Public License instead.) You can apply it to
|
|
your programs, too.
|
|
|
|
When we speak of free software, we are referring to freedom, not
|
|
price. Our General Public Licenses are designed to make sure that you
|
|
have the freedom to distribute copies of free software (and charge for
|
|
this service if you wish), 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 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 show them these terms so they know 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.
|
|
|
|
Finally, any free program is threatened constantly by software
|
|
patents. We wish to avoid the danger that redistributors of a free
|
|
program will individually obtain patent licenses, in effect making the
|
|
program proprietary. To prevent this, we have made it clear that any
|
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
|
The precise terms and conditions for copying, distribution and
|
|
modification follow.
|
|
|
|
@iftex
|
|
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end iftex
|
|
@ifinfo
|
|
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end ifinfo
|
|
|
|
@enumerate 0
|
|
@item
|
|
This License 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 derivative work under copyright law:
|
|
that is to say, a work containing the Program or a portion of it,
|
|
either verbatim or with modifications and/or translated into another
|
|
language. (Hereinafter, translation is included without limitation in
|
|
the term ``modification''.) Each licensee is addressed as ``you''.
|
|
|
|
Activities other than copying, distribution and modification are not
|
|
covered by this License; they are outside its scope. The act of
|
|
running the Program is not restricted, and the output from the Program
|
|
is covered only if its contents constitute a work based on the
|
|
Program (independent of having been made by running the Program).
|
|
Whether that is true depends on what the Program does.
|
|
|
|
@item
|
|
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 License and to the absence of any warranty;
|
|
and give any other recipients of the Program a copy of this License
|
|
along with the Program.
|
|
|
|
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.
|
|
|
|
@item
|
|
You may modify your copy or copies of the Program or any portion
|
|
of it, thus forming a work based on the Program, and copy and
|
|
distribute such modifications or work under the terms of Section 1
|
|
above, provided that you also meet all of these conditions:
|
|
|
|
@enumerate a
|
|
@item
|
|
You must cause the modified files to carry prominent notices
|
|
stating that you changed the files and the date of any change.
|
|
|
|
@item
|
|
You must cause any work that you distribute or publish, that in
|
|
whole or in part contains or is derived from the Program or any
|
|
part thereof, to be licensed as a whole at no charge to all third
|
|
parties under the terms of this License.
|
|
|
|
@item
|
|
If the modified program normally reads commands interactively
|
|
when run, you must cause it, when started running for such
|
|
interactive use in the most ordinary 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
|
|
License. (Exception: if the Program itself is interactive but
|
|
does not normally print such an announcement, your work based on
|
|
the Program is not required to print an announcement.)
|
|
@end enumerate
|
|
|
|
These requirements apply to the modified work as a whole. If
|
|
identifiable sections of that work are not derived from the Program,
|
|
and can be reasonably considered independent and separate works in
|
|
themselves, then this License, and its terms, do not apply to those
|
|
sections when you distribute them as separate works. But when you
|
|
distribute the same sections as part of a whole which is a work based
|
|
on the Program, the distribution of the whole must be on the terms of
|
|
this License, whose permissions for other licensees extend to the
|
|
entire whole, and thus to each and every part regardless of who wrote it.
|
|
|
|
Thus, it is not the intent of this section to claim rights or contest
|
|
your rights to work written entirely by you; rather, the intent is to
|
|
exercise the right to control the distribution of derivative or
|
|
collective works based on the Program.
|
|
|
|
In addition, mere aggregation of another work not based on the Program
|
|
with the Program (or with a work based on the Program) on a volume of
|
|
a storage or distribution medium does not bring the other work under
|
|
the scope of this License.
|
|
|
|
@item
|
|
You may copy and distribute the Program (or a work based on it,
|
|
under Section 2) in object code or executable form under the terms of
|
|
Sections 1 and 2 above provided that you also do one of the following:
|
|
|
|
@enumerate a
|
|
@item
|
|
Accompany it with the complete corresponding machine-readable
|
|
source code, which must be distributed under the terms of Sections
|
|
1 and 2 above on a medium customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with a written offer, valid for at least three
|
|
years, to give any third party, for a charge no more than your
|
|
cost of physically performing source distribution, a complete
|
|
machine-readable copy of the corresponding source code, to be
|
|
distributed under the terms of Sections 1 and 2 above on a medium
|
|
customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with the information you received as to the offer
|
|
to distribute corresponding source code. (This alternative is
|
|
allowed only for noncommercial distribution and only if you
|
|
received the program in object code or executable form with such
|
|
an offer, in accord with Subsection b above.)
|
|
@end enumerate
|
|
|
|
The source code for a work means the preferred form of the work for
|
|
making modifications to it. For an executable work, complete source
|
|
code means all the source code for all modules it contains, plus any
|
|
associated interface definition files, plus the scripts used to
|
|
control compilation and installation of the executable. However, as a
|
|
special exception, the source code distributed need not include
|
|
anything that is normally distributed (in either source or binary
|
|
form) with the major components (compiler, kernel, and so on) of the
|
|
operating system on which the executable runs, unless that component
|
|
itself accompanies the executable.
|
|
|
|
If distribution of executable or object code is made by offering
|
|
access to copy from a designated place, then offering equivalent
|
|
access to copy the source code from the same place counts as
|
|
distribution of the source code, even though third parties are not
|
|
compelled to copy the source along with the object code.
|
|
|
|
@item
|
|
You may not copy, modify, sublicense, or distribute the Program
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense or distribute the Program is
|
|
void, and will automatically terminate your rights under this License.
|
|
However, parties who have received copies, or rights, from you under
|
|
this License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
|
|
@item
|
|
You are not required to accept this License, since you have not
|
|
signed it. However, nothing else grants you permission to modify or
|
|
distribute the Program or its derivative works. These actions are
|
|
prohibited by law if you do not accept this License. Therefore, by
|
|
modifying or distributing 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 for copying, distributing or modifying
|
|
the Program or works based on it.
|
|
|
|
@item
|
|
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.
|
|
You are not responsible for enforcing compliance by third parties to
|
|
this License.
|
|
|
|
@item
|
|
If, as a consequence of a court judgment or allegation of patent
|
|
infringement or for any other reason (not limited to patent issues),
|
|
conditions are imposed on you (whether by court order, agreement or
|
|
otherwise) that contradict the conditions of this License, they do not
|
|
excuse you from the conditions of this License. If you cannot
|
|
distribute so as to satisfy simultaneously your obligations under this
|
|
License and any other pertinent obligations, then as a consequence you
|
|
may not distribute the Program at all. For example, if a patent
|
|
license would not permit royalty-free redistribution of the Program by
|
|
all those who receive copies directly or indirectly through you, then
|
|
the only way you could satisfy both it and this License would be to
|
|
refrain entirely from distribution of the Program.
|
|
|
|
If any portion of this section is held invalid or unenforceable under
|
|
any particular circumstance, the balance of the section is intended to
|
|
apply and the section as a whole is intended to apply in other
|
|
circumstances.
|
|
|
|
It is not the purpose of this section to induce you to infringe any
|
|
patents or other property right claims or to contest validity of any
|
|
such claims; this section has the sole purpose of protecting the
|
|
integrity of the free software distribution system, which is
|
|
implemented by public license practices. Many people have made
|
|
generous contributions to the wide range of software distributed
|
|
through that system in reliance on consistent application of that
|
|
system; it is up to the author/donor to decide if he or she is willing
|
|
to distribute software through any other system and a licensee cannot
|
|
impose that choice.
|
|
|
|
This section is intended to make thoroughly clear what is believed to
|
|
be a consequence of the rest of this License.
|
|
|
|
@item
|
|
If the distribution and/or use of the Program is restricted in
|
|
certain countries either by patents or by copyrighted interfaces, the
|
|
original copyright holder who places the Program under this License
|
|
may add an explicit geographical distribution limitation excluding
|
|
those countries, so that distribution is permitted only in or among
|
|
countries not thus excluded. In such case, this License incorporates
|
|
the limitation as if written in the body of this License.
|
|
|
|
@item
|
|
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 this 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
|
|
this License, you may choose any version ever published by the Free Software
|
|
Foundation.
|
|
|
|
@item
|
|
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.
|
|
|
|
@iftex
|
|
@heading NO WARRANTY
|
|
@end iftex
|
|
@ifinfo
|
|
@center NO WARRANTY
|
|
@end ifinfo
|
|
|
|
@item
|
|
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.
|
|
|
|
@item
|
|
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 enumerate
|
|
|
|
@iftex
|
|
@heading END OF TERMS AND CONDITIONS
|
|
@end iftex
|
|
@ifinfo
|
|
@center END OF TERMS AND CONDITIONS
|
|
@end ifinfo
|
|
|
|
@page
|
|
@unnumberedsec 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 the public, 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.
|
|
|
|
@smallexample
|
|
@var{one line to give the program's name and an idea of what it does.}
|
|
Copyright (C) 19@var{yy} @var{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 2
|
|
of the License, 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.,
|
|
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
@end smallexample
|
|
|
|
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:
|
|
|
|
@smallexample
|
|
Gnomovision version 69, Copyright (C) 19@var{yy} @var{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.
|
|
@end smallexample
|
|
|
|
The hypothetical commands @samp{show w} and @samp{show c} should show
|
|
the appropriate parts of the General Public License. Of course, the
|
|
commands you use may be called something other than @samp{show w} and
|
|
@samp{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:
|
|
|
|
@smallexample
|
|
@group
|
|
Yoyodyne, Inc., hereby disclaims all copyright
|
|
interest in the program `Gnomovision'
|
|
(which makes passes at compilers) written
|
|
by James Hacker.
|
|
|
|
@var{signature of Ty Coon}, 1 April 1989
|
|
Ty Coon, President of Vice
|
|
@end group
|
|
@end smallexample
|
|
|
|
This General Public License does not permit incorporating your program into
|
|
proprietary programs. If your program is a subroutine library, you may
|
|
consider it more useful to permit linking proprietary applications with the
|
|
library. If this is what you want to do, use the GNU Library General
|
|
Public License instead of this License.
|
|
|
|
@node Intro, Glossary, Copying, Top
|
|
@unnumbered 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 @dfn{display} editor because normally the text
|
|
being edited is visible on the screen and is updated automatically as you
|
|
type your commands. @xref{Screen,Display}.
|
|
|
|
We call it a @dfn{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. @xref{Basic,Real-time,Basic Editing}.
|
|
|
|
We call Emacs advanced because it provides facilities that go beyond
|
|
simple insertion and deletion: controlling subprocesses; automatic
|
|
indentation of programs; viewing two or more files at once; editing
|
|
formatted text; and dealing in terms of characters, words, lines,
|
|
sentences, paragraphs, and pages, as well as expressions and comments in
|
|
several different programming languages.
|
|
|
|
@dfn{Self-documenting} means that at any time you can type a special
|
|
character, @kbd{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. @xref{Help}.
|
|
|
|
@dfn{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 @samp{<**} and end with @samp{**>}, you can tell
|
|
the Emacs comment manipulation commands to use those strings
|
|
(@pxref{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 rebind the keys that way. @xref{Customization}.
|
|
|
|
@dfn{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. Almost 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. If you want to
|
|
learn Emacs Lisp programming, we recommend the @cite{Introduction to
|
|
Emacs Lisp} by Robert J. Chassell, also published by the Free Software
|
|
Foundation.
|
|
|
|
When run under the X Window System, Emacs provides its own menus and
|
|
convenient bindings to mouse buttons. But Emacs can provide many of the
|
|
benefits of a window system on a text-only terminal. For instance, you
|
|
can look at or edit several files at once, move text between files, and
|
|
edit files while running shell commands.
|
|
|
|
@include screen.texi
|
|
@include commands.texi
|
|
@include entering.texi
|
|
@include basic.texi
|
|
@include mini.texi
|
|
@include m-x.texi
|
|
@include help.texi
|
|
@include mark.texi
|
|
@include killing.texi
|
|
@include regs.texi
|
|
@include display.texi
|
|
@include search.texi
|
|
@include fixit.texi
|
|
@include files.texi
|
|
@include buffers.texi
|
|
@include windows.texi
|
|
@include frames.texi
|
|
@include mule.texi
|
|
@include major.texi
|
|
@include indent.texi
|
|
@include text.texi
|
|
@include programs.texi
|
|
@include building.texi
|
|
@include abbrevs.texi
|
|
@include picture.texi
|
|
@include sending.texi
|
|
@include rmail.texi
|
|
@include dired.texi
|
|
@include calendar.texi
|
|
@include misc.texi
|
|
@include custom.texi
|
|
@include trouble.texi
|
|
@include cmdargs.texi
|
|
|
|
@include anti.texi
|
|
@include msdog.texi
|
|
@include gnu.texi
|
|
@include glossary.texi
|
|
@ifinfo
|
|
@include ack.texi
|
|
@end ifinfo
|
|
|
|
@node Key Index, Command Index, Glossary, Top
|
|
@unnumbered Key (Character) Index
|
|
@printindex ky
|
|
|
|
@node Command Index, Variable Index, Key Index, Top
|
|
@unnumbered Command and Function Index
|
|
@printindex fn
|
|
|
|
@node Variable Index, Concept Index, Command Index, Top
|
|
@unnumbered Variable Index
|
|
@printindex vr
|
|
|
|
@node Concept Index, Acknowledgments, Variable Index, Top
|
|
@unnumbered Concept Index
|
|
@printindex cp
|
|
|
|
@summarycontents
|
|
@contents
|
|
@bye
|
|
|