Mercurial > emacs
changeset 84236:87222bf30408
Move here from ../../man
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 06 Sep 2007 04:45:30 +0000 |
parents | a8d56106e684 |
children | c8665d7fa5fe |
files | doc/emacs/emacs.texi |
diffstat | 1 files changed, 1365 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/emacs/emacs.texi Thu Sep 06 04:45:30 2007 +0000 @@ -0,0 +1,1365 @@ +\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 23.0.50 + +@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 are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' +@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. +@c 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. +@c Do this inside @tex for now, so current makeinfo does not complain. +@tex +@ifset smallbook +@fonttextsize 10 +@set EMACSVER 22 +\global\let\urlcolor=\Black % don't print links in grayscale +\global\let\linkcolor=\Black +@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 +Published by the Free Software Foundation @* +51 Franklin Street, Fifth Floor @* +Boston, MA 02110-1301 USA @* +ISBN 1-882114-86-8 + +@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. +* 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. +* Image-Dired:: Viewing image thumbnails in Dired +* 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 +@include gpl.texi + +@node GNU Free Documentation License, Emacs Invocation, Copying, Top +@appendix GNU Free Documentation 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