diff options
Diffstat (limited to 'info/emacs-1')
-rw-r--r-- | info/emacs-1 | 1007 |
1 files changed, 1007 insertions, 0 deletions
diff --git a/info/emacs-1 b/info/emacs-1 new file mode 100644 index 00000000000..3366143d000 --- /dev/null +++ b/info/emacs-1 @@ -0,0 +1,1007 @@ +This is Info file ../info/emacs, produced by Makeinfo-1.49 from the +input file emacs.texi. + + This file documents the GNU Emacs editor. + + Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "The GNU Manifesto", "Distribution" and "GNU +General Public License" are included exactly as in the original, and +provided that the entire resulting derived work is distributed under the +terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that the sections entitled "The GNU Manifesto", +"Distribution" and "GNU General Public License" may be included in a +translation approved by the author instead of in the original English. + + +File: emacs, Node: Top, Next: Distrib, Up: (DIR) + +The Emacs Editor +**************** + + Emacs is the extensible, customizable, self-documenting real-time +display editor. This Info file describes how to edit with Emacs and +some of how to customize it, but not how to extend it. + +* Menu: + +* Distrib:: How to get the latest Emacs distribution. +* License:: The GNU General Public License gives you permission + to redistribute GNU Emacs on certain terms; and also + explains that there is no warranty. +* Intro:: An introduction to Emacs concepts. +* Glossary:: The glossary. +* Version 19:: Changes coming in Emacs version 19, to be released. +* Manifesto:: What's GNU? Gnu's Not Unix! + +Indexes, nodes containing large menus +* Key Index:: An item for each standard Emacs key sequence. +* Command Index:: An item for each command name. +* Variable Index:: An item for each documented variable. +* Concept Index:: An item for each concept. + +Important General Concepts +* Screen:: How to interpret what you see on the screen. +* Characters:: Emacs's character sets for file contents and for keyboard. +* Keys:: Key sequences: what you type to request one editing action. +* Commands:: Commands: named functions run by key sequences to do editing. +* Entering Emacs:: Starting Emacs from the shell. +* Command Switches:: Hairy startup options. +* Exiting:: Stopping or killing Emacs. +* Basic:: The most basic editing commands. +* Undo:: Undoing recently made changes in the text. +* Minibuffer:: Entering arguments that are prompted for. +* M-x:: Invoking commands by their names. +* Help:: Commands for asking Emacs about its commands. + +Important Text-Changing Commands +* Mark:: The mark: how to delimit a "region" of text. +* Killing:: Killing text. +* Yanking:: Recovering killed text. Moving text. +* Accumulating Text:: + Other ways of copying text. +* Rectangles:: Operating on the text inside a rectangle on the screen. +* Registers:: Saving a text string or a location in the buffer. +* Display:: Controlling what text is displayed. +* Search:: Finding or replacing occurrences of a string. +* Fixit:: Commands especially useful for fixing typos. + +Larger Units of Text +* Files:: All about handling files. +* Buffers:: Multiple buffers; editing several files at once. +* Windows:: Viewing two pieces of text at once. + +Advanced Features +* Major Modes:: Text mode vs. Lisp mode vs. C mode ... +* Indentation:: Editing the white space at the beginnings of lines. +* Text:: Commands and modes for editing English. +* Programs:: Commands and modes for editing programs. +* Compiling/Testing:: + Compiling, running and debugging programs. +* Abbrevs:: How to define text abbreviations to reduce + the number of characters you must type. +* Picture:: Editing pictures made up of characters + using the quarter-plane screen model. +* Sending Mail::Sending mail in Emacs. +* Rmail:: Reading mail in Emacs. +* Recursive Edit:: + A command can allow you to do editing + "within the command". This is called a + `recursive editing level'. +* Narrowing:: Restricting display and editing to a portion + of the buffer. +* Sorting:: Sorting lines, paragraphs or pages within Emacs. +* Shell:: Executing shell commands from Emacs. +* Hardcopy:: Printing buffers or regions. +* Dissociated Press:: Dissociating text for fun. +* Amusements:: Various games and hacks. +* Emulation:: Emulating some other editors with Emacs. +* Customization:: Modifying the behavior of Emacs. + +Recovery from Problems. +* Quitting:: Quitting and aborting. +* Lossage:: What to do if Emacs is hung or malfunctioning. +* Bugs:: How and when to report a bug. + +Here are some other nodes which are really inferiors of the ones +already listed, mentioned here so you can get to them in one step: + +Subnodes of Screen +* Point:: The place in the text where editing commands operate. +* Echo Area:: Short messages appear at the bottom of the screen. +* Mode Line:: Interpreting the mode line. + +Subnodes of Basic +* Blank Lines:: Commands to make or delete blank lines. +* Continuation Lines:: Lines too wide for the screen. +* Position Info:: What page, line, row, or column is point on? +* Arguments:: Giving numeric arguments to commands. + +Subnodes of Minibuffer +* Minibuffer File:: Entering file names with the minibuffer. +* Minibuffer Edit:: How to edit in the minibuffer. +* Completion:: An abbreviation facility for minibuffer input. +* Repetition:: Re-executing previous commands that used the minibuffer. + +Subnodes of Mark +* Setting Mark:: Commands to set the mark. +* Using Region:: Summary of ways to operate on contents of the region. +* Marking Objects:: Commands to put region around textual units. +* Mark Ring:: Previous mark positions saved so you can go back there. + +Subnodes of Yanking +* Kill Ring:: Where killed text is stored. Basic yanking. +* Appending Kills:: Several kills in a row all yank together. +* Earlier Kills:: Yanking something killed some time ago. + +Subnodes of Registers +* RegPos:: Saving positions in registers. +* RegText:: Saving text in registers. +* RegRect:: Saving rectangles in registers. + +Subnodes of Display +* Scrolling:: Moving text up and down in a window. +* Horizontal Scrolling:: Moving text left and right in a window. +* Selective Display:: Hiding lines with lots of indentation. +* Display Vars:: Information on variables for customizing display. + +Subnodes of Search +* Incremental Search:: Search happens as you type the string. +* Nonincremental Search:: Specify entire string and then search. +* Word Search:: Search for sequence of words. +* Regexp Search:: Search for match for a regexp. +* Regexps:: Syntax of regular expressions. +* Search Case:: To ignore case while searching, or not. +* Replace:: Search, and replace some or all matches. +* Unconditional Replace:: Everything about replacement except for querying. +* Query Replace:: How to use querying. +* Other Repeating Search:: Operating on all matches for some regexp. + +Subnodes of Fixit +* Kill Errors:: Commands to kill a batch of recently entered text. +* Transpose:: Exchanging two characters, words, lines, lists... +* Fixing Case:: Correcting case of last word entered. +* Spelling:: Apply spelling checker to a word, or a whole file. + +Subnodes of Files +* File Names:: How to type and edit file name arguments. +* Visiting:: Visiting a file prepares Emacs to edit the file. +* Saving:: Saving makes your changes permanent. +* Backup:: How Emacs saves the old version of your file. +* Interlocking::How Emacs protects against simultaneous editing + of one file by two users. +* Reverting:: Reverting cancels all the changes not saved. +* Auto Save:: Auto Save periodically protects against loss of data. +* ListDir:: Listing the contents of a file directory. +* Dired:: "Editing" a directory to delete, rename, etc. + the files in it. +* Misc File Ops:: Other things you can do on files. + +Subnodes of Buffers +* Select Buffer:: Creating a new buffer or reselecting an old one. +* List Buffers:: Getting a list of buffers that exist. +* Misc Buffer:: Renaming; changing read-only status. +* Kill Buffer:: Killing buffers you no longer need. +* Several Buffers:: How to go through the list of all buffers + and operate variously on several of them. + +Subnodes of Windows +* Basic Window:: Introduction to Emacs windows. +* Split Window:: New windows are made by splitting existing windows. +* Other Window:: Moving to another window or doing something to it. +* Pop Up Window:: Finding a file or buffer in another window. +* Change Window:: Deleting windows and changing their sizes. + +Subnodes of Indentation +* Indentation Commands:: Various commands and techniques for indentation. +* Tab Stops:: You can set arbitrary "tab stops" and then + indent to the next tab stop when you want to. +* Just Spaces:: You can request indentation using just spaces. + +Subnodes of Text +* Text Mode:: The major mode for editing text files. +* Nroff Mode:: The major mode for editing input to the formatter nroff. +* TeX Mode:: The major mode for editing input to the formatter TeX. +* Texinfo Mode::The major mode for editing input to the formatter Texinfo. +* Outline Mode::The major mode for editing outlines. +* Words:: Moving over and killing words. +* Sentences:: Moving over and killing sentences. +* Paragraphs:: Moving over paragraphs. +* Pages:: Moving over pages. +* Filling:: Filling or justifying text +* Case:: Changing the case of text + +Subnodes of Programs +* Program Modes:: Major modes for editing programs. +* Lists:: Expressions with balanced parentheses. + There are editing commands to operate on them. +* Defuns:: Each program is made up of separate functions. + There are editing commands to operate on them. +* Grinding:: Adjusting indentation to show the nesting. +* Matching:: Insertion of a close-delimiter flashes matching open. +* Comments:: Inserting, killing and aligning comments. +* Balanced Editing:: Inserting two matching parentheses at once, etc. +* Lisp Completion:: Completion on symbol names in Lisp code. +* Documentation:: Getting documentation of functions you plan to call. +* Change Log:: Maintaining a change history for your program. +* Tags:: Go direct to any function in your program in one + command. Tags remembers which file it is in. +* Fortran:: Fortran mode and its special features. + +Subnodes of Compiling/Testing +* Compilation:: Compiling programs in languages other than Lisp + (C, Pascal, etc.) +* Lisp Modes:: Various modes for editing Lisp programs, with + different facilities for running the Lisp programs. +* Lisp Libraries:: Creating Lisp programs to run in Emacs. +* Lisp Interaction:: Executing Lisp in an Emacs buffer. +* Lisp Eval:: Executing a single Lisp expression in Emacs. +* Lisp Debug:: Debugging Lisp programs running in Emacs. +* External Lisp:: Communicating through Emacs with a separate Lisp. + +Subnodes of Abbrevs +* Defining Abbrevs:: Defining an abbrev, so it will expand when typed. +* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion. +* Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs. +* Saving Abbrevs:: Saving the entire list of abbrevs for another session. +* Dynamic Abbrevs:: Abbreviations for words already in the buffer. + +Subnodes of Picture +* Basic Picture:: Basic concepts and simple commands of Picture mode. +* Insert in Picture:: Controlling direction of cursor motion + after "self-inserting" characters. +* Tabs in Picture:: Various features for tab stops and indentation. +* Rectangles in Picture:: Clearing and superimposing rectangles. + +Subnodes of Sending Mail +* Mail Format:: Format of the mail being composed. +* Mail Headers:: Details of allowed mail header fields. +* Mail Mode:: Special commands for editing mail being composed. + +Subnodes of Rmail +* Rmail Scrolling:: Scrolling through a message. +* Rmail Motion:: Moving to another message. +* Rmail Deletion:: Deleting and expunging messages. +* Rmail Inbox:: How mail gets into the Rmail file. +* Rmail Files:: Using multiple Rmail files. +* Rmail Output:: Copying message out to files. +* Rmail Labels:: Classifying messages by labeling them. +* Rmail Summary:: Summaries show brief info on many messages. +* Rmail Reply:: Sending replies to messages you are viewing. +* Rmail Editing:: Editing message text and headers in Rmail. +* Rmail Digest:: Extracting the messages from a digest message. + +Subnodes of Shell +* Single Shell:: Commands to run one shell command and return. +* Interactive Shell:: Permanent shell taking input via Emacs. +* Shell Mode:: Special Emacs commands used with permanent shell. + +Subnodes of Customization +* Minor Modes:: Each minor mode is one feature you can turn on + independently of any others. +* Variables:: Many Emacs commands examine Emacs variables + to decide what to do; by setting variables, + you can control their functioning. +* Examining:: Examining or setting one variable's value. +* Edit Options:: Examining or editing list of all variables' values. +* Locals:: Per-buffer values of variables. +* File Variables:: How files can specify variable values. +* Keyboard Macros:: A keyboard macro records a sequence of keystrokes + to be replayed with a single command. +* Key Bindings:: The keymaps say what command each key runs. + By changing them, you can "redefine keys". +* Keymaps:: Definition of the keymap data structure. +* Rebinding:: How to redefine one key's meaning conveniently. +* Disabling:: Disabling a command means confirmation is required + before it can be executed. This is done to protect + beginners from surprises. +* Syntax:: The syntax table controls how words and expressions + are parsed. +* Init File:: How to write common customizations in the `.emacs' file. + +Subnodes of Lossage (and recovery) +* Stuck Recursive:: `[...]' in mode line around the parentheses. +* Screen Garbled:: Garbage on the screen. +* Text Garbled:: Garbage in the text. +* Unasked-for Search::Spontaneous entry to incremental search. +* Emergency Escape:: Emergency escape-- + What to do if Emacs stops responding. +* Total Frustration:: When you are at your wits' end. + + +File: emacs, Node: Distrib, Next: License, Prev: Top, Up: Top + +Distribution +************ + + GNU Emacs is "free"; this means that everyone is free to use it and +free to redistribute it on a free basis. GNU Emacs is not in the public +domain; it is copyrighted and there are restrictions on its +distribution, but these restrictions are designed to permit everything +that a good cooperating citizen would want to do. What is not allowed +is to try to prevent others from further sharing any version of GNU +Emacs that they might get from you. The precise conditions are found in +the GNU General Public License that comes with Emacs and also appears +following this section. + + The easiest way to get a copy of GNU Emacs is from someone else who +has it. You need not ask for permission to do so, or tell any one else; +just copy it. + + If you have access to the Internet, you can get the latest +distribution version of GNU Emacs from host `prep.ai.mit.edu' using +anonymous login. See the file `/u2/emacs/GETTING.GNU.SOFTWARE' on that +host to find out about your options for copying and which files to use. + + You may also receive GNU Emacs when you buy a computer. Computer +manufacturers are free to distribute copies on the same terms that +apply to everyone else. These terms require them to give you the full +sources, including whatever changes they may have made, and to permit +you to redistribute the GNU Emacs received from them under the usual +terms of the General Public License. In other words, the program must +be free for you when you get it, not just free for the manufacturer. + + If you cannot get a copy in any of those ways, you can order one +from the Free Software Foundation. Though Emacs itself is free, our +distribution service is not. An order form is included at the end of +manuals printed by the Foundation. It is also included in the file +`etc/DISTRIB' in the Emacs distribution. For further information, +write to + + Free Software Foundation + 675 Mass Ave + Cambridge, MA 02139 + USA + + The income from distribution fees goes to support the foundation's +purpose: the development of more free software to distribute just like +GNU Emacs. + + If you find GNU Emacs useful, please send a donation to the Free +Software Foundation. This will help support development of the rest of +the GNU system, and other useful software beyond that. Your donation +is tax deductible. + + +File: emacs, Node: License, Next: Intro, Prev: Distrib, Up: Top + +GNU GENERAL PUBLIC LICENSE +************************** + + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +Preamble +======== + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. You +can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, +and (2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 1. This License Agreement applies to any program or other work which + contains a notice placed by the copyright holder saying it may be + distributed under the terms of this General Public License. The + "Program", below, refers to any such program or work, and a "work + based on the Program" means either the Program or any work + containing the Program or a portion of it, either verbatim or with + modifications. Each licensee is addressed as "you". + + 2. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an + appropriate copyright notice and disclaimer of warranty; keep + intact all the notices that refer to this General Public License + and to the absence of any warranty; and give any other recipients + of the Program a copy of this General Public License along with + the Program. You may charge a fee for the physical act of + transferring a copy. + + 3. You may modify your copy or copies of the Program or any portion of + it, and copy and distribute such modifications under the terms of + Paragraph 1 above, provided that you also do the following: + + * cause the modified files to carry prominent notices stating + that you changed the files and the date of any change; and + + * cause the whole of any work that you distribute or publish, + that in whole or in part contains the Program or any part + thereof, either with or without modifications, to be licensed + at no charge to all third parties under the terms of this + General Public License (except that you may choose to grant + warranty protection to some or all third parties, at your + option). + + * If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the simplest and most usual way, to print + or display an announcement including an appropriate copyright + notice and a notice that there is no warranty (or else, + saying that you provide a warranty) and that users may + redistribute the program under these conditions, and telling + the user how to view a copy of this General Public License. + + * You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + + Mere aggregation of another independent work with the Program (or + its derivative) on a volume of a storage or distribution medium + does not bring the other work under the scope of these terms. + + 4. You may copy and distribute the Program (or a portion or + derivative of it, under Paragraph 2) in object code or executable + form under the terms of Paragraphs 1 and 2 above provided that you + also do one of the following: + + * accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + * accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal + charge for the cost of distribution) a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Paragraphs 1 and 2 above; or, + + * accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative + is allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + + Source code for a work means the preferred form of the work for + making modifications to it. For an executable file, complete + source code means all the source code for all modules it contains; + but, as a special exception, it need not include source code for + modules which are standard libraries that accompany the operating + system on which the executable file runs, or for standard header + files or definitions files that accompany that operating system. + + 5. You may not copy, modify, sublicense, distribute or transfer the + Program except as expressly provided under this General Public + License. Any attempt otherwise to copy, modify, sublicense, + distribute or transfer the Program is void, and will automatically + terminate your rights to use the Program under this License. + However, parties who have received copies, or rights to use + copies, from you under this General Public License will not have + their licenses terminated so long as such parties remain in full + compliance. + + 6. By copying, distributing or modifying the Program (or any work + based on the Program) you indicate your acceptance of this license + to do so, and all its terms and conditions. + + 7. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program + subject to these terms and conditions. You may not impose any + further restrictions on the recipients' exercise of the rights + granted herein. + + 8. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such + new versions will be similar in spirit to the present version, but + may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies a version number of the license which applies to + it and "any later version", you have the option of following the + terms and conditions either of that version or of any later + version published by the Free Software Foundation. If the Program + does not specify a version number of the license, you may choose + any version ever published by the Free Software Foundation. + + 9. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted + by the Free Software Foundation, write to the Free Software + Foundation; we sometimes make exceptions for this. Our decision + will be guided by the two goals of preserving the free status of + all derivatives of our free software and of promoting the sharing + and reuse of software generally. + + NO WARRANTY + + 10. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT + NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE + QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY + SERVICING, REPAIR OR CORRECTION. + + 11. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY + MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR + INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU + OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY + OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs +============================================= + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. + Copyright (C) 19YY NAME OF AUTHOR + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Also add information on how to contact you by electronic and paper +mail. + + If the program is interactive, make it output a short notice like +this when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type `show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type `show c' + for details. + + The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + + You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the program, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright + interest in the program `Gnomovision' + (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + SIGNATURE OF TY COON, 1 April 1989 + Ty Coon, President of Vice + + That's all there is to it! + + +File: emacs, Node: Intro, Next: Glossary, Prev: License, Up: Top + +Introduction +************ + + You are reading about GNU Emacs, the GNU incarnation of the advanced, +self-documenting, customizable, extensible real-time display editor +Emacs. (The `G' in `GNU' is not silent.) + + We say that Emacs is a "display" editor because normally the text +being edited is visible on the screen and is updated automatically as +you type your commands. *Note Display: Screen. + + We call it a "real-time" editor because the display is updated very +frequently, usually after each character or pair of characters you +type. This minimizes the amount of information you must keep in your +head as you edit. *Note Real-time: Basic. + + We call Emacs advanced because it provides facilities that go beyond +simple insertion and deletion: filling of text; automatic indentation of +programs; viewing two or more files at once; and dealing in terms of +characters, words, lines, sentences, paragraphs, and pages, as well as +expressions and comments in several different programming languages. +It is much easier to type one command meaning "go to the end of the +paragraph" than to find that spot with simple cursor keys. + + "Self-documenting" means that at any time you can type a special +character, `Control-h', to find out what your options are. You can +also use it to find out what any command does, or to find all the +commands that pertain to a topic. *Note Help::. + + "Customizable" means that you can change the definitions of Emacs +commands in little ways. For example, if you use a programming +language in which comments start with `<**' and end with `**>', you can +tell the Emacs comment manipulation commands to use those strings +(*note Comments::.). Another sort of customization is rearrangement of +the command set. For example, if you prefer the four basic cursor +motion commands (up, down, left and right) on keys in a diamond pattern +on the keyboard, you can have it. *Note Customization::. + + "Extensible" means that you can go beyond simple customization and +write entirely new commands, programs in the Lisp language to be run by +Emacs's own Lisp interpreter. Emacs is an "on-line extensible" system, +which means that it is divided into many functions that call each other, +any of which can be redefined in the middle of an editing session. Any +part of Emacs can be replaced without making a separate copy of all of +Emacs. Most of the editing commands of Emacs are written in Lisp +already; the few exceptions could have been written in Lisp but are +written in C for efficiency. Although only a programmer can write an +extension, anybody can use it afterward. + + +File: emacs, Node: Screen, Next: Characters, Prev: Concept Index, Up: Top + +The Organization of the Screen +****************************** + + Emacs divides the screen into several areas, each of which contains +its own sorts of information. The biggest area, of course, is the one +in which you usually see the text you are editing. + + When you are using Emacs, the screen is divided into a number of +"windows". Initially there is one text window occupying all but the +last line, plus the special "echo area" or "minibuffer window" in the +last line. The text window can be subdivided horizontally or +vertically into multiple text windows, each of which can be used for a +different file (*note Windows::.). The window that the cursor is in is +the "selected window", in which editing takes place. The other windows +are just for reference unless you select one of them. + + Each text window's last line is a "mode line" which describes what is +going on in that window. It is in inverse video if the terminal +supports that, and contains text that starts like `-----Emacs: +SOMETHING'. Its purpose is to indicate what buffer is being displayed +above it in the window; what major and minor modes are in use; and +whether the buffer's text has been changed. + +* Menu: + +* Point:: The place in the text where editing commands operate. +* Echo Area:: Short messages appear at the bottom of the screen. +* Mode Line:: Interpreting the mode line. + + +File: emacs, Node: Point, Next: Echo Area, Prev: Screen, Up: Screen + +Point +===== + + When Emacs is running, the terminal's cursor shows the location at +which editing commands will take effect. This location is called +"point". Other commands move point through the text, so that you can +edit at different places in it. + + While the cursor appears to point AT a character, point should be +thought of as BETWEEN two characters; it points BEFORE the character +that the cursor appears on top of. Sometimes people speak of "the +cursor" when they mean "point", or speak of commands that move point as +"cursor motion" commands. + + Terminals have only one cursor, and when output is in progress it +must appear where the typing is being done. This does not mean that +point is moving. It is only that Emacs has no way to show you the +location of point except when the terminal is idle. + + If you are editing several files in Emacs, each file has its own +point location. A file that is not being displayed remembers where +point is so that it can be seen when you look at that file again. + + When there are multiple text windows, each window has its own point +location. The cursor shows the location of point in the selected +window. This also is how you can tell which window is selected. If the +same buffer appears in more than one window, point can be moved in each +window independently. + + The term `point' comes from the character `.', which was the command +in TECO (the language in which the original Emacs was written) for +accessing the value now called `point'. + + +File: emacs, Node: Echo Area, Next: Mode Line, Prev: Point, Up: Screen + +The Echo Area +============= + + The line at the bottom of the screen (below the mode line) is the +"echo area". It is used to display small amounts of text for several +purposes. + + "Echoing" means printing out the characters that you type. Emacs +never echoes single-character commands, and multi-character commands are +echoed only if you pause while typing them. As soon as you pause for +more than a second in the middle of a command, all the characters of +the command so far are echoed. This is intended to "prompt" you for +the rest of the command. Once echoing has started, the rest of the +command is echoed immediately when you type it. This behavior is +designed to give confident users fast response, while giving hesitant +users maximum feedback. You can change this behavior by setting a +variable (*note Display Vars::.). + + If a command cannot be executed, it may print an "error message" in +the echo area. Error messages are accompanied by a beep or by flashing +the screen. Also, any input you have typed ahead is thrown away when +an error happens. + + Some commands print informative messages in the echo area. These +messages look much like error messages, but they are not announced with +a beep and do not throw away input. Sometimes the message tells you +what the command has done, when this is not obvious from looking at the +text being edited. Sometimes the sole purpose of a command is to print +a message giving you specific information. For example, the command +`C-x =' is used to print a message describing the character position of +point in the text and its current column in the window. Commands that +take a long time often display messages ending in `...' while they are +working, and add `done' at the end when they are finished. + + The echo area is also used to display the "minibuffer", a window that +is used for reading arguments to commands, such as the name of a file +to be edited. When the minibuffer is in use, the echo area begins with +a prompt string that usually ends with a colon; also, the cursor +appears in that line because it is the selected window. You can always +get out of the minibuffer by typing `C-g'. *Note Minibuffer::. + + +File: emacs, Node: Mode Line, Prev: Echo Area, Up: Screen + +The Mode Line +============= + + Each text window's last line is a "mode line" which describes what is +going on in that window. When there is only one text window, the mode +line appears right above the echo area. The mode line is in inverse +video if the terminal supports that, starts and ends with dashes, and +contains text like `Emacs: SOMETHING'. + + If a mode line has something else in place of `Emacs: SOMETHING', +then the window above it is in a special subsystem such as Dired. The +mode line then indicates the status of the subsystem. + + Normally, the mode line has the following appearance: + + --CH-Emacs: BUF (MAJOR MINOR)----POS------ + +This gives information about the buffer being displayed in the window: +the buffer's name, what major and minor modes are in use, whether the +buffer's text has been changed, and how far down the buffer you are +currently looking. + + CH contains two stars `**' if the text in the buffer has been edited +(the buffer is "modified"), or `--' if the buffer has not been edited. +Exception: for a read-only buffer, it is `%%'. + + BUF is the name of the window's chosen "buffer". The chosen buffer +in the selected window (the window that the cursor is in) is also +Emacs's selected buffer, the one that editing takes place in. When we +speak of what some command does to "the buffer", we are talking about +the currently selected buffer. *Note Buffers::. + + POS tells you whether there is additional text above the top of the +screen, or below the bottom. If your file is small and it is all on the +screen, POS is `All'. Otherwise, it is `Top' if you are looking at the +beginning of the file, `Bot' if you are looking at the end of the file, +or `NN%', where NN is the percentage of the file above the top of the +screen. + + MAJOR is the name of the "major mode" in effect in the buffer. At +any time, each buffer is in one and only one of the possible major +modes. The major modes available include Fundamental mode (the least +specialized), Text mode, Lisp mode, and C mode. *Note Major Modes::, +for details of how the modes differ and how to select one. + + MINOR is a list of some of the "minor modes" that are turned on at +the moment in the window's chosen buffer. `Fill' means that Auto Fill +mode is on. `Abbrev' means that Word Abbrev mode is on. `Ovwrt' means +that Overwrite mode is on. *Note Minor Modes::, for more information. +`Narrow' means that the buffer being displayed has editing restricted +to only a portion of its text. This is not really a minor mode, but is +like one. *Note Narrowing::. `Def' means that a keyboard macro is +being defined. *Note Keyboard Macros::. + + Some buffers display additional information after the minor modes. +For example, Rmail buffers display the current message number and the +total number of messages. Compilation buffers and Shell mode display +the status of the subprocess. + + In addition, if Emacs is currently inside a recursive editing level, +square brackets (`[...]') appear around the parentheses that surround +the modes. If Emacs is in one recursive editing level within another, +double square brackets appear, and so on. Since this information +pertains to Emacs in general and not to any one buffer, the square +brackets appear in every mode line on the screen or not in any of them. +*Note Recursive Edit::. + + Emacs can optionally display the time and system load in all mode +lines. To enable this feature, type `M-x display-time'. The +information added to the mode line usually appears after the file name, +before the mode names and their parentheses. It looks like this: + + HH:MMpm L.LL [D] + +(Some fields may be missing if your operating system cannot support +them.) HH and MM are the hour and minute, followed always by `am' or +`pm'. L.LL is the average number of running processes in the whole +system recently. D is an approximate index of the ratio of disk +activity to cpu activity for all users. + + The word `Mail' appears after the load level if there is mail for +you that you have not read yet. + + Customization note: the user variable `mode-line-inverse-video' +controls whether the mode line is displayed in inverse video (assuming +the terminal supports it); `nil' means no inverse video. The default +is `t'. + + +File: emacs, Node: Characters, Next: Keys, Prev: Screen, Up: Top + +The Emacs Character Set +======================= + + GNU Emacs uses the ASCII character set, which defines 128 different +character codes. Some of these codes are assigned graphic symbols such +as `a' and `='; the rest are control characters, such as `Control-a' +(also called `C-a' for short). `C-a' gets its name from the fact that +you type it by holding down the CTRL key and then pressing `a'. There +is no distinction between `C-a' and `C-A'; they are the same character. + + Some control characters have special names, and special keys you can +type them with: RET, TAB, LFD, DEL and ESC. The space character is +usually referred to below as SPC, even though strictly speaking it is a +graphic character whose graphic happens to be blank. + + Emacs extends the 7-bit ASCII code to an 8-bit code by adding an +extra bit to each character. This makes 256 possible command +characters. The additional bit is called Meta. Any ASCII character +can be made Meta; examples of Meta characters include `Meta-a' (`M-a', +for short), `M-A' (not the same character as `M-a', but those two +characters normally have the same meaning in Emacs), `M-RET', and +`M-C-a'. For traditional reasons, `M-C-a' is usually called `C-M-a'; +logically speaking, the order in which the modifier keys CTRL and META +are mentioned does not matter. + + Some terminals have a META key, and allow you to type Meta +characters by holding this key down. Thus, `Meta-a' is typed by +holding down META and pressing `a'. The META key works much like the +SHIFT key. Such a key is not always labeled META, however, as this +function is often a special option for a key with some other primary +purpose. + + If there is no META key, you can still type Meta characters using +two-character sequences starting with ESC. Thus, to enter `M-a', you +could type `ESC a'. To enter `C-M-a', you would type `ESC C-a'. ESC is +allowed on terminals with Meta keys, too, in case you have formed a +habit of using it. + + Emacs believes the terminal has a META key if the variable +`meta-flag' is non-`nil'. Normally this is set automatically according +to the termcap entry for your terminal type. However, sometimes the +termcap entry is wrong, and then it is useful to set this variable +yourself. *Note Variables::, for how to do this. + + Emacs buffers also use an 8-bit character set, because bytes have 8 +bits, but only the ASCII characters are considered meaningful. ASCII +graphic characters in Emacs buffers are displayed with their graphics. +LFD is the same as a newline character; it is displayed by starting a +new line. TAB is displayed by moving to the next tab stop column +(usually every 8 columns). Other control characters are displayed as a +caret (`^') followed by the non-control version of the character; thus, +`C-a' is displayed as `^A'. Non-ASCII characters 128 and up are +displayed with octal escape sequences; thus, character code 243 +(octal), also called `M-#' when used as an input character, is +displayed as `\243'. + + +File: emacs, Node: Keys, Next: Commands, Prev: Characters, Up: Top + +Keys +==== + + A "complete key"--where `key' is short for "key sequence"--is a +sequence of keystrokes that are understood by Emacs as a unit, as a +single command (possibly undefined). Most single characters constitute +complete keys in the standard Emacs command set; there are also some +multi-character keys. Examples of complete keys are `C-a', `X', RET, +`C-x C-f' and `C-x 4 C-f'. + + A "prefix key" is a sequence of keystrokes that are the beginning of +a complete key, but not a whole one. Prefix keys and complete keys are +collectively called "keys". + + A prefix key is the beginning of a series of longer sequences that +are valid keys; adding any single character to the end of the prefix +gives a valid key, which could be defined as an Emacs command, or could +be a prefix itself. For example, `C-x' is standardly defined as a +prefix, so `C-x' and the next input character combine to make a +two-character key. There are 256 different two-character keys starting +with `C-x', one for each possible second character. Many of these +two-character keys starting with `C-x' are standardly defined as Emacs +commands. Notable examples include `C-x C-f' and `C-x s' (*note +Files::.). + + Adding one character to a prefix key does not have to form a complete +key. It could make another, longer prefix. For example, `C-x 4' is +itself a prefix that leads to 256 different three-character keys, +including `C-x 4 f', `C-x 4 b' and so on. It would be possible to +define one of those three-character sequences as a prefix, creating a +series of four-character keys, but we did not define any of them this +way. + + By contrast, the two-character sequence `C-f C-k' is not a key, +because the `C-f' is a complete key in itself. It's impossible to give +`C-f C-k' an independent meaning as a command as long as `C-f' retains +its meaning. `C-f C-k' is two commands. + + All told, the prefix keys in Emacs are `C-c', `C-x', `C-h', `C-x 4', +and ESC. But this is not built in; it is just a matter of Emacs's +standard key bindings. In customizing Emacs, you could make new prefix +keys, or eliminate these. *Note Key Bindings::. + + Whether a sequence is a key can be changed by customization. For +example, if you redefine `C-f' as a prefix, `C-f C-k' automatically +becomes a key (complete, unless you define it too as a prefix). +Conversely, if you remove the prefix definition of `C-x 4', then `C-x 4 +f' (or `C-x 4 ANYTHING') is no longer a key. + +
\ No newline at end of file |