diff options
Diffstat (limited to 'info/emacs-2')
-rw-r--r-- | info/emacs-2 | 1133 |
1 files changed, 1133 insertions, 0 deletions
diff --git a/info/emacs-2 b/info/emacs-2 new file mode 100644 index 00000000000..f8a7470f13d --- /dev/null +++ b/info/emacs-2 @@ -0,0 +1,1133 @@ +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: Commands, Next: Entering Emacs, Prev: Keys, Up: Top + +Keys and Commands +================= + + This manual is full of passages that tell you what particular keys +do. But Emacs does not assign meanings to keys directly. Instead, Emacs +assigns meanings to "functions", and then gives keys their meanings by +"binding" them to functions. + + A function is a Lisp object that can be executed as a program. +Usually it is a Lisp symbol which has been given a function definition; +every symbol has a name, usually made of a few English words separated +by dashes, such as `next-line' or `forward-word'. It also has a +"definition" which is a Lisp program; this is what makes the function +do what it does. Only some functions can be the bindings of keys; +these are functions whose definitions use `interactive' to specify how +to call them interactively. Such functions are called "commands", and +their names are "command names". *Note Defining Commands: +(elisp)Defining Commands, for more information. + + The bindings between keys and functions are recorded in various +tables called "keymaps". *Note Keymaps::. + + When we say that "`C-n' moves down vertically one line" we are +glossing over a distinction that is irrelevant in ordinary use but is +vital in understanding how to customize Emacs. It is the function +`next-line' that is programmed to move down vertically. `C-n' has this +effect because it is bound to that function. If you rebind `C-n' to +the function `forward-word' then `C-n' will move forward by words +instead. Rebinding keys is a common method of customization. + + In the rest of this manual, we usually ignore this subtlety to keep +things simple. To give the customizer the information he needs, we +state the name of the command which really does the work in parentheses +after mentioning the key that runs it. For example, we will say that +"The command `C-n' (`next-line') moves point vertically down," meaning +that `next-line' is a command that moves vertically down and `C-n' is a +key that is standardly bound to it. + + While we are on the subject of information for customization only, +it's a good time to tell you about "variables". Often the description +of a command will say, "To change this, set the variable `mumble-foo'." +A variable is a name used to remember a value. Most of the variables +documented in this manual exist just to facilitate customization: some +command or other part of Emacs examines the variable and behaves +differently accordingly. Until you are interested in customizing, you +can ignore the information about variables. When you are ready to be +interested, read the basic information on variables, and then the +information on individual variables will make sense. *Note Variables::. + + +File: emacs, Node: Entering Emacs, Next: Exiting, Prev: Commands, Up: Top + +Entering and Exiting Emacs +************************** + + The usual way to invoke Emacs is just to type `emacs RET' at the +shell. Emacs clears the screen and then displays an initial advisor +message and copyright notice. You can begin typing Emacs commands +immediately afterward. + + Some operating systems insist on discarding all type-ahead when Emacs +starts up; they give Emacs no way to prevent this. Therefore, it is +wise to wait until Emacs clears the screen before typing your first +editing command. + + Before Emacs reads the first command, you have not had a chance to +give a command to specify a file to edit. But Emacs must always have a +current buffer for editing. In an attempt to do something useful, +Emacs presents a buffer named `*scratch*' which is in Lisp Interaction +mode; you can use it to type Lisp expressions and evaluate them, or you +can ignore that capability and simply doodle. (You can specify a +different major mode for this buffer by setting the variable +`initial-major-mode' in your init file. *Note Init File::.) + + It is also possible to specify files to be visited, Lisp files to be +loaded, and functions to be called, by giving Emacs arguments in the +shell command line. *Note Command Switches::. + + +File: emacs, Node: Exiting, Next: Command Switches, Prev: Entering Emacs, Up: Top + +Exiting Emacs +============= + + There are two commands for exiting Emacs because there are two kinds +of exiting: "suspending" Emacs and "killing" Emacs. "Suspending" means +stopping Emacs temporarily and returning control to its superior +(usually the shell), allowing you to resume editing later in the same +Emacs job, with the same files, same kill ring, same undo history, and +so on. This is the usual way to exit. "Killing" Emacs means +destroying the Emacs job. You can run Emacs again later, but you will +get a fresh Emacs; there is no way to resume the same editing session +after it has been killed. + +`C-z' + Suspend Emacs (`suspend-emacs'). + +`C-x C-c' + Kill Emacs (`save-buffers-kill-emacs'). + + To suspend Emacs, type `C-z' (`suspend-emacs'). This takes you back +to the shell from which you invoked Emacs. You can resume Emacs with +the command `%emacs' if you are using the C shell or the Bourne-Again +shell. + + On systems that do not permit programs to be suspended, `C-z' runs an +inferior shell that communicates directly with the terminal, and Emacs +waits until you exit the subshell. The only way on these systems to get +back to the shell from which Emacs was run (to log out, for example) is +to kill Emacs. `C-d' or `exit' are typical commands to exit a subshell. + + To kill Emacs, type `C-x C-c' (`save-buffers-kill-emacs'). A +two-character key is used for this to make it harder to type. Unless a +numeric argument is used, this command first offers to save any modified +buffers. If you do not save them all, it asks for reconfirmation with +`yes' before killing Emacs, since any changes not saved before that +will be lost forever. Also, if any subprocesses are still running, +`C-x C-c' asks for confirmation about them, since killing Emacs will +kill the subprocesses immediately. + + In most programs running on Unix, certain characters may instantly +suspend or kill the program. (In Berkeley Unix these characters are +normally `C-z' and `C-c'.) This Unix feature is turned off while you +are in Emacs. The meanings of `C-z' and `C-x C-c' as keys in Emacs +were inspired by the standard Berkeley Unix meanings of `C-z' and +`C-c', but that is their only relationship with Unix. You could +customize these keys to do anything (*note Keymaps::.). + + +File: emacs, Node: Command Switches, Next: Basic, Prev: Exiting, Up: Top + +Command Line Switches and Arguments +=================================== + + GNU Emacs supports command line arguments to request various actions +when invoking Emacs. These are for compatibility with other editors and +for sophisticated activities. They are not needed for ordinary editing +with Emacs, so new users can skip this section. + + You may be used to using command line arguments with other editors +to specify which file to edit. That's because many other editors are +designed to be started afresh each time you want to edit. You edit one +file and then exit the editor. The next time you want to edit either +another file or the same one, you must run the editor again. With these +editors, it makes sense to use a command line argument to say which +file to edit. + + The recommended way to use GNU Emacs is to start it only once, just +after you log in, and do all your editing in the same Emacs process. +Each time you want to edit a different file, you visit it with the +existing Emacs, which eventually comes to have many files in it ready +for editing. Usually you do not kill the Emacs until you are about to +log out. + + In the usual style of Emacs use, files are nearly always read by +typing commands to an editor that is already running. So command line +arguments for specifying a file when the editor is started are seldom +used. + + Emacs accepts command-line arguments that specify files to visit, +functions to call, and other activities and operating modes. + + The command arguments are processed in the order they appear in the +command argument list; however, certain arguments (the ones in the +second table) must be at the front of the list if they are used. + + Here are the arguments allowed: + +`FILE' + Visit FILE using `find-file'. *Note Visiting::. + +`+LINENUM FILE' + Visit FILE using `find-file', then go to line number LINENUM in it. + +`-l FILE' +`-load FILE' + Load a file FILE of Lisp code with the function `load'. *Note Lisp + Libraries::. + +`-f FUNCTION' +`-funcall FUNCTION' + Call Lisp function FUNCTION with no arguments. + +`-i FILE' +`-insert FILE' + Insert the contents of FILE into the current buffer. This is like + what `M-x insert-buffer' does; see *Note Misc File Ops::. + +`-kill' + Exit from Emacs without asking for confirmation. + + The following switches are recognized only at the beginning of the +command line. If more than one of them appears, they must appear in the +order that they appear in this table. + +`-t DEVICE' + Use DEVICE as the device for terminal input and output. + +`-d DISPLAY' + When running with the X window system, use the display named + DISPLAY to make Emacs's X window. + +`-nw' + Don't use a window system; display text only, using an ordinary + terminal device. Thus, if you run an X-capable Emacs in an Xterm + with `emacs -nw', it displays in the Xterm's own window instead of + making its own. + +`-batch' + Run Emacs in "batch mode", which means that the text being edited + is not displayed and the standard Unix interrupt characters such + as `C-z' and `C-c' continue to have their normal effect. Emacs in + batch mode outputs to `stdout' only what would normally be printed + in the echo area under program control. + + Batch mode is used for running programs written in Emacs Lisp from + shell scripts, makefiles, and so on. Normally the `-l' switch or + `-f' switch will be used as well, to invoke a Lisp program to do + the batch processing. + + `-batch' implies `-q' (do not load an init file). It also causes + Emacs to exit after all command switches have been processed. In + addition, auto-saving is not done except in buffers for which it + has been explicitly requested. + +`-q' +`-no-init-file' + Do not load your Emacs init file `~/.emacs'. + +`-u USER' +`-user USER' + Load USER's Emacs init file `~USER/.emacs' instead of your own. + + With X Windows, you can use these additional options to specify how +to display the window. Each option has a corresponding resource name +(used with `emacs' unless you specify another name with `-rn NAME'), +listed with the option, which lets you specify the same parameter using +the usual X Windows defaulting mechanism. The corresponding generic +resource name (used with `Emacs') is usually made by capitalizing the +first letter of the individual resource name, but in some cases it is a +completely different string (which is listed below). + +`-rn NAME' + Use NAME instead of `emacs' when looking for X resources. + +`-font FONTNAME' +`-fn FONTNAME' + Use font FONTNAME. + (Resource `font'.) + +`-wn NAME' + Name the window NAME. + (Resource `title'.) + +`-i' + Use a bitmap icon (showing the kitchen sink) rather than a textual + icon. + (Resource `bitmapIcon'.) + +`-in NAME' + Name the icon NAME. (Resource `iconName'; `Title'). + +`-geometry COORDS' +`-w COORDS' + Specify the shape and optionally the position of the Emacs window + in the usual X way. + (Resource `geometry'.) + +`-b WIDTH' + Specify that the window border is WIDTH pixels thick. + (Resource `borderWidth'.) + +`-ib WIDTH' + Leave WIDTH blank pixels between the border and the window + contents. + (Resource `internalBorder'; `BorderWidth'.) + +`-r' + Use reverse video. + (Resource `reverseVideo'.) + +`-fg COLOR' + Use color COLOR for text in the window. + (Resource `foreground'.) + +`-bg COLOR' + Use the color COLOR for the background of the window. + (Resource `background'.) + +`-bd COLOR' + Use color COLOR for the window border. + (Resource `borderColor'.) + +`-cr COLOR' + Specify the color, COLOR, to use for the cursor. + (Resource `cursorColor'; `Foreground'.) + +`-ms COLOR' + Use color COLOR for the mouse cursor. + (Resource `pointerColor'; `Foreground'.) + + The init file can get access to the command line argument values as +the elements of a list in the variable `command-line-args'. (The +arguments in the second table above will already have been processed and +will not be in the list.) The init file can override the normal +processing of the other arguments by setting this variable. + + One way to use command arguments is to visit many files +automatically: + + emacs *.c + +passes each `.c' file as a separate argument to Emacs, so that Emacs +visits each file (*note Visiting::.). + + Here is an advanced example that assumes you have a Lisp program +file called `hack-c-program.el' which, when loaded, performs some +useful operation on current buffer, expected to be a C program. + + emacs -batch foo.c -l hack-c-program -f save-buffer -kill > log + +This says to visit `foo.c', load `hack-c-program.el' (which makes +changes in the visited file), save `foo.c' (note that `save-buffer' is +the function that `C-x C-s' is bound to), and then exit to the shell +that this command was done with. `-batch' guarantees there will be no +problem redirecting output to `log', because Emacs will not assume that +it has a display terminal to work with. + + +File: emacs, Node: Basic, Next: Undo, Prev: Command Switches, Up: Top + +Basic Editing Commands +********************** + + We now give the basics of how to enter text, make corrections, and +save the text in a file. If this material is new to you, you might +learn it more easily by running the Emacs learn-by-doing tutorial. To +do this, type `Control-h t' (`help-with-tutorial'). + +Inserting Text +============== + + To insert printing characters into the text you are editing, just +type them. This inserts the character into the buffer at the cursor +(that is, at "point"; *note Point::.). The cursor moves forward. Any +characters after the cursor move forward too. If the text in the +buffer is `FOOBAR', with the cursor before the `B', then if you type +`XX', you get `FOOXXBAR', with the cursor still before the `B'. + + To "delete" text you have just inserted, use DEL. DEL deletes the +character BEFORE the cursor (not the one that the cursor is on top of +or under; that is the character AFTER the cursor). The cursor and all +characters after it move backwards. Therefore, if you type a printing +character and then type DEL, they cancel out. + + To end a line and start typing a new one, type RET. This inserts a +newline character in the buffer. If point is in the middle of a line, +RET splits the line. Typing DEL when the cursor is at the beginning of +a line rubs out the newline before the line, thus joining the line with +the preceding line. + + Emacs will split lines automatically when they become too long, if +you turn on a special mode called "Auto Fill" mode. *Note Filling::, +for how to use Auto Fill mode. + + Customization information: DEL in most modes runs the command named +`delete-backward-char'; RET runs the command `newline', and +self-inserting printing characters run the command `self-insert', which +inserts whatever character was typed to invoke it. Some major modes +rebind DEL to other commands. + + Direct insertion works for printing characters and SPC, but other +characters act as editing commands and do not insert themselves. If you +need to insert a control character or a character whose code is above +200 octal, you must "quote" it by typing the character `control-q' +(`quoted-insert') first. There are two ways to use `C-q': + + * `Control-q' followed by any non-graphic character (even `C-g') + inserts that character. + + * `Control-q' followed by three octal digits inserts the character + with the specified character code. + +A numeric argument to `C-q' specifies how many copies of the quoted +character should be inserted (*note Arguments::.). + + If you prefer to have text characters replace (overwrite) existing +text rather than shove it to the right, you can enable Overwrite mode, +a minor mode. *Note Minor Modes::. + +Changing the Location of Point +============================== + + To do more than insert characters, you have to know how to move +point (*note Point::.). Here are a few of the commands for doing that. + +`C-a' + Move to the beginning of the line (`beginning-of-line'). + +`C-e' + Move to the end of the line (`end-of-line'). + +`C-f' + Move forward one character (`forward-char'). + +`C-b' + Move backward one character (`backward-char'). + +`M-f' + Move forward one word (`forward-word'). + +`M-b' + Move backward one word (`backward-word'). + +`C-n' + Move down one line, vertically (`next-line'). This command + attempts to keep the horizontal position unchanged, so if you + start in the middle of one line, you end in the middle of the + next. When on the last line of text, `C-n' creates a new line and + moves onto it. + +`C-p' + Move up one line, vertically (`previous-line'). + +`C-l' + Clear the screen and reprint everything (`recenter'). Text moves + on the screen to bring point to the center of the window. + +`M-r' + Move point to left margin on the line halfway down the screen or + window (`move-to-window-line'). Text does not move on the screen. + A numeric argument says how many screen lines down from the top + of the window (zero for the top). A negative argument counts from + the bottom (-1 for the bottom). + +`C-t' + Transpose two characters, the ones before and after the cursor + (`transpose-chars'). + +`M-<' + Move to the top of the buffer (`beginning-of-buffer'). With + numeric argument N, move to N/10 of the way from the top. *Note + Arguments::, for more information on numeric arguments. + +`M->' + Move to the end of the buffer (`end-of-buffer'). + +`M-x goto-char' + Read a number N and move cursor to character number N. Position 1 + is the beginning of the buffer. + +`M-x goto-line' + Read a number N and move cursor to line number N. Line 1 is the + beginning of the buffer. + +`C-x C-n' + Use the current column of point as the "semipermanent goal column" + for `C-n' and `C-p' (`set-goal-column'). Henceforth, those + commands always move to this column in each line moved into, or as + close as possible given the contents of the line. This goal + column remains in effect until canceled. + +`C-u C-x C-n' + Cancel the goal column. Henceforth, `C-n' and `C-p' once again + try to avoid changing the horizontal position, as usual. + + If you set the variable `track-eol' to a non-`nil' value, then `C-n' +and `C-p' when at the end of the starting line move to the end of the +line. Normally, `track-eol' is `nil'. + +Erasing Text +============ + +`DEL' + Delete the character before the cursor (`delete-backward-char'). + +`C-d' + Delete the character after the cursor (`delete-char'). + +`C-k' + Kill to the end of the line (`kill-line'). + +`M-d' + Kill forward to the end of the next word (`kill-word'). + +`M-DEL' + Kill back to the beginning of the previous word + (`backward-kill-word'). + + You already know about the DEL key which deletes the character +before the cursor. Another key, `Control-d', deletes the character +after the cursor, causing the rest of the text on the line to shift +left. If `Control-d' is typed at the end of a line, that line and the +next line are joined together. + + To erase a larger amount of text, use the `Control-k' key, which +kills a line at a time. If `C-k' is done at the beginning or middle of +a line, it kills all the text up to the end of the line. If `C-k' is +done at the end of a line, it joins that line and the next line. + + *Note Killing::, for more flexible ways of killing text. + +Files +===== + + The commands above are sufficient for creating and altering text in +an Emacs buffer; the more advanced Emacs commands just make things +easier. But to keep any text permanently you must put it in a "file". +Files are named units of text which are stored by the operating system +for you to retrieve later by name. To look at or use the contents of a +file in any way, including editing the file with Emacs, you must +specify the file name. + + Consider a file named `/usr/rms/foo.c'. In Emacs, to begin editing +this file, type + + C-x C-f /usr/rms/foo.c RET + +Here the file name is given as an "argument" to the command `C-x C-f' +(`find-file'). That command uses the "minibuffer" to read the +argument, and you type RET to terminate the argument (*note +Minibuffer::.). + + Emacs obeys the command by "visiting" the file: creating a buffer, +copying the contents of the file into the buffer, and then displaying +the buffer for you to edit. You can make changes in it, and then "save" +the file by typing `C-x C-s' (`save-buffer'). This makes the changes +permanent by copying the altered contents of the buffer back into the +file `/usr/rms/foo.c'. Until then, the changes are only inside your +Emacs, and the file `foo.c' is not changed. + + To create a file, just visit the file with `C-x C-f' as if it already +existed. Emacs will make an empty buffer in which you can insert the +text you want to put in the file. When you save your text with `C-x +C-s', the file will be created. + + Of course, there is a lot more to learn about using files. *Note +Files::. + +Help +==== + + If you forget what a key does, you can find out with the Help +character, which is `C-h'. Type `C-h k' followed by the key you want +to know about; for example, `C-h k C-n' tells you all about what `C-n' +does. `C-h' is a prefix key; `C-h k' is just one of its subcommands +(the command `describe-key'). The other subcommands of `C-h' provide +different kinds of help. Type `C-h' three times to get a description +of all the help facilities. *Note Help::. + +* Menu: + +* 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. + + +File: emacs, Node: Blank Lines, Next: Continuation Lines, Prev: Basic, Up: Basic + +Blank Lines +=========== + + Here are special commands and techniques for putting in and taking +out blank lines. + +`C-o' + Insert one or more blank lines after the cursor (`open-line'). + +`C-x C-o' + Delete all but one of many consecutive blank lines + (`delete-blank-lines'). + + When you want to insert a new line of text before an existing line, +you can do it by typing the new line of text, followed by RET. However, +it may be easier to see what you are doing if you first make a blank +line and then insert the desired text into it. This is easy to do +using the key `C-o' (`open-line'), which inserts a newline after point +but leaves point in front of the newline. After `C-o', type the text +for the new line. `C-o F O O' has the same effect as `F O O RET', +except for the final location of point. + + You can make several blank lines by typing `C-o' several times, or by +giving it an argument to tell it how many blank lines to make. *Note +Arguments::, for how. + + If you have many blank lines in a row and want to get rid of them, +use `C-x C-o' (`delete-blank-lines'). When point is on a blank line +which is adjacent to at least one other blank line, `C-x C-o' deletes +all but one of the consecutive blank lines, leaving exactly one. With +point on a blank line with no other blank line adjacent to it, the sole +blank line is deleted, leaving none. When point is on a nonblank line, +`C-x C-o' deletes any blank lines following that nonblank line. + + +File: emacs, Node: Continuation Lines, Next: Position Info, Prev: Blank Lines, Up: Basic + +Continuation Lines +================== + + If you add too many characters to one line, without breaking it with +a RET, the line will grow to occupy two (or more) lines on the screen, +with a `\' at the extreme right margin of all but the last of them. The +`\' says that the following screen line is not really a distinct line +in the text, but just the "continuation" of a line too long to fit the +screen. Sometimes it is nice to have Emacs insert newlines +automatically when a line gets too long; for this, use Auto Fill mode +(*note Filling::.). + + Instead of continuation, long lines can be displayed by "truncation". +This means that all the characters that do not fit in the width of the +screen or window do not appear at all. They remain in the buffer, +temporarily invisible. `$' is used in the last column instead of `\' +to inform you that truncation is in effect. + + Continuation can be turned off for a particular buffer by setting the +variable `truncate-lines' to non-`nil' in that buffer. Truncation +instead of continuation also happens whenever horizontal scrolling is +in use, and optionally whenever side-by-side windows are in use (*note +Windows::.). Altering the value of `truncate-lines' makes it local to +the current buffer; until that time, the default value is in effect. +The default is initially `nil'. *Note Locals::. + + +File: emacs, Node: Position Info, Next: Arguments, Prev: Continuation Lines, Up: Basic + +Cursor Position Information +=========================== + + If you are accustomed to other display editors, you may be surprised +that Emacs does not always display the page number or line number of +point in the mode line. This is because the text is stored in a way +that makes it difficult to compute this information. Displaying them +all the time would be intolerably slow. They are not needed very often +in Emacs anyway, but there are commands to compute them and print them. + +`M-x what-page' + Print page number of point, and line number within page. + +`M-x what-line' + Print line number of point in the buffer. + +`M-=' + Print number of lines in the current region (`count-lines-region'). + +`C-x =' + Print character code of character after point, character position + of point, and column of point (`what-cursor-position'). + + There are two commands for printing line numbers. `M-x what-line' +counts lines from the beginning of the file and prints the line number +point is on. The first line of the file is line number 1. These +numbers can be used as arguments to `M-x goto-line'. By contrast, `M-x +what-page' counts pages from the beginning of the file, and counts lines +within the page, printing both of them. *Note Pages::. + + While on this subject, we might as well mention `M-=' +(`count-lines-region'), which prints the number of lines in the region +(*note Mark::.). *Note Pages::, for the command `C-x l' which counts +the lines in the current page. + + The command `C-x =' (`what-cursor-position') can be used to find out +the column that the cursor is in, and other miscellaneous information +about point. It prints a line in the echo area that looks like this: + + Char: x (0170) point=65986 of 563027(12%) x=44 + +(In fact, this is the output produced when point is before the `x=44' +in the example.) + + The two values after `Char:' describe the character following point, +first by showing it and second by giving its octal character code. + + `point=' is followed by the position of point expressed as a +character count. The front of the buffer counts as position 1, one +character later as 2, and so on. The next, larger number is the total +number of characters in the buffer. Afterward in parentheses comes the +position expressed as a percentage of the total size. + + `x=' is followed by the horizontal position of point, in columns +from the left edge of the window. + + If the buffer has been narrowed, making some of the text at the +beginning and the end temporarily invisible, `C-x =' prints additional +text describing the current visible range. For example, it might say + + Char: x (0170) point=65986 of 563025(12%) <65102 - 68533> x=44 + +where the two extra numbers give the smallest and largest character +position that point is allowed to assume. The characters between those +two positions are the visible ones. *Note Narrowing::. + + If point is at the end of the buffer (or the end of the visible +part), `C-x =' omits any description of the character after point. The +output looks like + + point=563026 of 563025(100%) x=0 + + +File: emacs, Node: Arguments, Prev: Position Info, Up: Basic + +Numeric Arguments +================= + + Any Emacs command can be given a "numeric argument". Some commands +interpret the argument as a repetition count. For example, giving an +argument of ten to the key `C-f' (the command `forward-char', move +forward one character) moves forward ten characters. With these +commands, no argument is equivalent to an argument of one. Negative +arguments are allowed. Often they tell a command to move or act +backwards. + + If your terminal keyboard has a META key, the easiest way to specify +a numeric argument is to type digits and/or a minus sign while holding +down the META key. For example, + M-5 C-n + +would move down five lines. The characters `Meta-1', `Meta-2', and so +on, as well as `Meta--', do this because they are keys bound to +commands (`digit-argument' and `negative-argument') that are defined to +contribute to an argument for the next command. + + Another way of specifying an argument is to use the `C-u' +(`universal-argument') command followed by the digits of the argument. +With `C-u', you can type the argument digits without holding down shift +keys. To type a negative argument, start with a minus sign. Just a +minus sign normally means -1. `C-u' works on all terminals. + + `C-u' followed by a character which is neither a digit nor a minus +sign has the special meaning of "multiply by four". It multiplies the +argument for the next command by four. `C-u' twice multiplies it by +sixteen. Thus, `C-u C-u C-f' moves forward sixteen characters. This +is a good way to move forward "fast", since it moves about 1/5 of a line +in the usual size screen. Other useful combinations are `C-u C-n', +`C-u C-u C-n' (move down a good fraction of a screen), `C-u C-u C-o' +(make "a lot" of blank lines), and `C-u C-k' (kill four lines). + + Some commands care only about whether there is an argument, and not +about its value. For example, the command `M-q' (`fill-paragraph') with +no argument fills text; with an argument, it justifies the text as well. +(*Note Filling::, for more information on `M-q'.) Just `C-u' is a +handy way of providing an argument for such commands. + + Some commands use the value of the argument as a repeat count, but do +something peculiar when there is no argument. For example, the command +`C-k' (`kill-line') with argument N kills N lines, including their +terminating newlines. But `C-k' with no argument is special: it kills +the text up to the next newline, or, if point is right at the end of +the line, it kills the newline itself. Thus, two `C-k' commands with +no arguments can kill a nonblank line, just like `C-k' with an argument +of one. (*Note Killing::, for more information on `C-k'.) + + A few commands treat a plain `C-u' differently from an ordinary +argument. A few others may treat an argument of just a minus sign +differently from an argument of -1. These unusual cases will be +described when they come up; they are always for reasons of convenience +of use of the individual command. + + To insert multiple copies of a digit, you can type `C-u COUNT C-u +DIGIT'. The second `C-u' ends the numeric argument, so that the +following character always acts a key sequence to be executed. + + +File: emacs, Node: Undo, Next: Minibuffer, Prev: Basic, Up: Top + +Undoing Changes +*************** + + Emacs allows all changes made in the text of a buffer to be undone, +up to a certain amount of change (8000 characters). Each buffer records +changes individually, and the undo command always applies to the +current buffer. Usually each editing command makes a separate entry in +the undo records, but some commands such as `query-replace' make many +entries, and very simple commands such as self-inserting characters are +often grouped to make undoing less tedious. + +`C-x u' + Undo one batch of changes (usually, one command worth) (`undo'). + +`C-_' + The same. + + The command `C-x u' or `C-_' is how you undo. The first time you +give this command, it undoes the last change. Point moves to the text +affected by the undo, so you can see what was undone. + + Consecutive repetitions of the `C-_' or `C-x u' commands undo earlier +and earlier changes, back to the limit of what has been recorded. If +all recorded changes have already been undone, the undo command prints +an error message and does nothing. + + Any command other than an undo command breaks the sequence of undo +commands. Starting at this moment, the previous undo commands are +considered ordinary changes that can themselves be undone. Thus, to +redo changes you have undone, type `C-f' or any other command that will +have no important effect, and then give more undo commands. + + If you notice that a buffer has been modified accidentally, the +easiest way to recover is to type `C-_' repeatedly until the stars +disappear from the front of the mode line. At this time, all the +modifications you made have been cancelled. If you do not remember +whether you changed the buffer deliberately, type `C-_' once, and when +you see the last change you made undone, you will remember why you made +it. If it was an accident, leave it undone. If it was deliberate, +redo the change as described in the preceding paragraph. + + Whenever an undo command makes the stars disappear from the mode +line, it means that the buffer contents are the same as they were when +the file was last read in or saved. + + Not all buffers record undo information. Buffers whose names start +with spaces don't; these buffers are used internally by Emacs and its +extensions to hold text that users don't normally look at or edit. +Also, minibuffers, help buffers and documentation buffers don't record +undo information. Use the command `buffer-enable-undo' to enable +recording undo information in the current buffer. + + As editing continues, undo lists get longer and longer. To prevent +them from using up all available memory space, garbage collection trims +back their sizes to thresholds you can set. (For this purpose, the +"size" of an undo list measures the cons cells that make up the list, +plus the strings of deleted text.) + + Two variables control the range of acceptable sizes: `undo-limit' +and `undo-strong-limit'. Normally, the most recent changes are kept +until their size exceeds `undo-limit'; all older changes are discarded. + But if a change pushes the size above `undo-strong-limit', it is +discarded as well as all older changes. One exception: the most recent +set of changes is sacred; garbage collection never discards that. (In +Emacs versions 18.57 and 18.58, these variables are called +`undo-threshold' and `undo-high-threshold'.) + + The reason the `undo' command has two keys, `C-x u' and `C-_', set +up to run it is that it is worthy of a single-character key, but the +way to type `C-_' on some keyboards is not obvious. `C-x u' is an +alternative you can type in the same fashion on any terminal. + + +File: emacs, Node: Minibuffer, Next: M-x, Prev: Undo, Up: Top + +The Minibuffer +************** + + The "minibuffer" is the facility used by Emacs commands to read +arguments more complicated than a single number. Minibuffer arguments +can be file names, buffer names, Lisp function names, Emacs command +names, Lisp expressions, and many other things, depending on the +command reading the argument. The usual Emacs editing commands can be +used in the minibuffer to edit the argument. + + When the minibuffer is in use, it appears in the echo area, and the +terminal's cursor moves there. The beginning of the minibuffer line +displays a "prompt" which says what kind of input you should supply and +how it will be used. Often this prompt is derived from the name of the +command that the argument is for. The prompt normally ends with a +colon. + + Sometimes a "default argument" appears in parentheses after the +colon; it too is part of the prompt. The default will be used as the +argument value if you enter an empty argument (e.g., just type RET). +For example, commands that read buffer names always show a default, +which is the name of the buffer that will be used if you type just RET. + + The simplest way to give a minibuffer argument is to type the text +you want, terminated by RET which exits the minibuffer. You can get out +of the minibuffer, canceling the command that it was for, by typing +`C-g'. + + Since the minibuffer uses the screen space of the echo area, it can +conflict with other ways Emacs customarily uses the echo area. Here is +how Emacs handles such conflicts: + + * If a command gets an error while you are in the minibuffer, this + does not cancel the minibuffer. However, the echo area is needed + for the error message and therefore the minibuffer itself is + hidden for a while. It comes back after a few seconds, or as soon + as you type anything. + + * If in the minibuffer you use a command whose purpose is to print a + message in the echo area, such as `C-x =', the message is printed + normally, and the minibuffer is hidden for a while. It comes back + after a few seconds, or as soon as you type anything. + + * Echoing of keystrokes does not take place while the minibuffer is + in use. + +* Menu: + +* File: Minibuffer File. Entering file names with the minibuffer. +* Edit: Minibuffer Edit. How to edit in the minibuffer. +* Completion:: An abbreviation facility for minibuffer input. +* Repetition:: Re-executing commands that used the minibuffer. + + +File: emacs, Node: Minibuffer File, Next: Minibuffer Edit, Prev: Minibuffer, Up: Minibuffer + +Minibuffers for File Names +========================== + + Sometimes the minibuffer starts out with text in it. For example, +when you are supposed to give a file name, the minibuffer starts out +containing the "default directory", which ends with a slash. This is +to inform you which directory the file will be found in if you do not +specify a directory. For example, the minibuffer might start out with + + Find File: /u2/emacs/src/ + +where `Find File: ' is the prompt. Typing `buffer.c' specifies the +file `/u2/emacs/src/buffer.c'. To find files in nearby directories, +use `..'; thus, if you type `../lisp/simple.el', the file that you +visit will be the one named `/u2/emacs/lisp/simple.el'. Alternatively, +you can kill with `M-DEL' the directory names you don't want (*note +Words::.). + + You can also type an absolute file name, one starting with a slash +or a tilde, ignoring the default directory. For example, to find the +file `/etc/termcap', just type the name, giving + + Find File: /u2/emacs/src//etc/termcap + +Two slashes in a row are not normally meaningful in Unix file names, but +they are allowed in GNU Emacs. They mean, "ignore everything before the +second slash in the pair." Thus, `/u2/emacs/src/' is ignored, and you +get the file `/etc/termcap'. + + If you set `insert-default-directory' to `nil', the default directory +is not inserted in the minibuffer. This way, the minibuffer starts out +empty. But the name you type, if relative, is still interpreted with +respect to the same default directory. + + +File: emacs, Node: Minibuffer Edit, Next: Completion, Prev: Minibuffer File, Up: Minibuffer + +Editing in the Minibuffer +========================= + + The minibuffer is an Emacs buffer (albeit a peculiar one), and the +usual Emacs commands are available for editing the text of an argument +you are entering. + + Since RET in the minibuffer is defined to exit the minibuffer, +inserting a newline into the minibuffer must be done with `C-o' or with +`C-q LFD'. (Recall that a newline is really the LFD character.) + + The minibuffer has its own window which always has space on the +screen but acts as if it were not there when the minibuffer is not in +use. When the minibuffer is in use, its window is just like the +others; you can switch to another window with `C-x o', edit text in +other windows and perhaps even visit more files, before returning to +the minibuffer to submit the argument. You can kill text in another +window, return to the minibuffer window, and then yank the text to use +it in the argument. *Note Windows::. + + There are some restrictions on the use of the minibuffer window, +however. You cannot switch buffers in it--the minibuffer and its window +are permanently attached. Also, you cannot split or kill the minibuffer +window. But you can make it taller in the normal fashion with `C-x ^' +(*note Change Window::.). + + If while in the minibuffer you issue a command that displays help +text of any sort in another window, then that window is identified as +the one to scroll if you type `C-M-v' while in the minibuffer. This +lasts until you exit the minibuffer. This feature comes into play if a +completing minibuffer gives you a list of possible completions. + + Recursive use of the minibuffer is supported by Emacs. However, it +is easy to do this by accident (because of autorepeating keyboards, for +example) and get confused. Therefore, most Emacs commands that use the +minibuffer refuse to operate if the minibuffer window is selected. If +the minibuffer is active but you have switched to a different window, +recursive use of the minibuffer is allowed--if you know enough to try +to do this, you probably will not get confused. + + If you set the variable `enable-recursive-minibuffers' to be +non-`nil', recursive use of the minibuffer is always allowed. + + +File: emacs, Node: Completion, Next: Repetition, Prev: Minibuffer Edit, Up: Minibuffer + +Completion +========== + + When appropriate, the minibuffer provides a "completion" facility. +This means that you type enough of the argument to determine the rest, +based on Emacs's knowledge of which arguments make sense, and Emacs +visibly fills in the rest, or as much as can be determined from the +part you have typed. + + When completion is available, certain keys--TAB, RET, and SPC--are +redefined to complete an abbreviation present in the minibuffer into a +longer string that it stands for, by matching it against a set of +"completion alternatives" provided by the command reading the argument. +`?' is defined to display a list of possible completions of what you +have inserted. + + For example, when the minibuffer is being used by `Meta-x' to read +the name of a command, it is given a list of all available Emacs command +names to complete against. The completion keys match the text in the +minibuffer against all the command names, find any additional +characters of the name that are implied by the ones already present in +the minibuffer, and add those characters to the ones you have given. + + Case is normally significant in completion, because it is +significant in most of the names that you can complete (buffer names, +file names and command names). Thus, `fo' will not complete to `Foo'. +When you are completing a name in which case does not matter, case may +be ignored for completion's sake if the program said to do so. + +Completion Example +------------------ + + A concrete example may help here. If you type `Meta-x au TAB', the +TAB looks for alternatives (in this case, command names) that start +with `au'. There are only two: `auto-fill-mode' and `auto-save-mode'. +These are the same as far as `auto-', so the `au' in the minibuffer +changes to `auto-'. + + If you type TAB again immediately, there are multiple possibilities +for the very next character--it could be `s' or `f'--so no more +characters are added; but a list of all possible completions is +displayed in another window. + + If you go on to type `f TAB', this TAB sees `auto-f'. The only +command name starting this way is `auto-fill-mode', so completion +inserts the rest of that. You now have `auto-fill-mode' in the +minibuffer after typing just `au TAB f TAB'. Note that TAB has this +effect because in the minibuffer it is bound to the function +`minibuffer-complete' when completion is supposed to be done. + +Completion Commands +------------------- + + Here is a list of all the completion commands, defined in the +minibuffer when completion is available. + +`TAB' + Complete the text in the minibuffer as much as possible + (`minibuffer-complete'). + +`SPC' + Complete the text in the minibuffer but don't add or fill out more + than one word (`minibuffer-complete-word'). + +`RET' + Submit the text in the minibuffer as the argument, possibly + completing first as described below + (`minibuffer-complete-and-exit'). + +`?' + Print a list of all possible completions of the text in the + minibuffer (`minibuffer-list-completions'). + + SPC completes much like TAB, but never goes beyond the next hyphen +or space. If you have `auto-f' in the minibuffer and type SPC, it +finds that the completion is `auto-fill-mode', but it stops completing +after `fill-'. This gives `auto-fill-'. Another SPC at this point +completes all the way to `auto-fill-mode'. SPC in the minibuffer runs +the function `minibuffer-complete-word' when completion is available. + + There are three different ways that RET can work in completing +minibuffers, depending on how the argument will be used. + + * "Strict" completion is used when it is meaningless to give any + argument except one of the known alternatives. For example, when + `C-x k' reads the name of a buffer to kill, it is meaningless to + give anything but the name of an existing buffer. In strict + completion, RET refuses to exit if the text in the minibuffer does + not complete to an exact match. + + * "Cautious" completion is similar to strict completion, except that + RET exits only if the text was an exact match already, not needing + completion. If the text is not an exact match, RET does not exit, + but it does complete the text. If it completes to an exact match, + a second RET will exit. + + Cautious completion is used for reading file names for files that + must already exist. + + * "Permissive" completion is used when any string whatever is + meaningful, and the list of completion alternatives is just a + guide. For example, when `C-x C-f' reads the name of a file to + visit, any file name is allowed, in case you want to create a + file. In permissive completion, RET takes the text in the + minibuffer exactly as given, without completing it. + + The completion commands display a list of all possible completions +in a window whenever there is more than one possibility for the very +next character. Also, typing `?' explicitly requests such a list. The +list of completions counts as help text, so `C-M-v' typed in the +minibuffer scrolls the list. + + When completion is done on file names, certain file names are usually +ignored. The variable `completion-ignored-extensions' contains a list +of strings; a file whose name ends in any of those strings is ignored +as a possible completion. The standard value of this variable has +several elements including `".o"', `".elc"', `".dvi"' and `"~"'. The +effect is that, for example, `foo' can complete to `foo.c' even though +`foo.o' exists as well. If the only possible completions are files +that end in "ignored" strings, then they are not ignored. + + Normally, a completion command that finds the next character is +undetermined automatically displays a list of all possible completions. + If the variable `completion-auto-help' is set to `nil', this does not +happen, and you must type `?' to display the possible completions. + +
\ No newline at end of file |