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