|
|
1.1 ! root 1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the ! 2: input file emacs.texi. ! 3: ! 4: This file documents the GNU Emacs editor. ! 5: ! 6: Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman. ! 7: ! 8: Permission is granted to make and distribute verbatim copies of this ! 9: manual provided the copyright notice and this permission notice are ! 10: preserved on all copies. ! 11: ! 12: Permission is granted to copy and distribute modified versions of ! 13: this manual under the conditions for verbatim copying, provided also ! 14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU ! 15: General Public License" are included exactly as in the original, and ! 16: provided that the entire resulting derived work is distributed under the ! 17: terms of a permission notice identical to this one. ! 18: ! 19: Permission is granted to copy and distribute translations of this ! 20: manual into another language, under the above conditions for modified ! 21: versions, except that the sections entitled "The GNU Manifesto", ! 22: "Distribution" and "GNU General Public License" may be included in a ! 23: translation approved by the author instead of in the original English. ! 24: ! 25: ! 26: File: emacs, Node: Commands, Next: Entering Emacs, Prev: Keys, Up: Top ! 27: ! 28: Keys and Commands ! 29: ================= ! 30: ! 31: This manual is full of passages that tell you what particular keys ! 32: do. But Emacs does not assign meanings to keys directly. Instead, Emacs ! 33: assigns meanings to "functions", and then gives keys their meanings by ! 34: "binding" them to functions. ! 35: ! 36: A function is a Lisp object that can be executed as a program. ! 37: Usually it is a Lisp symbol which has been given a function definition; ! 38: every symbol has a name, usually made of a few English words separated ! 39: by dashes, such as `next-line' or `forward-word'. It also has a ! 40: "definition" which is a Lisp program; this is what makes the function ! 41: do what it does. Only some functions can be the bindings of keys; ! 42: these are functions whose definitions use `interactive' to specify how ! 43: to call them interactively. Such functions are called "commands", and ! 44: their names are "command names". *Note Defining Commands: ! 45: (elisp)Defining Commands, for more information. ! 46: ! 47: The bindings between keys and functions are recorded in various ! 48: tables called "keymaps". *Note Keymaps::. ! 49: ! 50: When we say that "`C-n' moves down vertically one line" we are ! 51: glossing over a distinction that is irrelevant in ordinary use but is ! 52: vital in understanding how to customize Emacs. It is the function ! 53: `next-line' that is programmed to move down vertically. `C-n' has this ! 54: effect because it is bound to that function. If you rebind `C-n' to ! 55: the function `forward-word' then `C-n' will move forward by words ! 56: instead. Rebinding keys is a common method of customization. ! 57: ! 58: In the rest of this manual, we usually ignore this subtlety to keep ! 59: things simple. To give the customizer the information he needs, we ! 60: state the name of the command which really does the work in parentheses ! 61: after mentioning the key that runs it. For example, we will say that ! 62: "The command `C-n' (`next-line') moves point vertically down," meaning ! 63: that `next-line' is a command that moves vertically down and `C-n' is a ! 64: key that is standardly bound to it. ! 65: ! 66: While we are on the subject of information for customization only, ! 67: it's a good time to tell you about "variables". Often the description ! 68: of a command will say, "To change this, set the variable `mumble-foo'." ! 69: A variable is a name used to remember a value. Most of the variables ! 70: documented in this manual exist just to facilitate customization: some ! 71: command or other part of Emacs examines the variable and behaves ! 72: differently accordingly. Until you are interested in customizing, you ! 73: can ignore the information about variables. When you are ready to be ! 74: interested, read the basic information on variables, and then the ! 75: information on individual variables will make sense. *Note Variables::. ! 76: ! 77: ! 78: File: emacs, Node: Entering Emacs, Next: Exiting, Prev: Commands, Up: Top ! 79: ! 80: Entering and Exiting Emacs ! 81: ************************** ! 82: ! 83: The usual way to invoke Emacs is just to type `emacs RET' at the ! 84: shell. Emacs clears the screen and then displays an initial advisor ! 85: message and copyright notice. You can begin typing Emacs commands ! 86: immediately afterward. ! 87: ! 88: Some operating systems insist on discarding all type-ahead when Emacs ! 89: starts up; they give Emacs no way to prevent this. Therefore, it is ! 90: wise to wait until Emacs clears the screen before typing your first ! 91: editing command. ! 92: ! 93: Before Emacs reads the first command, you have not had a chance to ! 94: give a command to specify a file to edit. But Emacs must always have a ! 95: current buffer for editing. In an attempt to do something useful, ! 96: Emacs presents a buffer named `*scratch*' which is in Lisp Interaction ! 97: mode; you can use it to type Lisp expressions and evaluate them, or you ! 98: can ignore that capability and simply doodle. (You can specify a ! 99: different major mode for this buffer by setting the variable ! 100: `initial-major-mode' in your init file. *Note Init File::.) ! 101: ! 102: It is also possible to specify files to be visited, Lisp files to be ! 103: loaded, and functions to be called, by giving Emacs arguments in the ! 104: shell command line. *Note Command Switches::. ! 105: ! 106: ! 107: File: emacs, Node: Exiting, Next: Command Switches, Prev: Entering Emacs, Up: Top ! 108: ! 109: Exiting Emacs ! 110: ============= ! 111: ! 112: There are two commands for exiting Emacs because there are two kinds ! 113: of exiting: "suspending" Emacs and "killing" Emacs. "Suspending" means ! 114: stopping Emacs temporarily and returning control to its superior ! 115: (usually the shell), allowing you to resume editing later in the same ! 116: Emacs job, with the same files, same kill ring, same undo history, and ! 117: so on. This is the usual way to exit. "Killing" Emacs means ! 118: destroying the Emacs job. You can run Emacs again later, but you will ! 119: get a fresh Emacs; there is no way to resume the same editing session ! 120: after it has been killed. ! 121: ! 122: `C-z' ! 123: Suspend Emacs (`suspend-emacs'). ! 124: ! 125: `C-x C-c' ! 126: Kill Emacs (`save-buffers-kill-emacs'). ! 127: ! 128: To suspend Emacs, type `C-z' (`suspend-emacs'). This takes you back ! 129: to the shell from which you invoked Emacs. You can resume Emacs with ! 130: the command `%emacs' if you are using the C shell or the Bourne-Again ! 131: shell. ! 132: ! 133: On systems that do not permit programs to be suspended, `C-z' runs an ! 134: inferior shell that communicates directly with the terminal, and Emacs ! 135: waits until you exit the subshell. The only way on these systems to get ! 136: back to the shell from which Emacs was run (to log out, for example) is ! 137: to kill Emacs. `C-d' or `exit' are typical commands to exit a subshell. ! 138: ! 139: To kill Emacs, type `C-x C-c' (`save-buffers-kill-emacs'). A ! 140: two-character key is used for this to make it harder to type. Unless a ! 141: numeric argument is used, this command first offers to save any modified ! 142: buffers. If you do not save them all, it asks for reconfirmation with ! 143: `yes' before killing Emacs, since any changes not saved before that ! 144: will be lost forever. Also, if any subprocesses are still running, ! 145: `C-x C-c' asks for confirmation about them, since killing Emacs will ! 146: kill the subprocesses immediately. ! 147: ! 148: In most programs running on Unix, certain characters may instantly ! 149: suspend or kill the program. (In Berkeley Unix these characters are ! 150: normally `C-z' and `C-c'.) This Unix feature is turned off while you ! 151: are in Emacs. The meanings of `C-z' and `C-x C-c' as keys in Emacs ! 152: were inspired by the standard Berkeley Unix meanings of `C-z' and ! 153: `C-c', but that is their only relationship with Unix. You could ! 154: customize these keys to do anything (*note Keymaps::.). ! 155: ! 156: ! 157: File: emacs, Node: Command Switches, Next: Basic, Prev: Exiting, Up: Top ! 158: ! 159: Command Line Switches and Arguments ! 160: =================================== ! 161: ! 162: GNU Emacs supports command line arguments to request various actions ! 163: when invoking Emacs. These are for compatibility with other editors and ! 164: for sophisticated activities. They are not needed for ordinary editing ! 165: with Emacs, so new users can skip this section. ! 166: ! 167: You may be used to using command line arguments with other editors ! 168: to specify which file to edit. That's because many other editors are ! 169: designed to be started afresh each time you want to edit. You edit one ! 170: file and then exit the editor. The next time you want to edit either ! 171: another file or the same one, you must run the editor again. With these ! 172: editors, it makes sense to use a command line argument to say which ! 173: file to edit. ! 174: ! 175: The recommended way to use GNU Emacs is to start it only once, just ! 176: after you log in, and do all your editing in the same Emacs process. ! 177: Each time you want to edit a different file, you visit it with the ! 178: existing Emacs, which eventually comes to have many files in it ready ! 179: for editing. Usually you do not kill the Emacs until you are about to ! 180: log out. ! 181: ! 182: In the usual style of Emacs use, files are nearly always read by ! 183: typing commands to an editor that is already running. So command line ! 184: arguments for specifying a file when the editor is started are seldom ! 185: used. ! 186: ! 187: Emacs accepts command-line arguments that specify files to visit, ! 188: functions to call, and other activities and operating modes. ! 189: ! 190: The command arguments are processed in the order they appear in the ! 191: command argument list; however, certain arguments (the ones in the ! 192: second table) must be at the front of the list if they are used. ! 193: ! 194: Here are the arguments allowed: ! 195: ! 196: `FILE' ! 197: Visit FILE using `find-file'. *Note Visiting::. ! 198: ! 199: `+LINENUM FILE' ! 200: Visit FILE using `find-file', then go to line number LINENUM in it. ! 201: ! 202: `-l FILE' ! 203: `-load FILE' ! 204: Load a file FILE of Lisp code with the function `load'. *Note Lisp ! 205: Libraries::. ! 206: ! 207: `-f FUNCTION' ! 208: `-funcall FUNCTION' ! 209: Call Lisp function FUNCTION with no arguments. ! 210: ! 211: `-i FILE' ! 212: `-insert FILE' ! 213: Insert the contents of FILE into the current buffer. This is like ! 214: what `M-x insert-buffer' does; see *Note Misc File Ops::. ! 215: ! 216: `-kill' ! 217: Exit from Emacs without asking for confirmation. ! 218: ! 219: The following switches are recognized only at the beginning of the ! 220: command line. If more than one of them appears, they must appear in the ! 221: order that they appear in this table. ! 222: ! 223: `-t DEVICE' ! 224: Use DEVICE as the device for terminal input and output. ! 225: ! 226: `-d DISPLAY' ! 227: When running with the X window system, use the display named ! 228: DISPLAY to make Emacs's X window. ! 229: ! 230: `-nw' ! 231: Don't use a window system; display text only, using an ordinary ! 232: terminal device. Thus, if you run an X-capable Emacs in an Xterm ! 233: with `emacs -nw', it displays in the Xterm's own window instead of ! 234: making its own. ! 235: ! 236: `-batch' ! 237: Run Emacs in "batch mode", which means that the text being edited ! 238: is not displayed and the standard Unix interrupt characters such ! 239: as `C-z' and `C-c' continue to have their normal effect. Emacs in ! 240: batch mode outputs to `stdout' only what would normally be printed ! 241: in the echo area under program control. ! 242: ! 243: Batch mode is used for running programs written in Emacs Lisp from ! 244: shell scripts, makefiles, and so on. Normally the `-l' switch or ! 245: `-f' switch will be used as well, to invoke a Lisp program to do ! 246: the batch processing. ! 247: ! 248: `-batch' implies `-q' (do not load an init file). It also causes ! 249: Emacs to exit after all command switches have been processed. In ! 250: addition, auto-saving is not done except in buffers for which it ! 251: has been explicitly requested. ! 252: ! 253: `-q' ! 254: `-no-init-file' ! 255: Do not load your Emacs init file `~/.emacs'. ! 256: ! 257: `-u USER' ! 258: `-user USER' ! 259: Load USER's Emacs init file `~USER/.emacs' instead of your own. ! 260: ! 261: With X Windows, you can use these additional options to specify how ! 262: to display the window. Each option has a corresponding resource name ! 263: (used with `emacs' unless you specify another name with `-rn NAME'), ! 264: listed with the option, which lets you specify the same parameter using ! 265: the usual X Windows defaulting mechanism. The corresponding generic ! 266: resource name (used with `Emacs') is usually made by capitalizing the ! 267: first letter of the individual resource name, but in some cases it is a ! 268: completely different string (which is listed below). ! 269: ! 270: `-rn NAME' ! 271: Use NAME instead of `emacs' when looking for X resources. ! 272: ! 273: `-font FONTNAME' ! 274: `-fn FONTNAME' ! 275: Use font FONTNAME. ! 276: (Resource `font'.) ! 277: ! 278: `-wn NAME' ! 279: Name the window NAME. ! 280: (Resource `title'.) ! 281: ! 282: `-i' ! 283: Use a bitmap icon (showing the kitchen sink) rather than a textual ! 284: icon. ! 285: (Resource `bitmapIcon'.) ! 286: ! 287: `-in NAME' ! 288: Name the icon NAME. (Resource `iconName'; `Title'). ! 289: ! 290: `-geometry COORDS' ! 291: `-w COORDS' ! 292: Specify the shape and optionally the position of the Emacs window ! 293: in the usual X way. ! 294: (Resource `geometry'.) ! 295: ! 296: `-b WIDTH' ! 297: Specify that the window border is WIDTH pixels thick. ! 298: (Resource `borderWidth'.) ! 299: ! 300: `-ib WIDTH' ! 301: Leave WIDTH blank pixels between the border and the window ! 302: contents. ! 303: (Resource `internalBorder'; `BorderWidth'.) ! 304: ! 305: `-r' ! 306: Use reverse video. ! 307: (Resource `reverseVideo'.) ! 308: ! 309: `-fg COLOR' ! 310: Use color COLOR for text in the window. ! 311: (Resource `foreground'.) ! 312: ! 313: `-bg COLOR' ! 314: Use the color COLOR for the background of the window. ! 315: (Resource `background'.) ! 316: ! 317: `-bd COLOR' ! 318: Use color COLOR for the window border. ! 319: (Resource `borderColor'.) ! 320: ! 321: `-cr COLOR' ! 322: Specify the color, COLOR, to use for the cursor. ! 323: (Resource `cursorColor'; `Foreground'.) ! 324: ! 325: `-ms COLOR' ! 326: Use color COLOR for the mouse cursor. ! 327: (Resource `pointerColor'; `Foreground'.) ! 328: ! 329: The init file can get access to the command line argument values as ! 330: the elements of a list in the variable `command-line-args'. (The ! 331: arguments in the second table above will already have been processed and ! 332: will not be in the list.) The init file can override the normal ! 333: processing of the other arguments by setting this variable. ! 334: ! 335: One way to use command arguments is to visit many files ! 336: automatically: ! 337: ! 338: emacs *.c ! 339: ! 340: passes each `.c' file as a separate argument to Emacs, so that Emacs ! 341: visits each file (*note Visiting::.). ! 342: ! 343: Here is an advanced example that assumes you have a Lisp program ! 344: file called `hack-c-program.el' which, when loaded, performs some ! 345: useful operation on current buffer, expected to be a C program. ! 346: ! 347: emacs -batch foo.c -l hack-c-program -f save-buffer -kill > log ! 348: ! 349: This says to visit `foo.c', load `hack-c-program.el' (which makes ! 350: changes in the visited file), save `foo.c' (note that `save-buffer' is ! 351: the function that `C-x C-s' is bound to), and then exit to the shell ! 352: that this command was done with. `-batch' guarantees there will be no ! 353: problem redirecting output to `log', because Emacs will not assume that ! 354: it has a display terminal to work with. ! 355: ! 356: ! 357: File: emacs, Node: Basic, Next: Undo, Prev: Command Switches, Up: Top ! 358: ! 359: Basic Editing Commands ! 360: ********************** ! 361: ! 362: We now give the basics of how to enter text, make corrections, and ! 363: save the text in a file. If this material is new to you, you might ! 364: learn it more easily by running the Emacs learn-by-doing tutorial. To ! 365: do this, type `Control-h t' (`help-with-tutorial'). ! 366: ! 367: Inserting Text ! 368: ============== ! 369: ! 370: To insert printing characters into the text you are editing, just ! 371: type them. This inserts the character into the buffer at the cursor ! 372: (that is, at "point"; *note Point::.). The cursor moves forward. Any ! 373: characters after the cursor move forward too. If the text in the ! 374: buffer is `FOOBAR', with the cursor before the `B', then if you type ! 375: `XX', you get `FOOXXBAR', with the cursor still before the `B'. ! 376: ! 377: To "delete" text you have just inserted, use DEL. DEL deletes the ! 378: character BEFORE the cursor (not the one that the cursor is on top of ! 379: or under; that is the character AFTER the cursor). The cursor and all ! 380: characters after it move backwards. Therefore, if you type a printing ! 381: character and then type DEL, they cancel out. ! 382: ! 383: To end a line and start typing a new one, type RET. This inserts a ! 384: newline character in the buffer. If point is in the middle of a line, ! 385: RET splits the line. Typing DEL when the cursor is at the beginning of ! 386: a line rubs out the newline before the line, thus joining the line with ! 387: the preceding line. ! 388: ! 389: Emacs will split lines automatically when they become too long, if ! 390: you turn on a special mode called "Auto Fill" mode. *Note Filling::, ! 391: for how to use Auto Fill mode. ! 392: ! 393: Customization information: DEL in most modes runs the command named ! 394: `delete-backward-char'; RET runs the command `newline', and ! 395: self-inserting printing characters run the command `self-insert', which ! 396: inserts whatever character was typed to invoke it. Some major modes ! 397: rebind DEL to other commands. ! 398: ! 399: Direct insertion works for printing characters and SPC, but other ! 400: characters act as editing commands and do not insert themselves. If you ! 401: need to insert a control character or a character whose code is above ! 402: 200 octal, you must "quote" it by typing the character `control-q' ! 403: (`quoted-insert') first. There are two ways to use `C-q': ! 404: ! 405: * `Control-q' followed by any non-graphic character (even `C-g') ! 406: inserts that character. ! 407: ! 408: * `Control-q' followed by three octal digits inserts the character ! 409: with the specified character code. ! 410: ! 411: A numeric argument to `C-q' specifies how many copies of the quoted ! 412: character should be inserted (*note Arguments::.). ! 413: ! 414: If you prefer to have text characters replace (overwrite) existing ! 415: text rather than shove it to the right, you can enable Overwrite mode, ! 416: a minor mode. *Note Minor Modes::. ! 417: ! 418: Changing the Location of Point ! 419: ============================== ! 420: ! 421: To do more than insert characters, you have to know how to move ! 422: point (*note Point::.). Here are a few of the commands for doing that. ! 423: ! 424: `C-a' ! 425: Move to the beginning of the line (`beginning-of-line'). ! 426: ! 427: `C-e' ! 428: Move to the end of the line (`end-of-line'). ! 429: ! 430: `C-f' ! 431: Move forward one character (`forward-char'). ! 432: ! 433: `C-b' ! 434: Move backward one character (`backward-char'). ! 435: ! 436: `M-f' ! 437: Move forward one word (`forward-word'). ! 438: ! 439: `M-b' ! 440: Move backward one word (`backward-word'). ! 441: ! 442: `C-n' ! 443: Move down one line, vertically (`next-line'). This command ! 444: attempts to keep the horizontal position unchanged, so if you ! 445: start in the middle of one line, you end in the middle of the ! 446: next. When on the last line of text, `C-n' creates a new line and ! 447: moves onto it. ! 448: ! 449: `C-p' ! 450: Move up one line, vertically (`previous-line'). ! 451: ! 452: `C-l' ! 453: Clear the screen and reprint everything (`recenter'). Text moves ! 454: on the screen to bring point to the center of the window. ! 455: ! 456: `M-r' ! 457: Move point to left margin on the line halfway down the screen or ! 458: window (`move-to-window-line'). Text does not move on the screen. ! 459: A numeric argument says how many screen lines down from the top ! 460: of the window (zero for the top). A negative argument counts from ! 461: the bottom (-1 for the bottom). ! 462: ! 463: `C-t' ! 464: Transpose two characters, the ones before and after the cursor ! 465: (`transpose-chars'). ! 466: ! 467: `M-<' ! 468: Move to the top of the buffer (`beginning-of-buffer'). With ! 469: numeric argument N, move to N/10 of the way from the top. *Note ! 470: Arguments::, for more information on numeric arguments. ! 471: ! 472: `M->' ! 473: Move to the end of the buffer (`end-of-buffer'). ! 474: ! 475: `M-x goto-char' ! 476: Read a number N and move cursor to character number N. Position 1 ! 477: is the beginning of the buffer. ! 478: ! 479: `M-x goto-line' ! 480: Read a number N and move cursor to line number N. Line 1 is the ! 481: beginning of the buffer. ! 482: ! 483: `C-x C-n' ! 484: Use the current column of point as the "semipermanent goal column" ! 485: for `C-n' and `C-p' (`set-goal-column'). Henceforth, those ! 486: commands always move to this column in each line moved into, or as ! 487: close as possible given the contents of the line. This goal ! 488: column remains in effect until canceled. ! 489: ! 490: `C-u C-x C-n' ! 491: Cancel the goal column. Henceforth, `C-n' and `C-p' once again ! 492: try to avoid changing the horizontal position, as usual. ! 493: ! 494: If you set the variable `track-eol' to a non-`nil' value, then `C-n' ! 495: and `C-p' when at the end of the starting line move to the end of the ! 496: line. Normally, `track-eol' is `nil'. ! 497: ! 498: Erasing Text ! 499: ============ ! 500: ! 501: `DEL' ! 502: Delete the character before the cursor (`delete-backward-char'). ! 503: ! 504: `C-d' ! 505: Delete the character after the cursor (`delete-char'). ! 506: ! 507: `C-k' ! 508: Kill to the end of the line (`kill-line'). ! 509: ! 510: `M-d' ! 511: Kill forward to the end of the next word (`kill-word'). ! 512: ! 513: `M-DEL' ! 514: Kill back to the beginning of the previous word ! 515: (`backward-kill-word'). ! 516: ! 517: You already know about the DEL key which deletes the character ! 518: before the cursor. Another key, `Control-d', deletes the character ! 519: after the cursor, causing the rest of the text on the line to shift ! 520: left. If `Control-d' is typed at the end of a line, that line and the ! 521: next line are joined together. ! 522: ! 523: To erase a larger amount of text, use the `Control-k' key, which ! 524: kills a line at a time. If `C-k' is done at the beginning or middle of ! 525: a line, it kills all the text up to the end of the line. If `C-k' is ! 526: done at the end of a line, it joins that line and the next line. ! 527: ! 528: *Note Killing::, for more flexible ways of killing text. ! 529: ! 530: Files ! 531: ===== ! 532: ! 533: The commands above are sufficient for creating and altering text in ! 534: an Emacs buffer; the more advanced Emacs commands just make things ! 535: easier. But to keep any text permanently you must put it in a "file". ! 536: Files are named units of text which are stored by the operating system ! 537: for you to retrieve later by name. To look at or use the contents of a ! 538: file in any way, including editing the file with Emacs, you must ! 539: specify the file name. ! 540: ! 541: Consider a file named `/usr/rms/foo.c'. In Emacs, to begin editing ! 542: this file, type ! 543: ! 544: C-x C-f /usr/rms/foo.c RET ! 545: ! 546: Here the file name is given as an "argument" to the command `C-x C-f' ! 547: (`find-file'). That command uses the "minibuffer" to read the ! 548: argument, and you type RET to terminate the argument (*note ! 549: Minibuffer::.). ! 550: ! 551: Emacs obeys the command by "visiting" the file: creating a buffer, ! 552: copying the contents of the file into the buffer, and then displaying ! 553: the buffer for you to edit. You can make changes in it, and then "save" ! 554: the file by typing `C-x C-s' (`save-buffer'). This makes the changes ! 555: permanent by copying the altered contents of the buffer back into the ! 556: file `/usr/rms/foo.c'. Until then, the changes are only inside your ! 557: Emacs, and the file `foo.c' is not changed. ! 558: ! 559: To create a file, just visit the file with `C-x C-f' as if it already ! 560: existed. Emacs will make an empty buffer in which you can insert the ! 561: text you want to put in the file. When you save your text with `C-x ! 562: C-s', the file will be created. ! 563: ! 564: Of course, there is a lot more to learn about using files. *Note ! 565: Files::. ! 566: ! 567: Help ! 568: ==== ! 569: ! 570: If you forget what a key does, you can find out with the Help ! 571: character, which is `C-h'. Type `C-h k' followed by the key you want ! 572: to know about; for example, `C-h k C-n' tells you all about what `C-n' ! 573: does. `C-h' is a prefix key; `C-h k' is just one of its subcommands ! 574: (the command `describe-key'). The other subcommands of `C-h' provide ! 575: different kinds of help. Type `C-h' three times to get a description ! 576: of all the help facilities. *Note Help::. ! 577: ! 578: * Menu: ! 579: ! 580: * Blank Lines:: Commands to make or delete blank lines. ! 581: * Continuation Lines:: Lines too wide for the screen. ! 582: * Position Info:: What page, line, row, or column is point on? ! 583: * Arguments:: Numeric arguments for repeating a command. ! 584: ! 585: ! 586: File: emacs, Node: Blank Lines, Next: Continuation Lines, Prev: Basic, Up: Basic ! 587: ! 588: Blank Lines ! 589: =========== ! 590: ! 591: Here are special commands and techniques for putting in and taking ! 592: out blank lines. ! 593: ! 594: `C-o' ! 595: Insert one or more blank lines after the cursor (`open-line'). ! 596: ! 597: `C-x C-o' ! 598: Delete all but one of many consecutive blank lines ! 599: (`delete-blank-lines'). ! 600: ! 601: When you want to insert a new line of text before an existing line, ! 602: you can do it by typing the new line of text, followed by RET. However, ! 603: it may be easier to see what you are doing if you first make a blank ! 604: line and then insert the desired text into it. This is easy to do ! 605: using the key `C-o' (`open-line'), which inserts a newline after point ! 606: but leaves point in front of the newline. After `C-o', type the text ! 607: for the new line. `C-o F O O' has the same effect as `F O O RET', ! 608: except for the final location of point. ! 609: ! 610: You can make several blank lines by typing `C-o' several times, or by ! 611: giving it an argument to tell it how many blank lines to make. *Note ! 612: Arguments::, for how. ! 613: ! 614: If you have many blank lines in a row and want to get rid of them, ! 615: use `C-x C-o' (`delete-blank-lines'). When point is on a blank line ! 616: which is adjacent to at least one other blank line, `C-x C-o' deletes ! 617: all but one of the consecutive blank lines, leaving exactly one. With ! 618: point on a blank line with no other blank line adjacent to it, the sole ! 619: blank line is deleted, leaving none. When point is on a nonblank line, ! 620: `C-x C-o' deletes any blank lines following that nonblank line. ! 621: ! 622: ! 623: File: emacs, Node: Continuation Lines, Next: Position Info, Prev: Blank Lines, Up: Basic ! 624: ! 625: Continuation Lines ! 626: ================== ! 627: ! 628: If you add too many characters to one line, without breaking it with ! 629: a RET, the line will grow to occupy two (or more) lines on the screen, ! 630: with a `\' at the extreme right margin of all but the last of them. The ! 631: `\' says that the following screen line is not really a distinct line ! 632: in the text, but just the "continuation" of a line too long to fit the ! 633: screen. Sometimes it is nice to have Emacs insert newlines ! 634: automatically when a line gets too long; for this, use Auto Fill mode ! 635: (*note Filling::.). ! 636: ! 637: Instead of continuation, long lines can be displayed by "truncation". ! 638: This means that all the characters that do not fit in the width of the ! 639: screen or window do not appear at all. They remain in the buffer, ! 640: temporarily invisible. `$' is used in the last column instead of `\' ! 641: to inform you that truncation is in effect. ! 642: ! 643: Continuation can be turned off for a particular buffer by setting the ! 644: variable `truncate-lines' to non-`nil' in that buffer. Truncation ! 645: instead of continuation also happens whenever horizontal scrolling is ! 646: in use, and optionally whenever side-by-side windows are in use (*note ! 647: Windows::.). Altering the value of `truncate-lines' makes it local to ! 648: the current buffer; until that time, the default value is in effect. ! 649: The default is initially `nil'. *Note Locals::. ! 650: ! 651: ! 652: File: emacs, Node: Position Info, Next: Arguments, Prev: Continuation Lines, Up: Basic ! 653: ! 654: Cursor Position Information ! 655: =========================== ! 656: ! 657: If you are accustomed to other display editors, you may be surprised ! 658: that Emacs does not always display the page number or line number of ! 659: point in the mode line. This is because the text is stored in a way ! 660: that makes it difficult to compute this information. Displaying them ! 661: all the time would be intolerably slow. They are not needed very often ! 662: in Emacs anyway, but there are commands to compute them and print them. ! 663: ! 664: `M-x what-page' ! 665: Print page number of point, and line number within page. ! 666: ! 667: `M-x what-line' ! 668: Print line number of point in the buffer. ! 669: ! 670: `M-=' ! 671: Print number of lines in the current region (`count-lines-region'). ! 672: ! 673: `C-x =' ! 674: Print character code of character after point, character position ! 675: of point, and column of point (`what-cursor-position'). ! 676: ! 677: There are two commands for printing line numbers. `M-x what-line' ! 678: counts lines from the beginning of the file and prints the line number ! 679: point is on. The first line of the file is line number 1. These ! 680: numbers can be used as arguments to `M-x goto-line'. By contrast, `M-x ! 681: what-page' counts pages from the beginning of the file, and counts lines ! 682: within the page, printing both of them. *Note Pages::. ! 683: ! 684: While on this subject, we might as well mention `M-=' ! 685: (`count-lines-region'), which prints the number of lines in the region ! 686: (*note Mark::.). *Note Pages::, for the command `C-x l' which counts ! 687: the lines in the current page. ! 688: ! 689: The command `C-x =' (`what-cursor-position') can be used to find out ! 690: the column that the cursor is in, and other miscellaneous information ! 691: about point. It prints a line in the echo area that looks like this: ! 692: ! 693: Char: x (0170) point=65986 of 563027(12%) x=44 ! 694: ! 695: (In fact, this is the output produced when point is before the `x=44' ! 696: in the example.) ! 697: ! 698: The two values after `Char:' describe the character following point, ! 699: first by showing it and second by giving its octal character code. ! 700: ! 701: `point=' is followed by the position of point expressed as a ! 702: character count. The front of the buffer counts as position 1, one ! 703: character later as 2, and so on. The next, larger number is the total ! 704: number of characters in the buffer. Afterward in parentheses comes the ! 705: position expressed as a percentage of the total size. ! 706: ! 707: `x=' is followed by the horizontal position of point, in columns ! 708: from the left edge of the window. ! 709: ! 710: If the buffer has been narrowed, making some of the text at the ! 711: beginning and the end temporarily invisible, `C-x =' prints additional ! 712: text describing the current visible range. For example, it might say ! 713: ! 714: Char: x (0170) point=65986 of 563025(12%) <65102 - 68533> x=44 ! 715: ! 716: where the two extra numbers give the smallest and largest character ! 717: position that point is allowed to assume. The characters between those ! 718: two positions are the visible ones. *Note Narrowing::. ! 719: ! 720: If point is at the end of the buffer (or the end of the visible ! 721: part), `C-x =' omits any description of the character after point. The ! 722: output looks like ! 723: ! 724: point=563026 of 563025(100%) x=0 ! 725: ! 726: ! 727: File: emacs, Node: Arguments, Prev: Position Info, Up: Basic ! 728: ! 729: Numeric Arguments ! 730: ================= ! 731: ! 732: Any Emacs command can be given a "numeric argument". Some commands ! 733: interpret the argument as a repetition count. For example, giving an ! 734: argument of ten to the key `C-f' (the command `forward-char', move ! 735: forward one character) moves forward ten characters. With these ! 736: commands, no argument is equivalent to an argument of one. Negative ! 737: arguments are allowed. Often they tell a command to move or act ! 738: backwards. ! 739: ! 740: If your terminal keyboard has a META key, the easiest way to specify ! 741: a numeric argument is to type digits and/or a minus sign while holding ! 742: down the META key. For example, ! 743: M-5 C-n ! 744: ! 745: would move down five lines. The characters `Meta-1', `Meta-2', and so ! 746: on, as well as `Meta--', do this because they are keys bound to ! 747: commands (`digit-argument' and `negative-argument') that are defined to ! 748: contribute to an argument for the next command. ! 749: ! 750: Another way of specifying an argument is to use the `C-u' ! 751: (`universal-argument') command followed by the digits of the argument. ! 752: With `C-u', you can type the argument digits without holding down shift ! 753: keys. To type a negative argument, start with a minus sign. Just a ! 754: minus sign normally means -1. `C-u' works on all terminals. ! 755: ! 756: `C-u' followed by a character which is neither a digit nor a minus ! 757: sign has the special meaning of "multiply by four". It multiplies the ! 758: argument for the next command by four. `C-u' twice multiplies it by ! 759: sixteen. Thus, `C-u C-u C-f' moves forward sixteen characters. This ! 760: is a good way to move forward "fast", since it moves about 1/5 of a line ! 761: in the usual size screen. Other useful combinations are `C-u C-n', ! 762: `C-u C-u C-n' (move down a good fraction of a screen), `C-u C-u C-o' ! 763: (make "a lot" of blank lines), and `C-u C-k' (kill four lines). ! 764: ! 765: Some commands care only about whether there is an argument, and not ! 766: about its value. For example, the command `M-q' (`fill-paragraph') with ! 767: no argument fills text; with an argument, it justifies the text as well. ! 768: (*Note Filling::, for more information on `M-q'.) Just `C-u' is a ! 769: handy way of providing an argument for such commands. ! 770: ! 771: Some commands use the value of the argument as a repeat count, but do ! 772: something peculiar when there is no argument. For example, the command ! 773: `C-k' (`kill-line') with argument N kills N lines, including their ! 774: terminating newlines. But `C-k' with no argument is special: it kills ! 775: the text up to the next newline, or, if point is right at the end of ! 776: the line, it kills the newline itself. Thus, two `C-k' commands with ! 777: no arguments can kill a nonblank line, just like `C-k' with an argument ! 778: of one. (*Note Killing::, for more information on `C-k'.) ! 779: ! 780: A few commands treat a plain `C-u' differently from an ordinary ! 781: argument. A few others may treat an argument of just a minus sign ! 782: differently from an argument of -1. These unusual cases will be ! 783: described when they come up; they are always for reasons of convenience ! 784: of use of the individual command. ! 785: ! 786: To insert multiple copies of a digit, you can type `C-u COUNT C-u ! 787: DIGIT'. The second `C-u' ends the numeric argument, so that the ! 788: following character always acts a key sequence to be executed. ! 789: ! 790: ! 791: File: emacs, Node: Undo, Next: Minibuffer, Prev: Basic, Up: Top ! 792: ! 793: Undoing Changes ! 794: *************** ! 795: ! 796: Emacs allows all changes made in the text of a buffer to be undone, ! 797: up to a certain amount of change (8000 characters). Each buffer records ! 798: changes individually, and the undo command always applies to the ! 799: current buffer. Usually each editing command makes a separate entry in ! 800: the undo records, but some commands such as `query-replace' make many ! 801: entries, and very simple commands such as self-inserting characters are ! 802: often grouped to make undoing less tedious. ! 803: ! 804: `C-x u' ! 805: Undo one batch of changes (usually, one command worth) (`undo'). ! 806: ! 807: `C-_' ! 808: The same. ! 809: ! 810: The command `C-x u' or `C-_' is how you undo. The first time you ! 811: give this command, it undoes the last change. Point moves to the text ! 812: affected by the undo, so you can see what was undone. ! 813: ! 814: Consecutive repetitions of the `C-_' or `C-x u' commands undo earlier ! 815: and earlier changes, back to the limit of what has been recorded. If ! 816: all recorded changes have already been undone, the undo command prints ! 817: an error message and does nothing. ! 818: ! 819: Any command other than an undo command breaks the sequence of undo ! 820: commands. Starting at this moment, the previous undo commands are ! 821: considered ordinary changes that can themselves be undone. Thus, to ! 822: redo changes you have undone, type `C-f' or any other command that will ! 823: have no important effect, and then give more undo commands. ! 824: ! 825: If you notice that a buffer has been modified accidentally, the ! 826: easiest way to recover is to type `C-_' repeatedly until the stars ! 827: disappear from the front of the mode line. At this time, all the ! 828: modifications you made have been cancelled. If you do not remember ! 829: whether you changed the buffer deliberately, type `C-_' once, and when ! 830: you see the last change you made undone, you will remember why you made ! 831: it. If it was an accident, leave it undone. If it was deliberate, ! 832: redo the change as described in the preceding paragraph. ! 833: ! 834: Whenever an undo command makes the stars disappear from the mode ! 835: line, it means that the buffer contents are the same as they were when ! 836: the file was last read in or saved. ! 837: ! 838: Not all buffers record undo information. Buffers whose names start ! 839: with spaces don't; these buffers are used internally by Emacs and its ! 840: extensions to hold text that users don't normally look at or edit. ! 841: Also, minibuffers, help buffers and documentation buffers don't record ! 842: undo information. Use the command `buffer-enable-undo' to enable ! 843: recording undo information in the current buffer. ! 844: ! 845: As editing continues, undo lists get longer and longer. To prevent ! 846: them from using up all available memory space, garbage collection trims ! 847: back their sizes to thresholds you can set. (For this purpose, the ! 848: "size" of an undo list measures the cons cells that make up the list, ! 849: plus the strings of deleted text.) ! 850: ! 851: Two variables control the range of acceptable sizes: `undo-limit' ! 852: and `undo-strong-limit'. Normally, the most recent changes are kept ! 853: until their size exceeds `undo-limit'; all older changes are discarded. ! 854: But if a change pushes the size above `undo-strong-limit', it is ! 855: discarded as well as all older changes. One exception: the most recent ! 856: set of changes is sacred; garbage collection never discards that. (In ! 857: Emacs versions 18.57 and 18.58, these variables are called ! 858: `undo-threshold' and `undo-high-threshold'.) ! 859: ! 860: The reason the `undo' command has two keys, `C-x u' and `C-_', set ! 861: up to run it is that it is worthy of a single-character key, but the ! 862: way to type `C-_' on some keyboards is not obvious. `C-x u' is an ! 863: alternative you can type in the same fashion on any terminal. ! 864: ! 865: ! 866: File: emacs, Node: Minibuffer, Next: M-x, Prev: Undo, Up: Top ! 867: ! 868: The Minibuffer ! 869: ************** ! 870: ! 871: The "minibuffer" is the facility used by Emacs commands to read ! 872: arguments more complicated than a single number. Minibuffer arguments ! 873: can be file names, buffer names, Lisp function names, Emacs command ! 874: names, Lisp expressions, and many other things, depending on the ! 875: command reading the argument. The usual Emacs editing commands can be ! 876: used in the minibuffer to edit the argument. ! 877: ! 878: When the minibuffer is in use, it appears in the echo area, and the ! 879: terminal's cursor moves there. The beginning of the minibuffer line ! 880: displays a "prompt" which says what kind of input you should supply and ! 881: how it will be used. Often this prompt is derived from the name of the ! 882: command that the argument is for. The prompt normally ends with a ! 883: colon. ! 884: ! 885: Sometimes a "default argument" appears in parentheses after the ! 886: colon; it too is part of the prompt. The default will be used as the ! 887: argument value if you enter an empty argument (e.g., just type RET). ! 888: For example, commands that read buffer names always show a default, ! 889: which is the name of the buffer that will be used if you type just RET. ! 890: ! 891: The simplest way to give a minibuffer argument is to type the text ! 892: you want, terminated by RET which exits the minibuffer. You can get out ! 893: of the minibuffer, canceling the command that it was for, by typing ! 894: `C-g'. ! 895: ! 896: Since the minibuffer uses the screen space of the echo area, it can ! 897: conflict with other ways Emacs customarily uses the echo area. Here is ! 898: how Emacs handles such conflicts: ! 899: ! 900: * If a command gets an error while you are in the minibuffer, this ! 901: does not cancel the minibuffer. However, the echo area is needed ! 902: for the error message and therefore the minibuffer itself is ! 903: hidden for a while. It comes back after a few seconds, or as soon ! 904: as you type anything. ! 905: ! 906: * If in the minibuffer you use a command whose purpose is to print a ! 907: message in the echo area, such as `C-x =', the message is printed ! 908: normally, and the minibuffer is hidden for a while. It comes back ! 909: after a few seconds, or as soon as you type anything. ! 910: ! 911: * Echoing of keystrokes does not take place while the minibuffer is ! 912: in use. ! 913: ! 914: * Menu: ! 915: ! 916: * File: Minibuffer File. Entering file names with the minibuffer. ! 917: * Edit: Minibuffer Edit. How to edit in the minibuffer. ! 918: * Completion:: An abbreviation facility for minibuffer input. ! 919: * Repetition:: Re-executing commands that used the minibuffer. ! 920: ! 921: ! 922: File: emacs, Node: Minibuffer File, Next: Minibuffer Edit, Prev: Minibuffer, Up: Minibuffer ! 923: ! 924: Minibuffers for File Names ! 925: ========================== ! 926: ! 927: Sometimes the minibuffer starts out with text in it. For example, ! 928: when you are supposed to give a file name, the minibuffer starts out ! 929: containing the "default directory", which ends with a slash. This is ! 930: to inform you which directory the file will be found in if you do not ! 931: specify a directory. For example, the minibuffer might start out with ! 932: ! 933: Find File: /u2/emacs/src/ ! 934: ! 935: where `Find File: ' is the prompt. Typing `buffer.c' specifies the ! 936: file `/u2/emacs/src/buffer.c'. To find files in nearby directories, ! 937: use `..'; thus, if you type `../lisp/simple.el', the file that you ! 938: visit will be the one named `/u2/emacs/lisp/simple.el'. Alternatively, ! 939: you can kill with `M-DEL' the directory names you don't want (*note ! 940: Words::.). ! 941: ! 942: You can also type an absolute file name, one starting with a slash ! 943: or a tilde, ignoring the default directory. For example, to find the ! 944: file `/etc/termcap', just type the name, giving ! 945: ! 946: Find File: /u2/emacs/src//etc/termcap ! 947: ! 948: Two slashes in a row are not normally meaningful in Unix file names, but ! 949: they are allowed in GNU Emacs. They mean, "ignore everything before the ! 950: second slash in the pair." Thus, `/u2/emacs/src/' is ignored, and you ! 951: get the file `/etc/termcap'. ! 952: ! 953: If you set `insert-default-directory' to `nil', the default directory ! 954: is not inserted in the minibuffer. This way, the minibuffer starts out ! 955: empty. But the name you type, if relative, is still interpreted with ! 956: respect to the same default directory. ! 957: ! 958: ! 959: File: emacs, Node: Minibuffer Edit, Next: Completion, Prev: Minibuffer File, Up: Minibuffer ! 960: ! 961: Editing in the Minibuffer ! 962: ========================= ! 963: ! 964: The minibuffer is an Emacs buffer (albeit a peculiar one), and the ! 965: usual Emacs commands are available for editing the text of an argument ! 966: you are entering. ! 967: ! 968: Since RET in the minibuffer is defined to exit the minibuffer, ! 969: inserting a newline into the minibuffer must be done with `C-o' or with ! 970: `C-q LFD'. (Recall that a newline is really the LFD character.) ! 971: ! 972: The minibuffer has its own window which always has space on the ! 973: screen but acts as if it were not there when the minibuffer is not in ! 974: use. When the minibuffer is in use, its window is just like the ! 975: others; you can switch to another window with `C-x o', edit text in ! 976: other windows and perhaps even visit more files, before returning to ! 977: the minibuffer to submit the argument. You can kill text in another ! 978: window, return to the minibuffer window, and then yank the text to use ! 979: it in the argument. *Note Windows::. ! 980: ! 981: There are some restrictions on the use of the minibuffer window, ! 982: however. You cannot switch buffers in it--the minibuffer and its window ! 983: are permanently attached. Also, you cannot split or kill the minibuffer ! 984: window. But you can make it taller in the normal fashion with `C-x ^' ! 985: (*note Change Window::.). ! 986: ! 987: If while in the minibuffer you issue a command that displays help ! 988: text of any sort in another window, then that window is identified as ! 989: the one to scroll if you type `C-M-v' while in the minibuffer. This ! 990: lasts until you exit the minibuffer. This feature comes into play if a ! 991: completing minibuffer gives you a list of possible completions. ! 992: ! 993: Recursive use of the minibuffer is supported by Emacs. However, it ! 994: is easy to do this by accident (because of autorepeating keyboards, for ! 995: example) and get confused. Therefore, most Emacs commands that use the ! 996: minibuffer refuse to operate if the minibuffer window is selected. If ! 997: the minibuffer is active but you have switched to a different window, ! 998: recursive use of the minibuffer is allowed--if you know enough to try ! 999: to do this, you probably will not get confused. ! 1000: ! 1001: If you set the variable `enable-recursive-minibuffers' to be ! 1002: non-`nil', recursive use of the minibuffer is always allowed. ! 1003: ! 1004: ! 1005: File: emacs, Node: Completion, Next: Repetition, Prev: Minibuffer Edit, Up: Minibuffer ! 1006: ! 1007: Completion ! 1008: ========== ! 1009: ! 1010: When appropriate, the minibuffer provides a "completion" facility. ! 1011: This means that you type enough of the argument to determine the rest, ! 1012: based on Emacs's knowledge of which arguments make sense, and Emacs ! 1013: visibly fills in the rest, or as much as can be determined from the ! 1014: part you have typed. ! 1015: ! 1016: When completion is available, certain keys--TAB, RET, and SPC--are ! 1017: redefined to complete an abbreviation present in the minibuffer into a ! 1018: longer string that it stands for, by matching it against a set of ! 1019: "completion alternatives" provided by the command reading the argument. ! 1020: `?' is defined to display a list of possible completions of what you ! 1021: have inserted. ! 1022: ! 1023: For example, when the minibuffer is being used by `Meta-x' to read ! 1024: the name of a command, it is given a list of all available Emacs command ! 1025: names to complete against. The completion keys match the text in the ! 1026: minibuffer against all the command names, find any additional ! 1027: characters of the name that are implied by the ones already present in ! 1028: the minibuffer, and add those characters to the ones you have given. ! 1029: ! 1030: Case is normally significant in completion, because it is ! 1031: significant in most of the names that you can complete (buffer names, ! 1032: file names and command names). Thus, `fo' will not complete to `Foo'. ! 1033: When you are completing a name in which case does not matter, case may ! 1034: be ignored for completion's sake if the program said to do so. ! 1035: ! 1036: Completion Example ! 1037: ------------------ ! 1038: ! 1039: A concrete example may help here. If you type `Meta-x au TAB', the ! 1040: TAB looks for alternatives (in this case, command names) that start ! 1041: with `au'. There are only two: `auto-fill-mode' and `auto-save-mode'. ! 1042: These are the same as far as `auto-', so the `au' in the minibuffer ! 1043: changes to `auto-'. ! 1044: ! 1045: If you type TAB again immediately, there are multiple possibilities ! 1046: for the very next character--it could be `s' or `f'--so no more ! 1047: characters are added; but a list of all possible completions is ! 1048: displayed in another window. ! 1049: ! 1050: If you go on to type `f TAB', this TAB sees `auto-f'. The only ! 1051: command name starting this way is `auto-fill-mode', so completion ! 1052: inserts the rest of that. You now have `auto-fill-mode' in the ! 1053: minibuffer after typing just `au TAB f TAB'. Note that TAB has this ! 1054: effect because in the minibuffer it is bound to the function ! 1055: `minibuffer-complete' when completion is supposed to be done. ! 1056: ! 1057: Completion Commands ! 1058: ------------------- ! 1059: ! 1060: Here is a list of all the completion commands, defined in the ! 1061: minibuffer when completion is available. ! 1062: ! 1063: `TAB' ! 1064: Complete the text in the minibuffer as much as possible ! 1065: (`minibuffer-complete'). ! 1066: ! 1067: `SPC' ! 1068: Complete the text in the minibuffer but don't add or fill out more ! 1069: than one word (`minibuffer-complete-word'). ! 1070: ! 1071: `RET' ! 1072: Submit the text in the minibuffer as the argument, possibly ! 1073: completing first as described below ! 1074: (`minibuffer-complete-and-exit'). ! 1075: ! 1076: `?' ! 1077: Print a list of all possible completions of the text in the ! 1078: minibuffer (`minibuffer-list-completions'). ! 1079: ! 1080: SPC completes much like TAB, but never goes beyond the next hyphen ! 1081: or space. If you have `auto-f' in the minibuffer and type SPC, it ! 1082: finds that the completion is `auto-fill-mode', but it stops completing ! 1083: after `fill-'. This gives `auto-fill-'. Another SPC at this point ! 1084: completes all the way to `auto-fill-mode'. SPC in the minibuffer runs ! 1085: the function `minibuffer-complete-word' when completion is available. ! 1086: ! 1087: There are three different ways that RET can work in completing ! 1088: minibuffers, depending on how the argument will be used. ! 1089: ! 1090: * "Strict" completion is used when it is meaningless to give any ! 1091: argument except one of the known alternatives. For example, when ! 1092: `C-x k' reads the name of a buffer to kill, it is meaningless to ! 1093: give anything but the name of an existing buffer. In strict ! 1094: completion, RET refuses to exit if the text in the minibuffer does ! 1095: not complete to an exact match. ! 1096: ! 1097: * "Cautious" completion is similar to strict completion, except that ! 1098: RET exits only if the text was an exact match already, not needing ! 1099: completion. If the text is not an exact match, RET does not exit, ! 1100: but it does complete the text. If it completes to an exact match, ! 1101: a second RET will exit. ! 1102: ! 1103: Cautious completion is used for reading file names for files that ! 1104: must already exist. ! 1105: ! 1106: * "Permissive" completion is used when any string whatever is ! 1107: meaningful, and the list of completion alternatives is just a ! 1108: guide. For example, when `C-x C-f' reads the name of a file to ! 1109: visit, any file name is allowed, in case you want to create a ! 1110: file. In permissive completion, RET takes the text in the ! 1111: minibuffer exactly as given, without completing it. ! 1112: ! 1113: The completion commands display a list of all possible completions ! 1114: in a window whenever there is more than one possibility for the very ! 1115: next character. Also, typing `?' explicitly requests such a list. The ! 1116: list of completions counts as help text, so `C-M-v' typed in the ! 1117: minibuffer scrolls the list. ! 1118: ! 1119: When completion is done on file names, certain file names are usually ! 1120: ignored. The variable `completion-ignored-extensions' contains a list ! 1121: of strings; a file whose name ends in any of those strings is ignored ! 1122: as a possible completion. The standard value of this variable has ! 1123: several elements including `".o"', `".elc"', `".dvi"' and `"~"'. The ! 1124: effect is that, for example, `foo' can complete to `foo.c' even though ! 1125: `foo.o' exists as well. If the only possible completions are files ! 1126: that end in "ignored" strings, then they are not ignored. ! 1127: ! 1128: Normally, a completion command that finds the next character is ! 1129: undetermined automatically displays a list of all possible completions. ! 1130: If the variable `completion-auto-help' is set to `nil', this does not ! 1131: happen, and you must type `?' to display the possible completions. ! 1132: ! 1133:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.