mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-22 07:09:54 +00:00
1752 lines
78 KiB
Plaintext
1752 lines
78 KiB
Plaintext
\input texinfo
|
|
|
|
@setfilename ../info/emacs
|
|
@settitle GNU Emacs Manual
|
|
|
|
@c The edition number appears in several places in this file
|
|
@set EDITION Sixteenth
|
|
@set EMACSVER 22.0.97
|
|
|
|
@copying
|
|
This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
|
|
updated for Emacs version @value{EMACSVER}.
|
|
|
|
Copyright @copyright{} 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997,
|
|
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
|
|
Foundation, Inc.
|
|
|
|
@quotation
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.2 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``The GNU Manifesto,'' ``Distribution'' and
|
|
``GNU GENERAL PUBLIC LICENSE,'' with the Front-Cover texts being ``A GNU
|
|
Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the
|
|
license is included in the section entitled ``GNU Free Documentation
|
|
License.''
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
|
this GNU Manual, like GNU software. Copies published by the Free
|
|
Software Foundation raise funds for GNU development.''
|
|
@end quotation
|
|
@end copying
|
|
|
|
@dircategory Emacs
|
|
@direntry
|
|
* Emacs: (emacs). The extensible self-documenting text editor.
|
|
@end direntry
|
|
|
|
@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.
|
|
@set smallbook
|
|
|
|
@ifset smallbook
|
|
@smallbook
|
|
@end ifset
|
|
|
|
@c per rms and peterb, use 10pt fonts for the main text, mostly to
|
|
@c save on paper cost. Also do not declare @setchapternewpage odd.
|
|
@c Do this inside @tex for now, so current makeinfo does not complain.
|
|
@tex
|
|
@ifset smallbook
|
|
@fonttextsize 10
|
|
@end ifset
|
|
\global\hbadness=6666 % don't worry about not-too-underfull boxes
|
|
@end tex
|
|
|
|
@defcodeindex op
|
|
@synindex pg cp
|
|
|
|
@iftex
|
|
@kbdinputstyle code
|
|
|
|
@shorttitlepage GNU Emacs Manual
|
|
@end iftex
|
|
|
|
@titlepage
|
|
@sp 6
|
|
@center @titlefont{GNU Emacs Manual}
|
|
@sp 4
|
|
@center @value{EDITION} Edition, Updated for Emacs Version @value{EMACSVER}.
|
|
@sp 5
|
|
@center Richard Stallman
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
@insertcopying
|
|
|
|
@sp 2
|
|
ISBN 1-882114-86-8*
|
|
Published by the Free Software Foundation @*
|
|
51 Franklin Street, Fifth Floor @*
|
|
Boston, MA 02110-1301 USA
|
|
|
|
@sp 2
|
|
Cover art by Etienne Suvasa.
|
|
|
|
@end titlepage
|
|
|
|
|
|
@summarycontents
|
|
@contents
|
|
|
|
|
|
@ifnottex
|
|
@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
|
|
@value{EMACSVER}.
|
|
|
|
@ifinfo
|
|
To learn more about the Info documentation system, type @kbd{h}, and
|
|
Emacs will take you to a programmed instruction sequence for the Info
|
|
commands.
|
|
@end ifinfo
|
|
|
|
For information on extending Emacs, see @ref{Top, Emacs Lisp,, elisp, The
|
|
Emacs Lisp Reference Manual}.
|
|
@end ifnottex
|
|
|
|
@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
|
|
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.
|
|
* GNU Free Documentation License:: The license for this documentation.
|
|
* Intro:: An introduction to Emacs concepts.
|
|
* Glossary:: The glossary.
|
|
* Antinews:: Information about Emacs version 21.
|
|
* Mac OS:: Using Emacs in the Mac.
|
|
* Microsoft Windows:: Using Emacs on Microsoft Windows and MS-DOS.
|
|
* Manifesto:: What's GNU? Gnu's Not Unix!
|
|
* Acknowledgments:: Major contributors to GNU Emacs.
|
|
|
|
Indexes (each index contains a large menu)
|
|
* Key Index:: An item for each standard Emacs key sequence.
|
|
* Option Index:: An item for every command-line option.
|
|
* 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.
|
|
* Emacs Invocation:: 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 (cutting) text.
|
|
* Yanking:: Recovering killed text. Moving text. (Pasting.)
|
|
* 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.
|
|
* Keyboard Macros:: A keyboard macro records a sequence of
|
|
keystrokes to be replayed with a single command.
|
|
|
|
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-@acronym{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.
|
|
* Maintaining:: Features for maintaining large programs.
|
|
* Abbrevs:: How to define text abbreviations to reduce
|
|
the number of characters you must type.
|
|
@ifnottex
|
|
* Picture Mode:: Editing pictures made up of characters using
|
|
the quarter-plane screen model.
|
|
@end ifnottex
|
|
* 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.
|
|
* Printing:: Printing hardcopies of buffers or regions.
|
|
* 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.
|
|
* Hyperlinking:: Following links in buffers.
|
|
* Thumbnails:: Browsing images using thumbnails.
|
|
* Dissociated Press:: Dissociating text for fun.
|
|
* Amusements:: Various games and hacks.
|
|
* Customization:: Modifying the behavior of Emacs.
|
|
* X Resources:: X resources for customizing 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.
|
|
|
|
@c Do NOT modify the following 3 lines! They must have this form to
|
|
@c be correctly identified by `texinfo-multiple-files-update'. In
|
|
@c particular, the detailed menu header line MUST be identical to the
|
|
@c value of `texinfo-master-menu-header'. See texnfo-upd.el.
|
|
|
|
@detailmenu
|
|
--- The Detailed Node Listing ---
|
|
---------------------------------
|
|
|
|
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 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.
|
|
* Basic Undo:: Undoing recent changes in the text.
|
|
* Basic Files:: Visiting, creating, and saving files.
|
|
* 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.
|
|
* Repeating:: A short-cut for repeating the previous 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.
|
|
|
|
Completion
|
|
|
|
* Example: Completion Example. Examples of using completion.
|
|
* Commands: Completion Commands. A list of completion commands.
|
|
* Strict Completion:: Different types of completion.
|
|
* Options: Completion Options. Options for completion.
|
|
|
|
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.
|
|
* Help Mode:: Special features of Help mode and Help buffers.
|
|
* Library Keywords:: Finding Lisp libraries by keywords (topics).
|
|
* Language Help:: Help relating to international language support.
|
|
* Misc Help:: Other help commands.
|
|
* Help Files:: Commands to display pre-written help files.
|
|
* Help Echo:: Help on active text and tooltips (`balloon help')
|
|
|
|
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.
|
|
* Momentary Mark:: Enabling Transient Mark mode momentarily.
|
|
* 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.
|
|
|
|
Killing and Moving Text
|
|
|
|
* 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.
|
|
* CUA Bindings:: Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} for copy
|
|
and paste, with enhanced rectangle support.
|
|
|
|
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.
|
|
* RegNumbers:: Numbers 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.
|
|
* Auto Scrolling:: Redisplay scrolls text automatically when needed.
|
|
* Horizontal Scrolling:: Moving text left and right in a window.
|
|
* Follow Mode:: Follow mode lets two windows scroll as one.
|
|
* Faces:: How to change the display style using faces.
|
|
* Standard Faces:: Emacs' predefined faces.
|
|
* Font Lock:: Minor mode for syntactic highlighting using faces.
|
|
* Highlight Interactively:: Tell Emacs what text to highlight.
|
|
* Fringes:: Enabling or disabling window fringes.
|
|
* Displaying Boundaries:: Displaying top and bottom of the buffer.
|
|
* Useless Whitespace:: Showing possibly-spurious trailing whitespace.
|
|
* Selective Display:: Hiding lines with lots of indentation.
|
|
* Optional Mode Line:: Optional mode line display features.
|
|
* Text Display:: How text characters are normally displayed.
|
|
* Cursor Display:: Features for displaying the cursor.
|
|
* Line Truncation:: Truncating lines to fit the screen width instead
|
|
of continuing them to multiple screen lines.
|
|
* Display Custom:: 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.
|
|
* Regexp Backslash:: Regular expression constructs starting with `\'.
|
|
* Regexp Example:: A complex regular expression explained.
|
|
* 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.
|
|
|
|
Incremental Search
|
|
|
|
* Basic Isearch:: Basic incremental search commands.
|
|
* Repeat Isearch:: Searching for the same string again.
|
|
* Error in Isearch:: When your string is not found.
|
|
* Special Isearch:: Special input in incremental search.
|
|
* Non-ASCII Isearch:: How to search for non-ASCII characters.
|
|
* Isearch Yank:: Commands that grab text into the search string
|
|
or else edit the search string.
|
|
* Highlight Isearch:: Isearch highlights the other possible matches.
|
|
* Isearch Scroll:: Scrolling during an incremental search.
|
|
* Slow Isearch:: Incremental search features for slow terminals.
|
|
|
|
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
|
|
|
|
* Undo:: Full details of Emacs undo commands.
|
|
* 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.
|
|
|
|
Keyboard Macros
|
|
|
|
* Basic Keyboard Macro:: Defining and running keyboard macros.
|
|
* Keyboard Macro Ring:: Where previous keyboard macros are saved.
|
|
* Keyboard Macro Counter:: Inserting incrementing numbers in macros.
|
|
* Keyboard Macro Query:: Making keyboard macros do different things each time.
|
|
* Save Keyboard Macro:: Giving keyboard macros names; saving them in files.
|
|
* Edit Keyboard Macro:: Editing keyboard macros.
|
|
* Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard
|
|
macro.
|
|
|
|
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.
|
|
* Autorevert:: Auto Reverting non-file buffers.
|
|
* 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.
|
|
* Diff Mode:: Editing diff output.
|
|
* Misc File Ops:: Other things you can do on files.
|
|
* Compressed Files:: Accessing compressed files.
|
|
* File Archives:: Operating on tar, zip, jar etc. archive files.
|
|
* Remote Files:: Accessing files on other sites.
|
|
* Quoted File Names:: Quoting special characters in file names.
|
|
* File Name Cache:: Completion against a list of files you often use.
|
|
* File Conveniences:: Convenience Features for Finding Files.
|
|
* Filesets:: Handling sets of files.
|
|
|
|
Saving Files
|
|
|
|
* Save Commands:: Commands for saving files.
|
|
* Backup:: How Emacs saves the old version of your file.
|
|
* Customize Save:: Customizing the saving of files.
|
|
* Interlocking:: How Emacs protects against simultaneous editing
|
|
of one file by two users.
|
|
* File Shadowing:: Copying files to "shadows" automatically.
|
|
* Time Stamps:: Emacs can update time stamps on saved files.
|
|
|
|
Backup Files
|
|
|
|
* One or Many: Numbered Backups. Whether to make one backup file or many.
|
|
* Names: Backup Names. How backup files are named.
|
|
* Deletion: Backup Deletion. Emacs deletes excess numbered backups.
|
|
* Copying: Backup Copying. Backups can be made by copying or renaming.
|
|
|
|
Auto-Saving: Protection Against Disasters
|
|
|
|
* Files: Auto Save Files. The file where auto-saved changes are
|
|
actually made until you save the file.
|
|
* Control: Auto Save Control. Controlling when and how often to auto-save.
|
|
* Recover:: Recovering text from auto-save files.
|
|
|
|
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.
|
|
* Remote Repositories:: Efficient access to remote CVS servers.
|
|
* 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-onliness; 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.
|
|
* Buffer Convenience:: Convenience and customization features for
|
|
buffer handling.
|
|
|
|
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.
|
|
* Window Convenience:: Convenience functions for window handling.
|
|
|
|
Frames and Graphical Displays
|
|
|
|
* Cut and Paste:: Mouse commands for cut and paste.
|
|
* 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.
|
|
* Frame Commands:: Iconifying, deleting, and switching frames.
|
|
* Speedbar:: How to make and use a speedbar frame.
|
|
* 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.
|
|
* Wheeled Mice:: Using mouse wheels for scrolling.
|
|
* Drag and Drop:: Using drag and drop to open files and insert text.
|
|
* Menu Bars:: Enabling and disabling the menu bar.
|
|
* Tool Bars:: Enabling and disabling the tool bar.
|
|
* Dialog Boxes:: Controlling use of dialog boxes.
|
|
* Tooltips:: Showing "tooltips", AKA "balloon help" for active text.
|
|
* Mouse Avoidance:: Moving the mouse pointer out of the way.
|
|
* Non-Window Terminals:: Multiple frames on terminals that show only one.
|
|
* Text-Only Mouse:: Using the mouse in text-only terminals.
|
|
|
|
International Character Set Support
|
|
|
|
* International Chars:: 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.
|
|
* Multibyte Conversion:: How single-byte characters convert to multibyte.
|
|
* 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:: Specifying a file's coding system explicitly.
|
|
* Output Coding:: Choosing coding systems for output.
|
|
* Text Coding:: Choosing conversion to use for file text.
|
|
* Communication Coding:: Coding systems for interprocess communication.
|
|
* File Name Coding:: Coding systems for file @emph{names}.
|
|
* Terminal Coding:: Specifying coding systems for converting
|
|
terminal input and output.
|
|
* Fontsets:: Fontsets are collections of fonts
|
|
that cover the whole spectrum of characters.
|
|
* Defining Fontsets:: Defining a new fontset.
|
|
* Undisplayable Characters::When characters don't display.
|
|
* Unibyte Mode:: You can pick one European character set
|
|
to use without multibyte characters.
|
|
* Charsets:: How Emacs groups its internal character codes.
|
|
|
|
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.
|
|
* HTML Mode:: Editing HTML, SGML, and XML files.
|
|
* Nroff Mode:: Editing input to the formatter nroff.
|
|
* Formatted Text:: Editing formatted text directly in WYSIWYG fashion.
|
|
* Text Based Tables:: Editing text-based tables in WYSIWYG fashion.
|
|
|
|
Filling Text
|
|
|
|
* Auto Fill:: Auto Fill mode breaks long lines automatically.
|
|
* Refill:: Keeping paragraphs filled.
|
|
* 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.
|
|
* Longlines:: Editing text with very long lines.
|
|
|
|
Outline Mode
|
|
|
|
* Format: Outline Format. What the text of an outline looks like.
|
|
* Motion: Outline Motion. Special commands for moving through
|
|
outlines.
|
|
* Visibility: Outline Visibility. Commands to control what is visible.
|
|
* Views: Outline Views. Outlines and multiple views.
|
|
* Foldout:: Folding means zooming in on outlines.
|
|
|
|
@TeX{} Mode
|
|
|
|
* Editing: TeX Editing. Special commands for editing in TeX mode.
|
|
* LaTeX: LaTeX Editing. Additional commands for LaTeX input files.
|
|
* Printing: TeX Print. Commands for printing part of a file with TeX.
|
|
* Misc: TeX Misc. Customization of TeX mode, and related features.
|
|
|
|
Editing Formatted Text
|
|
|
|
* Requesting Formatted Text:: Entering and exiting Enriched mode.
|
|
* Hard and Soft Newlines:: There are two different kinds of newlines.
|
|
* Editing Format Info:: How to edit text properties.
|
|
* Faces: Format Faces. Bold, italic, underline, etc.
|
|
* Color: Format Colors. Changing the color of text.
|
|
* Indent: Format Indentation. Changing the left and right margins.
|
|
* Justification: Format Justification.
|
|
Centering, setting text flush with the
|
|
left or right margin, etc.
|
|
* Other: Format Properties. The "special" text properties submenu.
|
|
* Forcing Enriched Mode:: How to force use of Enriched mode.
|
|
|
|
Editing Text-based Tables
|
|
|
|
* Table Definition:: What is a text based table.
|
|
* Table Creation:: How to create a table.
|
|
* Table Recognition:: How to activate and deactivate tables.
|
|
* Cell Commands:: Cell-oriented commands in a table.
|
|
* Cell Justification:: Justifying cell contents.
|
|
* Row Commands:: Manipulating rows of table cell.
|
|
* Column Commands:: Manipulating columns of table cell.
|
|
* Fixed Width Mode:: Fixing cell width.
|
|
* Table Conversion:: Converting between plain text and tables.
|
|
* Measuring Tables:: Analyzing table dimension.
|
|
* Table Misc:: Table miscellany.
|
|
|
|
Editing Programs
|
|
|
|
* Program Modes:: Major modes for editing programs.
|
|
* Defuns:: Commands to operate on major top-level parts
|
|
of a program.
|
|
* Program Indent:: Adjusting indentation to show the nesting.
|
|
* Parentheses:: Commands that operate on parentheses.
|
|
* Comments:: Inserting, killing, and aligning comments.
|
|
* Documentation:: Getting documentation of functions you plan to call.
|
|
* Hideshow:: Displaying blocks selectively.
|
|
* Symbol Completion:: Completion on symbol names of your program or language.
|
|
* Glasses:: Making identifiersLikeThis more readable.
|
|
* Misc for Programs:: Other Emacs features useful for editing programs.
|
|
* C Modes:: Special commands of C, C++, Objective-C,
|
|
Java, and Pike modes.
|
|
* Asm Mode:: Asm mode and its special features.
|
|
* Fortran:: Fortran mode and its special features.
|
|
|
|
Top-Level Definitions, or Defuns
|
|
|
|
* Left Margin Paren:: An open-paren or similar opening delimiter
|
|
starts a defun if it is at the left margin.
|
|
* Moving by Defuns:: Commands to move over or mark a major definition.
|
|
* Imenu:: Making buffer indexes as menus.
|
|
* Which Function:: Which Function mode shows which function you are in.
|
|
|
|
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:: Extra features for indenting C and related modes.
|
|
* Custom C Indent:: Controlling indentation style for C and related modes.
|
|
|
|
Commands for Editing with Parentheses
|
|
|
|
* Expressions:: Expressions with balanced parentheses.
|
|
* Moving by Parens:: Commands for moving up, down and across
|
|
in the structure of parentheses.
|
|
* Matching:: Insertion of a close-delimiter flashes matching open.
|
|
|
|
Manipulating Comments
|
|
|
|
* Comment Commands:: Inserting, killing, and aligning comments.
|
|
* Multi-Line Comments:: Commands for adding and editing multi-line comments.
|
|
* Options for Comments::Customizing the comment features.
|
|
|
|
Documentation Lookup
|
|
|
|
* Info Lookup:: Looking up library functions and commands
|
|
in Info files.
|
|
* Man Page:: Looking up man pages of library functions and commands.
|
|
* Lisp Doc:: Looking up Emacs Lisp functions, etc.
|
|
|
|
C and Related Modes
|
|
|
|
* Motion in C:: Commands to move by C statements, etc.
|
|
* Electric C:: Colon and other chars can automatically reindent.
|
|
* Hungry Delete:: A more powerful DEL command.
|
|
* Other C Commands:: Filling comments, viewing expansion of macros,
|
|
and other neat features.
|
|
|
|
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.
|
|
* Grep Searching:: Searching with grep.
|
|
* Flymake:: Finding syntax errors on the fly.
|
|
* 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 Eval:: Executing a single Lisp expression in Emacs.
|
|
* Lisp Interaction:: Executing Lisp in an Emacs buffer.
|
|
* 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.
|
|
* GDB Graphical Interface:: An enhanced mode that uses GDB features to
|
|
implement a graphical debugging environment through
|
|
Emacs.
|
|
|
|
Maintaining Large Programs
|
|
|
|
* Change Log:: Maintaining a change history for your program.
|
|
* Format of ChangeLog:: What the change log file looks like.
|
|
* Tags:: Go direct 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.
|
|
|
|
Tags Tables
|
|
|
|
* Tag Syntax:: Tag syntax for various types of code and text files.
|
|
* Create Tags Table:: Creating a tags table with @code{etags}.
|
|
* Etags Regexps:: Create arbitrary tags using regular expressions.
|
|
* 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.
|
|
|
|
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.
|
|
* Dabbrev Customization:: What is a word, for dynamic abbrevs. Case handling.
|
|
|
|
@ifnottex
|
|
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.
|
|
@end ifnottex
|
|
|
|
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.
|
|
* Mail Amusements:: Distract the NSA's attention; add a fortune to a msg.
|
|
* 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 Coding:: How Rmail handles decoding character sets.
|
|
* 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.
|
|
* Remote Mailboxes:: Retrieving Mail from Remote Mailboxes.
|
|
* Other Mailbox Formats:: Retrieving Mail from Local Mailboxes in
|
|
Various Formats
|
|
|
|
Dired, the Directory Editor
|
|
|
|
* Dired Enter:: How to invoke Dired.
|
|
* Dired Navigation:: How to move 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.
|
|
* Subdir Switches:: Subdirectory switches in Dired.
|
|
* 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.
|
|
* Wdired:: Operating on files by editing the Dired buffer.
|
|
* Misc Dired Features:: Various other features.
|
|
|
|
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.
|
|
* Writing Calendar Files:: Writing calendars to files of various formats.
|
|
* 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.
|
|
* Importing Diary:: Converting diary events to/from other formats.
|
|
* Daylight Saving:: How to specify when daylight saving time is active.
|
|
* Time Intervals:: Keeping track of time intervals.
|
|
* Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization.
|
|
|
|
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
|
|
|
|
* Displaying the Diary:: 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.
|
|
|
|
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 Prompts:: Two ways to recognize shell prompts.
|
|
* Shell History:: Repeating previous commands in a shell buffer.
|
|
* Directory Tracking:: Keeping track when the subshell changes directory.
|
|
* Shell Options:: Options for customizing Shell mode.
|
|
* Terminal emulator:: An Emacs window as a terminal emulator.
|
|
* Term Mode:: Special Emacs commands used in Term mode.
|
|
* Paging in Term:: Paging in the terminal emulator.
|
|
* Remote Host:: Connecting to another computer.
|
|
|
|
Using Emacs as a Server
|
|
|
|
* Invoking emacsclient:: Emacs client startup options.
|
|
|
|
Printing Hard Copies
|
|
|
|
* PostScript:: Printing buffers or regions as PostScript.
|
|
* PostScript Variables:: Customizing the PostScript printing commands.
|
|
* Printing Package:: An optional advanced printing interface.
|
|
|
|
Hyperlinking and Navigation Features
|
|
|
|
* Browse-URL:: Following URLs.
|
|
* Goto-address:: Activating URLs.
|
|
* FFAP:: Finding files etc. at point.
|
|
|
|
Customization
|
|
|
|
* Minor Modes:: Each minor mode is one feature you can turn on
|
|
independently of any others.
|
|
* Easy Customization:: Convenient way to browse and change user options.
|
|
* Variables:: Many Emacs commands examine Emacs variables
|
|
to decide what to do; by setting variables,
|
|
you can control their functioning.
|
|
* Key Bindings:: The keymaps say what command each key runs.
|
|
By changing them, you can "redefine keys".
|
|
* 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.
|
|
* 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.
|
|
|
|
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.
|
|
* Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file.
|
|
|
|
Dealing with Emacs Trouble
|
|
|
|
* DEL Does Not Delete:: 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.
|
|
* Memory Full:: How to cope when you run out of memory.
|
|
* After a Crash:: Recovering editing in an Emacs session that crashed.
|
|
* Emergency Escape:: Emergency escape---
|
|
What to do if Emacs stops responding.
|
|
* Total Frustration:: When you are at your wits' end.
|
|
|
|
Reporting Bugs
|
|
|
|
* 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 Arguments for Emacs Invocation
|
|
|
|
* 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:: Choosing display colors.
|
|
* 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.
|
|
* Misc X:: Other display options.
|
|
|
|
Environment Variables
|
|
|
|
* General Variables:: Environment variables that all versions of Emacs use.
|
|
* Misc Variables:: Certain system specific variables.
|
|
* MS-Windows Registry:: An alternative to the environment on MS-Windows.
|
|
|
|
X Options and Resources
|
|
|
|
* Resources:: Using X resources with Emacs (in general).
|
|
* Table of Resources:: Table of specific X resources that affect Emacs.
|
|
* Face Resources:: X resources for customizing faces.
|
|
* Lucid Resources:: X resources for Lucid menus.
|
|
* LessTif Resources:: X resources for LessTif and Motif menus.
|
|
* GTK resources:: Resources for GTK widgets.
|
|
|
|
Emacs and Mac OS
|
|
|
|
* Mac Input:: Keyboard and mouse input on Mac.
|
|
* Mac International:: International character sets on Mac.
|
|
* Mac Environment Variables:: Setting environment variables for Emacs.
|
|
* Mac Directories:: Volumes and directories on Mac.
|
|
* Mac Font Specs:: Specifying fonts on Mac.
|
|
* Mac Functions:: Mac-specific Lisp functions.
|
|
|
|
Emacs and Microsoft Windows/MS-DOS
|
|
|
|
* Text and Binary:: Text files use CRLF to terminate lines.
|
|
* Windows Files:: File-name conventions on Windows.
|
|
* ls in Lisp:: Emulation of @code{ls} for Dired.
|
|
* Windows HOME:: Where Emacs looks for your @file{.emacs}.
|
|
* Windows Keyboard:: Windows-specific keyboard features.
|
|
* Windows Mouse:: Windows-specific mouse features.
|
|
* Windows Processes:: Running subprocesses on Windows.
|
|
* Windows Printing:: How to specify the printer on MS-Windows.
|
|
* Windows Misc:: Miscellaneous Windows features.
|
|
* MS-DOS:: Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
|
|
@end detailmenu
|
|
@end menu
|
|
|
|
@iftex
|
|
@unnumbered Preface
|
|
|
|
This manual documents the use and simple customization of the Emacs
|
|
editor. Simple Emacs customizations do not require you to be a
|
|
programmer, but if you are not interested in customizing, you can
|
|
ignore the customization hints.
|
|
|
|
This is primarily a reference manual, but can also be used as a
|
|
primer. If you are new to Emacs, we recommend you 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}. The tutorial
|
|
describes commands, tells you when to try them, and explains the
|
|
results.
|
|
|
|
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 shown there. The next few chapters
|
|
describe fundamental techniques and concepts that are used constantly.
|
|
You need to understand them thoroughly, so experiment with them
|
|
until you are fluent.
|
|
|
|
Chapters 14 through 19 describe intermediate-level features that are
|
|
useful for many kinds of editing. Chapter 20 and following chapters
|
|
describe optional but useful features; 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 several common problems
|
|
(@pxref{Lossage}), as well as when and how to report Emacs bugs
|
|
(@pxref{Bugs}).
|
|
|
|
To find the documentation of 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 is
|
|
the principal means of accessing on-line documentation in the GNU
|
|
system. Both the Emacs Info file and an Info reader are included 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 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, see @cite{Emacs, the Extensible,
|
|
Customizable Self-Documenting Display Editor}, available from
|
|
@url{ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-519A.pdf}.
|
|
|
|
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), Microsoft Windows, and Macintosh systems.
|
|
Those systems use different file name syntax; in addition, VMS and
|
|
MS-DOS do not support all GNU Emacs features. @xref{Microsoft
|
|
Windows}, for information about using Emacs on Windows.
|
|
@xref{Mac OS}, for information about using Emacs on Macintosh. We
|
|
don't try to describe VMS usage in this manual.
|
|
@end iftex
|
|
|
|
@node Distrib, Intro, 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 in this manual@footnote{This manual is itself
|
|
covered by the GNU Free Documentation License. This license is
|
|
similar in spirit to the General Public License, but is more suitable
|
|
for documentation. @xref{GNU Free Documentation License}.}.
|
|
@xref{Copying}.
|
|
|
|
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
|
|
@url{http://www.gnu.org/software/emacs} on our website 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. This is a convenient and reliable way to get a copy; it is
|
|
also a good way to help fund our work. We also sell hardcopy versions
|
|
of this manual and @cite{An Introduction to Programming in Emacs Lisp},
|
|
by Robert J. Chassell. You can find an order form on our web site at
|
|
@url{http://www.gnu.org/order/order.html}. For further information,
|
|
write to
|
|
|
|
@display
|
|
Free Software Foundation
|
|
51 Franklin Street, Fifth Floor
|
|
Boston, MA 02110-1301
|
|
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
|
|
@node Acknowledgments, Intro, Distrib, Top
|
|
@unnumberedsec Acknowledgments
|
|
|
|
Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
|
|
Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf
|
|
Angeli, Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero,
|
|
Eli Barzilay, Steven L.@: Baur, Jay Belanger, Alexander L.@: Belikoff,
|
|
Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti, Ray Blaak, Jim Blandy, Johan Bockg@aa{}rd,
|
|
Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel
|
|
Briot, Kevin Broadey, Vincent Broman, David M.@: Brown, Georges
|
|
Brun-Cottan, Joe Buehler, W@l{}odek Bzyl, Bill Carpenter, Per
|
|
Cederqvist, Hans Chalupsky, Chris Chase, Bob Chassell, Andrew Choi,
|
|
Sacha Chua, James Clark, Mike Clarkson, Glynn Clements, Andrew
|
|
Csillag, Doug Cutting, Mathias Dahl, Satyaki Das, Michael DeCorte,
|
|
Gary Delp, Matthieu Devin, Eri Ding, Jan Dj@"{a}rv, Carsten Dominik,
|
|
Scott Draves, Benjamin Drieu, Viktor Dukhovni, John Eaton, Rolf Ebert,
|
|
Paul Eggert, Stephen Eglen, Torbj@"orn Einarsson, Tsugutomo Enami,
|
|
Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach,
|
|
Oscar Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain
|
|
Francoise, Noah Friedman, Andreas Fuchs, Hallvard Furuseth, Keith
|
|
Gabryelski, Peter S.@: Galbraith, Kevin Gallagher, Kevin Gallo, Juan
|
|
Le@'{o}n Lahoz Garc@'{@dotless{i}}a, Howard Gayle, Stephen Gildea, Julien
|
|
Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris Goldowsky,
|
|
Michelangelo Grigni, Odd Gripenstam, Kai Gro@ss{}johann, Michael
|
|
Gschwind, Henry Guillaume, Doug Gwyn, Ken'ichi Handa, Lars Hansen,
|
|
Chris Hanson, K. Shane Hartman, John Heidemann, Jon K.@: Hellan,
|
|
Jesper Harder, Markus Heritsch, Karl Heuer, Manabu Higashida, Anders
|
|
Holst, Jeffrey C.@: Honig, Kurt Hornik, Tom Houlder, Joakim Hove,
|
|
Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Pavel
|
|
Janik, Paul Jarc, Ulf Jasper, Michael K. Johnson, Kyle Jones, Terry
|
|
Jones, Simon Josefsson, Arne J@o{}rgensen, Tomoji Kagatani, Brewster
|
|
Kahle, Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi
|
|
Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg,
|
|
Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: Kolodney, David M.@:
|
|
Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer, Ryszard
|
|
Kubiak, Geoff Kuenning, David K@aa{}gedal, Daniel LaLiberte, Mario
|
|
Lang, Aaron Larson, James R.@: Larus, Vinicius Jose Latorre, Werner
|
|
Lemberg, Frederic Lepied, Peter Liljenberg, Lars Lindberg, Chris
|
|
Lindblad, Anders Lindgren, Thomas Link, Juri Linkov, Francis Litterio,
|
|
Emilio C. Lopes, Dave Love, Sascha L@"{u}decke, Eric Ludlam,Alan
|
|
Mackenzie, Christopher J.@: Madsen, Neil M.@: Mager, Ken Manheimer,
|
|
Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson, Charlie
|
|
Martin, Thomas May, Roland McGrath, Will Mengarini, David Megginson,
|
|
Ben A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell, Richard
|
|
Mlynarik, Gerd Moellmann, Stefan Monnier, Morioka Tomohiko, Keith
|
|
Moore, Glenn Morris, Diane Murray, Sen Nagata, Erik Naggum, Thomas
|
|
Neumann, Thien-Thi Nguyen, Mike Newton, Jurgen Nickelsen, Dan
|
|
Nicolaescu, Hrvoje Niksic, Jeff Norden, Andrew Norman, Alexandre
|
|
Oliva, Bob Olson, Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit,
|
|
David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William
|
|
M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@:
|
|
Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco
|
|
A.@: Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko
|
|
Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold,
|
|
Alex Rezinsky, Rob Riepel, David Reitter, Nick Roberts, Roland B.@:
|
|
Roberts, John Robinson, Danny Roozendaal, William Rosenblatt,
|
|
Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney,
|
|
Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko Sato, Jorgen
|
|
Schaefer, Holger Schauer, William Schelter, Ralph Schleicher, Gregor
|
|
Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan
|
|
Schormann, Alex Schroeder, Stephen Schoef, Raymond Scholz, Randal
|
|
Schwartz, Oliver Seidel, Manuel Serrano, Hovav Shacham, Stanislav
|
|
Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund,
|
|
Rick Sladkey, Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith,
|
|
Andre Spiegel, Michael Staats, William Sommerfeld, Michael Staats,
|
|
Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
|
|
Stevens, Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve
|
|
Strassman, Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe
|
|
Theberge, Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson,
|
|
Luc Teirlinck, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno,
|
|
Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke, Didier
|
|
Verna, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John
|
|
Paul Wallington, Colin Walters, Barry Warsaw, Morten Welinder, Joseph
|
|
Brian Wells, Rodney Whitby, John Wiegley, Ed Wilkinson, Mike Williams,
|
|
Bill Wohler, Steven A. Wood, Dale R.@: Worley, Francis J.@: Wright,
|
|
Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka, Masatake Yamato,
|
|
Jonathan Yavner, Ryan Yeske, Chong Yidong, Ilya Zakharevich, Milan
|
|
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Shenghuo Zhu,
|
|
Ian T.@: Zimmermann, Reto Zimmermann, Neal Ziring, Teodor Zlatanov,
|
|
and Detlev Zundel.
|
|
@end iftex
|
|
|
|
@node Intro, Glossary, Distrib, Top
|
|
@unnumbered Introduction
|
|
|
|
You are reading about GNU Emacs, the GNU incarnation of the
|
|
advanced, self-documenting, customizable, extensible editor Emacs.
|
|
(The `G' in `GNU' is not silent.)
|
|
|
|
We call Emacs advanced because it provides much more than simple
|
|
insertion and deletion. It can control subprocesses, indent programs
|
|
automatically, show two or more files at once, and edit formatted
|
|
text. Emacs editing commands operate in terms of characters, words,
|
|
lines, sentences, paragraphs, and pages, as well as expressions and
|
|
comments in various 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 alter Emacs commands' behavior
|
|
in simple 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, you can rebind the basic cursor motion
|
|
commands (up, down, left and right) to any keys on the keyboard that
|
|
you find comfortable. @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; the few exceptions
|
|
could have been written in Lisp but use C instead for efficiency.
|
|
Writing an extension is programming, but non-programmers can use it
|
|
afterwards. @xref{Top, Emacs Lisp Intro, Preface, eintr, An
|
|
Introduction to Programming in Emacs Lisp}, if you want to learn Emacs
|
|
Lisp programming.
|
|
|
|
When running on a graphical display, Emacs provides its own menus
|
|
and convenient handling of mouse buttons. In addition, Emacs provides
|
|
many of the benefits of a graphical display even on a text-only
|
|
terminal. For instance, it can highlight parts of a file, display and
|
|
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 kmacro.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 maintaining.texi
|
|
@include abbrevs.texi
|
|
@ifnottex
|
|
@include picture-xtra.texi
|
|
@end ifnottex
|
|
@include sending.texi
|
|
@include rmail.texi
|
|
@include dired.texi
|
|
@include calendar.texi
|
|
@include misc.texi
|
|
@include custom.texi
|
|
@include trouble.texi
|
|
|
|
@node Copying, GNU Free Documentation License, Service, Top
|
|
@appendix GNU GENERAL PUBLIC LICENSE
|
|
@center Version 2, June 1991
|
|
|
|
@display
|
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 Lesser 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
|
|
@ifnottex
|
|
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end ifnottex
|
|
|
|
@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
|
|
@ifnottex
|
|
@center NO WARRANTY
|
|
@end ifnottex
|
|
|
|
@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
|
|
@ifnottex
|
|
@center END OF TERMS AND CONDITIONS
|
|
@end ifnottex
|
|
|
|
@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) @var{yyyy} @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.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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) @var{yyyy} @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 Lesser General
|
|
Public License instead of this License.
|
|
|
|
@include doclicense.texi
|
|
@include cmdargs.texi
|
|
@include xresources.texi
|
|
|
|
@include anti.texi
|
|
@include macos.texi
|
|
@include msdog.texi
|
|
@include gnu.texi
|
|
@include glossary.texi
|
|
@ifnottex
|
|
@include ack.texi
|
|
@end ifnottex
|
|
|
|
@c The Option Index is produced only in the on-line version,
|
|
@c because the index entries related to command-line options
|
|
@c tend to point to the same pages and all begin with a dash.
|
|
@c This, and the need to keep the node links consistent, are
|
|
@c the reasons for the funky @iftex/@ifnottex dance below.
|
|
@c The Option Index is _not_ before Key Index, because that
|
|
@c would require changes in the glossary.texi's @node line.
|
|
@c It is not after Concept Index for similar reasons.
|
|
|
|
@iftex
|
|
@node Key Index, Command Index, Glossary, Top
|
|
@unnumbered Key (Character) Index
|
|
@printindex ky
|
|
@end iftex
|
|
|
|
@ifnottex
|
|
@node Key Index, Option Index, Glossary, Top
|
|
@unnumbered Key (Character) Index
|
|
@printindex ky
|
|
|
|
@node Option Index, Command Index, Key Index, Top
|
|
@unnumbered Command-Line Options Index
|
|
@printindex op
|
|
|
|
@node Command Index, Variable Index, Option Index, Top
|
|
@unnumbered Command and Function Index
|
|
@printindex fn
|
|
@end ifnottex
|
|
|
|
@iftex
|
|
@node Command Index, Variable Index, Key Index, Top
|
|
@unnumbered Command and Function Index
|
|
@printindex fn
|
|
@end iftex
|
|
|
|
@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
|
|
|
|
@bye
|
|
|
|
@ignore
|
|
arch-tag: ed48740a-410b-46ea-9387-c9a9252a3392
|
|
@end ignore
|