|
|
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: Words, Next: Sentences, Prev: Text Mode, Up: Text ! 27: ! 28: Words ! 29: ===== ! 30: ! 31: Emacs has commands for moving over or operating on words. By ! 32: convention, the keys for them are all `Meta-' characters. ! 33: ! 34: `M-f' ! 35: Move forward over a word (`forward-word'). ! 36: ! 37: `M-b' ! 38: Move backward over a word (`backward-word'). ! 39: ! 40: `M-d' ! 41: Kill up to the end of a word (`kill-word'). ! 42: ! 43: `M-DEL' ! 44: Kill back to the beginning of a word (`backward-kill-word'). ! 45: ! 46: `M-@' ! 47: Mark the end of the next word (`mark-word'). ! 48: ! 49: `M-t' ! 50: Transpose two words; drag a word forward or backward across other ! 51: words (`transpose-words'). ! 52: ! 53: Notice how these keys form a series that parallels the ! 54: character-based `C-f', `C-b', `C-d', `C-t' and DEL. `M-@' is related ! 55: to `C-@', which is an alias for `C-SPC'. ! 56: ! 57: The commands `Meta-f' (`forward-word') and `Meta-b' ! 58: (`backward-word') move forward and backward over words. They are thus ! 59: analogous to `Control-f' and `Control-b', which move over single ! 60: characters. Like their `Control-' analogues, `Meta-f' and `Meta-b' ! 61: move several words if given an argument. `Meta-f' with a negative ! 62: argument moves backward, and `Meta-b' with a negative argument moves ! 63: forward. Forward motion stops right after the last letter of the word, ! 64: while backward motion stops right before the first letter. ! 65: ! 66: `Meta-d' (`kill-word') kills the word after point. To be precise, ! 67: it kills everything from point to the place `Meta-f' would move to. ! 68: Thus, if point is in the middle of a word, `Meta-d' kills just the part ! 69: after point. If some punctuation comes between point and the next ! 70: word, it is killed along with the word. (If you wish to kill only the ! 71: next word but not the punctuation before it, simply do `Meta-f' to get ! 72: the end, and kill the word backwards with `Meta-DEL'.) `Meta-d' takes ! 73: arguments just like `Meta-f'. ! 74: ! 75: `Meta-DEL' (`backward-kill-word') kills the word before point. It ! 76: kills everything from point back to where `Meta-b' would move to. If ! 77: point is after the space in `FOO, BAR', then `FOO, ' is killed. (If ! 78: you wish to kill just `FOO', do `Meta-b Meta-d' instead of `Meta-DEL'.) ! 79: ! 80: `Meta-t' (`transpose-words') exchanges the word before or containing ! 81: point with the following word. The delimiter characters between the ! 82: words do not move. For example, `FOO, BAR' transposes into `BAR, FOO' ! 83: rather than `BAR FOO,'. *Note Transpose::, for more on transposition ! 84: and on arguments to transposition commands. ! 85: ! 86: To operate on the next N words with an operation which applies ! 87: between point and mark, you can either set the mark at point and then ! 88: move over the words, or you can use the command `Meta-@' (`mark-word') ! 89: which does not move point, but sets the mark where `Meta-f' would move ! 90: to. It can be given arguments just like `Meta-f'. ! 91: ! 92: The word commands' understanding of syntax is completely controlled ! 93: by the syntax table. Any character can, for example, be declared to be ! 94: a word delimiter. *Note Syntax::. ! 95: ! 96: ! 97: File: emacs, Node: Sentences, Next: Paragraphs, Prev: Words, Up: Text ! 98: ! 99: Sentences ! 100: ========= ! 101: ! 102: The Emacs commands for manipulating sentences and paragraphs are ! 103: mostly on `Meta-' keys, so as to be like the word-handling commands. ! 104: ! 105: `M-a' ! 106: Move back to the beginning of the sentence ! 107: (`backward-sentence'). ! 108: ! 109: `M-e' ! 110: Move forward to the end of the sentence (`forward-sentence'). ! 111: ! 112: `M-k' ! 113: Kill forward to the end of the sentence (`kill-sentence'). ! 114: ! 115: `C-x DEL' ! 116: Kill back to the beginning of the sentence ! 117: (`backward-kill-sentence'). ! 118: ! 119: The commands `Meta-a' and `Meta-e' (`backward-sentence' and ! 120: `forward-sentence') move to the beginning and end of the current ! 121: sentence, respectively. They were chosen to resemble `Control-a' and ! 122: `Control-e', which move to the beginning and end of a line. Unlike ! 123: them, `Meta-a' and `Meta-e' if repeated or given numeric arguments move ! 124: over successive sentences. Emacs assumes that the typist's convention ! 125: is followed, and thus considers a sentence to end wherever there is a ! 126: `.', `?' or `!' followed by the end of a line or two spaces, with any ! 127: number of `)', `]', `'', or `"' characters allowed in between. A ! 128: sentence also begins or ends wherever a paragraph begins or ends. ! 129: ! 130: Neither `M-a' nor `M-e' moves past the newline or spaces beyond the ! 131: sentence edge at which it is stopping. ! 132: ! 133: Just as `C-a' and `C-e' have a kill command, `C-k', to go with them, ! 134: so `M-a' and `M-e' have a corresponding kill command `M-k' ! 135: (`kill-sentence') which kills from point to the end of the sentence. ! 136: With minus one as an argument it kills back to the beginning of the ! 137: sentence. Larger arguments serve as a repeat count. ! 138: ! 139: There is a special command, `C-x DEL' (`backward-kill-sentence') for ! 140: killing back to the beginning of a sentence, because this is useful ! 141: when you change your mind in the middle of composing text. ! 142: ! 143: The variable `sentence-end' controls recognition of the end of a ! 144: sentence. It is a regexp that matches the last few characters of a ! 145: sentence, together with the whitespace following the sentence. Its ! 146: normal value is ! 147: ! 148: "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*" ! 149: ! 150: This example is explained in the section on regexps. *Note Regexps::. ! 151: ! 152: ! 153: File: emacs, Node: Paragraphs, Next: Pages, Prev: Sentences, Up: Text ! 154: ! 155: Paragraphs ! 156: ========== ! 157: ! 158: The Emacs commands for manipulating paragraphs are also `Meta-' keys. ! 159: ! 160: `M-[' ! 161: Move back to previous paragraph beginning ! 162: (`backward-paragraph'). ! 163: ! 164: `M-]' ! 165: Move forward to next paragraph end (`forward-paragraph'). ! 166: ! 167: `M-h' ! 168: Put point and mark around this or next paragraph ! 169: (`mark-paragraph'). ! 170: ! 171: `Meta-[' moves to the beginning of the current or previous paragraph, ! 172: while `Meta-]' moves to the end of the current or next paragraph. Blank ! 173: lines and text formatter command lines separate paragraphs and are not ! 174: part of any paragraph. Also, an indented line starts a new paragraph. ! 175: ! 176: In major modes for programs (as opposed to Text mode), paragraphs ! 177: begin and end only at blank lines. This makes the paragraph commands ! 178: continue to be useful even though there are no paragraphs per se. ! 179: ! 180: When there is a fill prefix, then paragraphs are delimited by all ! 181: lines which don't start with the fill prefix. *Note Filling::. ! 182: ! 183: When you wish to operate on a paragraph, you can use the command ! 184: `Meta-h' (`mark-paragraph') to set the region around it. This command ! 185: puts point at the beginning and mark at the end of the paragraph point ! 186: was in. If point is between paragraphs (in a run of blank lines, or at ! 187: a boundary), the paragraph following point is surrounded by point and ! 188: mark. If there are blank lines preceding the first line of the ! 189: paragraph, one of these blank lines is included in the region. Thus, ! 190: for example, `M-h C-w' kills the paragraph around or after point. ! 191: ! 192: The precise definition of a paragraph boundary is controlled by the ! 193: two variables `paragraph-separate' and `paragraph-start'. The value of ! 194: `paragraph-start' is a regexp that should match any line that either ! 195: starts or separates paragraphs. The value of `paragraph-separate' is ! 196: another regexp that should match only lines that separate paragraphs ! 197: without being part of any paragraph. Lines that start a new paragraph ! 198: and are contained in it must match both regexps. For example, normally ! 199: `paragraph-start' is `"^[ \t\n\f]"' and `paragraph-separate' is ! 200: `"^[ \t\f]*$"'. ! 201: ! 202: Normally it is desirable for page boundaries to separate paragraphs. ! 203: The default values of these variables recognize the usual separator for ! 204: pages. ! 205: ! 206: ! 207: File: emacs, Node: Pages, Next: Filling, Prev: Paragraphs, Up: Text ! 208: ! 209: Pages ! 210: ===== ! 211: ! 212: Files are often thought of as divided into "pages" by the "formfeed" ! 213: character (ASCII Control-L, octal code 014). For example, if a file is ! 214: printed on a line printer, each page of the file, in this sense, will ! 215: start on a new page of paper. Emacs treats a page-separator character ! 216: just like any other character. It can be inserted with `C-q C-l', or ! 217: deleted with DEL. Thus, you are free to paginate your file or not. ! 218: However, since pages are often meaningful divisions of the file, ! 219: commands are provided to move over them and operate on them. ! 220: ! 221: `C-x [' ! 222: Move point to previous page boundary (`backward-page'). ! 223: ! 224: `C-x ]' ! 225: Move point to next page boundary (`forward-page'). ! 226: ! 227: `C-x C-p' ! 228: Put point and mark around this page (or another page) ! 229: (`mark-page'). ! 230: ! 231: `C-x l' ! 232: Count the lines in this page (`count-lines-page'). ! 233: ! 234: The `C-x [' (`backward-page') command moves point to immediately ! 235: after the previous page delimiter. If point is already right after a ! 236: page delimiter, it skips that one and stops at the previous one. A ! 237: numeric argument serves as a repeat count. The `C-x ]' (`forward-page') ! 238: command moves forward past the next page delimiter. ! 239: ! 240: The `C-x C-p' command (`mark-page') puts point at the beginning of ! 241: the current page and the mark at the end. The page delimiter at the end ! 242: is included (the mark follows it). The page delimiter at the front is ! 243: excluded (point follows it). This command can be followed by `C-w' to ! 244: kill a page which is to be moved elsewhere. If it is inserted after a ! 245: page delimiter, at a place where `C-x ]' or `C-x [' would take you, then ! 246: the page will be properly delimited before and after once again. ! 247: ! 248: A numeric argument to `C-x C-p' is used to specify which page to go ! 249: to, relative to the current one. Zero means the current page. One ! 250: means the next page, and -1 means the previous one. ! 251: ! 252: The `C-x l' command (`count-lines-page') is good for deciding where ! 253: to break a page in two. It prints in the echo area the total number of ! 254: lines in the current page, and then divides it up into those preceding ! 255: the current line and those following, as in ! 256: ! 257: Page has 96 (72+25) lines ! 258: ! 259: Notice that the sum is off by one; this is correct if point is not at ! 260: the beginning of a line. ! 261: ! 262: The variable `page-delimiter' should have as its value a regexp that ! 263: matches the beginning of a line that separates pages. This is what ! 264: defines where pages begin. The normal value of this variable is ! 265: `"^\f"', which matches a formfeed character at the beginning of a line. ! 266: ! 267: ! 268: File: emacs, Node: Filling, Next: Case, Prev: Pages, Up: Text ! 269: ! 270: Filling Text ! 271: ============ ! 272: ! 273: With Auto Fill mode, text can be "filled" (broken up into lines that ! 274: fit in a specified width) as you insert it. If you alter existing text ! 275: it may no longer be properly filled; then explicit commands for filling ! 276: can be used. (Filling is sometimes called "wrapping" in the ! 277: terminology used for other text editors, but we don't use that term, ! 278: because it could just as well refer to the continuation of long lines ! 279: which happens in Emacs if you *don't* fill them.) ! 280: ! 281: * Menu: ! 282: ! 283: * Auto Fill:: Auto Fill mode breaks long lines automatically. ! 284: * Fill Commands:: Commands to refill paragraphs and center lines. ! 285: * Fill Prefix:: Filling when every line is indented or in a comment, etc. ! 286: ! 287: ! 288: File: emacs, Node: Auto Fill, Next: Fill Commands, Prev: Filling, Up: Filling ! 289: ! 290: Auto Fill Mode ! 291: -------------- ! 292: ! 293: "Auto Fill" mode is a minor mode in which lines are broken ! 294: automatically when they become too wide. Breaking happens only when ! 295: you type a SPC or RET. ! 296: ! 297: `M-x auto-fill-mode' ! 298: Enable or disable Auto Fill mode. ! 299: ! 300: `SPC' ! 301: `RET' ! 302: In Auto Fill mode, break lines when appropriate. ! 303: ! 304: `M-x auto-fill-mode' turns Auto Fill mode on if it was off, or off if ! 305: it was on. With a positive numeric argument it always turns Auto Fill ! 306: mode on, and with a negative argument always turns it off. You can see ! 307: when Auto Fill mode is in effect by the presence of the word `Fill' in ! 308: the mode line, inside the parentheses. Auto Fill mode is a minor mode, ! 309: turned on or off for each buffer individually. *Note Minor Modes::. ! 310: ! 311: In Auto Fill mode, lines are broken automatically at spaces when ! 312: they get longer than the desired width. Line breaking and ! 313: rearrangement takes place only when you type SPC or RET. If you wish ! 314: to insert a space or newline without permitting line-breaking, type ! 315: `C-q SPC' or `C-q LFD' (recall that a newline is really a linefeed). ! 316: Also, `C-o' inserts a newline without line breaking. ! 317: ! 318: Auto Fill mode works well with Lisp mode, because when it makes a new ! 319: line in Lisp mode it indents that line with TAB. If a line ending in a ! 320: comment gets too long, the text of the comment is split into two ! 321: comment lines. Optionally new comment delimiters are inserted at the ! 322: end of the first line and the beginning of the second so that each line ! 323: is a separate comment; the variable `comment-multi-line' controls the ! 324: choice (*note Comments::.). ! 325: ! 326: Auto Fill mode does not refill entire paragraphs. It can break ! 327: lines but cannot merge lines. So editing in the middle of a paragraph ! 328: can result in a paragraph that is not correctly filled. The easiest ! 329: way to make the paragraph properly filled again is usually with the ! 330: explicit fill commands. ! 331: ! 332: Many users like Auto Fill mode and want to use it in all text files. ! 333: The section on init files says how to arrange this permanently for ! 334: yourself. *Note Init File::. ! 335: ! 336: ! 337: File: emacs, Node: Fill Commands, Next: Fill Prefix, Prev: Auto Fill, Up: Filling ! 338: ! 339: Explicit Fill Commands ! 340: ---------------------- ! 341: ! 342: `M-q' ! 343: Fill current paragraph (`fill-paragraph'). ! 344: ! 345: `M-g' ! 346: Fill each paragraph in the region (`fill-region'). ! 347: ! 348: `C-x f' ! 349: Set the fill column (`set-fill-column'). ! 350: ! 351: `M-x fill-region-as-paragraph.' ! 352: Fill the region, considering it as one paragraph. ! 353: ! 354: `M-s' ! 355: Center a line. ! 356: ! 357: To refill a paragraph, use the command `Meta-q' (`fill-paragraph'). ! 358: It causes the paragraph that point is inside, or the one after point if ! 359: point is between paragraphs, to be refilled. All the line-breaks are ! 360: removed, and then new ones are inserted where necessary. `M-q' can be ! 361: undone with `C-_'. *Note Undo::. ! 362: ! 363: To refill many paragraphs, use `M-g' (`fill-region'), which divides ! 364: the region into paragraphs and fills each of them. ! 365: ! 366: `Meta-q' and `Meta-g' use the same criteria as `Meta-h' for finding ! 367: paragraph boundaries (*note Paragraphs::.). For more control, you can ! 368: use `M-x fill-region-as-paragraph', which refills everything between ! 369: point and mark. This command recognizes no paragraph separators; it ! 370: deletes any blank lines found within the region to be filled. ! 371: ! 372: A numeric argument to `M-g' or `M-q' causes it to "justify" the text ! 373: as well as filling it. This means that extra spaces are inserted to ! 374: make the right margin line up exactly at the fill column. To remove the ! 375: extra spaces, use `M-q' or `M-g' with no argument. ! 376: ! 377: The command `Meta-s' (`center-line') centers the current line within ! 378: the current fill column. With an argument, it centers several lines ! 379: individually and moves past them. ! 380: ! 381: The maximum line width for filling is in the variable `fill-column'. ! 382: Altering the value of `fill-column' makes it local to the current ! 383: buffer; until that time, the default value is in effect. The default is ! 384: initially 70. *Note Locals::. ! 385: ! 386: The easiest way to set `fill-column' is to use the command `C-x f' ! 387: (`set-fill-column'). With no argument, it sets `fill-column' to the ! 388: current horizontal position of point. With a numeric argument, it uses ! 389: that as the new fill column. ! 390: ! 391: ! 392: File: emacs, Node: Fill Prefix, Prev: Fill Commands, Up: Filling ! 393: ! 394: The Fill Prefix ! 395: --------------- ! 396: ! 397: To fill a paragraph in which each line starts with a special marker ! 398: (which might be a few spaces, giving an indented paragraph), use the ! 399: "fill prefix" feature. The fill prefix is a string which Emacs expects ! 400: every line to start with, and which is not included in filling. ! 401: ! 402: `C-x .' ! 403: Set the fill prefix (`set-fill-prefix'). ! 404: ! 405: `M-q' ! 406: Fill a paragraph using current fill prefix (`fill-paragraph'). ! 407: ! 408: `M-x fill-individual-paragraphs' ! 409: Fill the region, considering each change of indentation as ! 410: starting a new paragraph. ! 411: ! 412: To specify a fill prefix, move to a line that starts with the desired ! 413: prefix, put point at the end of the prefix, and give the command ! 414: `C-x .' (`set-fill-prefix'). That's a period after the `C-x'. To turn ! 415: off the fill prefix, specify an empty prefix: type `C-x .' with point ! 416: at the beginning of a line. ! 417: ! 418: When a fill prefix is in effect, the fill commands remove the fill ! 419: prefix from each line before filling and insert it on each line after ! 420: filling. The fill prefix is also inserted on new lines made ! 421: automatically by Auto Fill mode. Lines that do not start with the fill ! 422: prefix are considered to start paragraphs, both in `M-q' and the ! 423: paragraph commands; this is just right if you are using paragraphs with ! 424: hanging indentation (every line indented except the first one). Lines ! 425: which are blank or indented once the prefix is removed also separate or ! 426: start paragraphs; this is what you want if you are writing ! 427: multi-paragraph comments with a comment delimiter on each line. ! 428: ! 429: The fill prefix is stored in the variable `fill-prefix'. Its value ! 430: is a string, or `nil' when there is no fill prefix. This is a ! 431: per-buffer variable; altering the variable affects only the current ! 432: buffer, but there is a default value which you can change as well. ! 433: *Note Locals::. ! 434: ! 435: Another way to use fill prefixes is through `M-x ! 436: fill-individual-paragraphs'. This function divides the region into ! 437: groups of consecutive lines with the same amount and kind of ! 438: indentation and fills each group as a paragraph using its indentation ! 439: as a fill prefix. ! 440: ! 441: ! 442: File: emacs, Node: Case, Prev: Filling, Up: Text ! 443: ! 444: Case Conversion Commands ! 445: ======================== ! 446: ! 447: Emacs has commands for converting either a single word or any ! 448: arbitrary range of text to upper case or to lower case. ! 449: ! 450: `M-l' ! 451: Convert following word to lower case (`downcase-word'). ! 452: ! 453: `M-u' ! 454: Convert following word to upper case (`upcase-word'). ! 455: ! 456: `M-c' ! 457: Capitalize the following word (`capitalize-word'). ! 458: ! 459: `C-x C-l' ! 460: Convert region to lower case (`downcase-region'). ! 461: ! 462: `C-x C-u' ! 463: Convert region to upper case (`upcase-region'). ! 464: ! 465: The word conversion commands are the most useful. `Meta-l' ! 466: (`downcase-word') converts the word after point to lower case, moving ! 467: past it. Thus, repeating `Meta-l' converts successive words. `Meta-u' ! 468: (`upcase-word') converts to all capitals instead, while `Meta-c' ! 469: (`capitalize-word') puts the letter following point into upper case and ! 470: the rest of the letters in the word into lower case. All these ! 471: commands convert several words at once if given an argument. They are ! 472: especially convenient for converting a large amount of text from all ! 473: upper case to mixed case, because you can move through the text using ! 474: `M-l', `M-u' or `M-c' on each word as appropriate, occasionally using ! 475: `M-f' instead to skip a word. ! 476: ! 477: When given a negative argument, the word case conversion commands ! 478: apply to the appropriate number of words before point, but do not move ! 479: point. This is convenient when you have just typed a word in the wrong ! 480: case: you can give the case conversion command and continue typing. ! 481: ! 482: If a word case conversion command is given in the middle of a word, ! 483: it applies only to the part of the word which follows point. This is ! 484: just like what `Meta-d' (`kill-word') does. With a negative argument, ! 485: case conversion applies only to the part of the word before point. ! 486: ! 487: The other case conversion commands are `C-x C-u' (`upcase-region') ! 488: and `C-x C-l' (`downcase-region'), which convert everything between ! 489: point and mark to the specified case. Point and mark do not move. ! 490: ! 491: ! 492: File: emacs, Node: Programs, Next: Compiling/Testing, Prev: Text, Up: Top ! 493: ! 494: Editing Programs ! 495: **************** ! 496: ! 497: Emacs has many commands designed to understand the syntax of ! 498: programming languages such as Lisp and C. These commands can ! 499: ! 500: * Move over or kill balanced expressions or "sexps" (*note Lists::.). ! 501: ! 502: * Move over or mark top-level balanced expressions ("defuns", in ! 503: Lisp; functions, in C). ! 504: ! 505: * Show how parentheses balance (*note Matching::.). ! 506: ! 507: * Insert, kill or align comments (*note Comments::.). ! 508: ! 509: * Follow the usual indentation conventions of the language (*note ! 510: Grinding::.). ! 511: ! 512: The commands for words, sentences and paragraphs are very useful in ! 513: editing code even though their canonical application is for editing ! 514: human language text. Most symbols contain words (*note Words::.); ! 515: sentences can be found in strings and comments (*note Sentences::.). ! 516: Paragraphs per se are not present in code, but the paragraph commands ! 517: are useful anyway, because Lisp mode and C mode define paragraphs to ! 518: begin and end at blank lines (*note Paragraphs::.). Judicious use of ! 519: blank lines to make the program clearer will also provide interesting ! 520: chunks of text for the paragraph commands to work on. ! 521: ! 522: The selective display feature is useful for looking at the overall ! 523: structure of a function (*note Selective Display::.). This feature ! 524: causes only the lines that are indented less than a specified amount to ! 525: appear on the screen. ! 526: ! 527: * Menu: ! 528: ! 529: * Program Modes:: Major modes for editing programs. ! 530: * Lists:: Expressions with balanced parentheses. ! 531: There are editing commands to operate on them. ! 532: * Defuns:: Each program is made up of separate functions. ! 533: There are editing commands to operate on them. ! 534: * Grinding:: Adjusting indentation to show the nesting. ! 535: * Matching:: Insertion of a close-delimiter flashes matching open. ! 536: * Comments:: Inserting, killing and aligning comments. ! 537: * Macro Expansion:: How to see the results of C macro expansion. ! 538: * Balanced Editing:: Inserting two matching parentheses at once, etc. ! 539: * Lisp Completion:: Completion on symbol names in Lisp code. ! 540: * Documentation:: Getting documentation of functions you plan to call. ! 541: * Change Log:: Maintaining a change history for your program. ! 542: * Tags:: Go direct to any function in your program in one ! 543: command. Tags remembers which file it is in. ! 544: * Fortran:: Fortran mode and its special features. ! 545: ! 546: ! 547: File: emacs, Node: Program Modes, Next: Lists, Prev: Programs, Up: Programs ! 548: ! 549: Major Modes for Programming Languages ! 550: ===================================== ! 551: ! 552: Emacs has major modes for the programming languages Lisp, Scheme (a ! 553: variant of Lisp), C, Fortran and Muddle. Ideally, a major mode should ! 554: be implemented for each programming language that you might want to ! 555: edit with Emacs; but often the mode for one language can serve for other ! 556: syntactically similar languages. The language modes that exist are ! 557: those that someone decided to take the trouble to write. ! 558: ! 559: There are several forms of Lisp mode, which differ in the way they ! 560: interface to Lisp execution. *Note Lisp Modes::. ! 561: ! 562: Each of the programming language modes defines the TAB key to run an ! 563: indentation function that knows the indentation conventions of that ! 564: language and updates the current line's indentation accordingly. For ! 565: example, in C mode TAB is bound to `c-indent-line'. LFD is normally ! 566: defined to do RET followed by TAB; thus, it too indents in a ! 567: mode-specific fashion. ! 568: ! 569: In most programming languages, indentation is likely to vary from ! 570: line to line. So the major modes for those languages rebind DEL to ! 571: treat a tab as if it were the equivalent number of spaces (using the ! 572: command `backward-delete-char-untabify'). This makes it possible to ! 573: rub out indentation one column at a time without worrying whether it is ! 574: made up of spaces or tabs. Use `C-b C-d' to delete a tab character ! 575: before point, in these modes. ! 576: ! 577: Programming language modes define paragraphs to be separated only by ! 578: blank lines, so that the paragraph commands remain useful. Auto Fill ! 579: mode, if enabled in a programming language major mode, indents the new ! 580: lines which it creates. ! 581: ! 582: Turning on a major mode calls a user-supplied function called the ! 583: "mode hook", which is the value of a Lisp variable. For example, ! 584: turning on C mode calls the value of the variable `c-mode-hook' if that ! 585: value exists and is non-`nil'. Mode hook variables for other ! 586: programming language modes include `lisp-mode-hook', ! 587: `emacs-lisp-mode-hook', `lisp-interaction-mode-hook', ! 588: `scheme-mode-hook' and `muddle-mode-hook'. The mode hook function ! 589: receives no arguments. ! 590: ! 591: ! 592: File: emacs, Node: Lists, Next: Defuns, Prev: Program Modes, Up: Programs ! 593: ! 594: Lists and Sexps ! 595: =============== ! 596: ! 597: By convention, Emacs keys for dealing with balanced expressions are ! 598: usually `Control-Meta-' characters. They tend to be analogous in ! 599: function to their `Control-' and `Meta-' equivalents. These commands ! 600: are usually thought of as pertaining to expressions in programming ! 601: languages, but can be useful with any language in which some sort of ! 602: parentheses exist (including English). ! 603: ! 604: These commands fall into two classes. Some deal only with "lists" ! 605: (parenthetical groupings). They see nothing except parentheses, ! 606: brackets, braces (whichever ones must balance in the language you are ! 607: working with), and escape characters that might be used to quote those. ! 608: ! 609: The other commands deal with expressions or "sexps". The word `sexp' ! 610: is derived from "s-expression", the ancient term for an expression in ! 611: Lisp. But in Emacs, the notion of `sexp' is not limited to Lisp. It ! 612: refers to an expression in whatever language your program is written in. ! 613: Each programming language has its own major mode, which customizes the ! 614: syntax tables so that expressions in that language count as sexps. ! 615: ! 616: Sexps typically include symbols, numbers, and string constants, as ! 617: well as anything contained in parentheses, brackets or braces. ! 618: ! 619: In languages that use prefix and infix operators, such as C, it is ! 620: not possible for all expressions to be sexps. For example, C mode does ! 621: not recognize `foo + bar' as a sexp, even though it is a C expression; ! 622: it recognizes `foo' as one sexp and `bar' as another, with the `+' as ! 623: punctuation between them. This is a fundamental ambiguity: both `foo + ! 624: bar' and `foo' are legitimate choices for the sexp to move over if ! 625: point is at the `f'. Note that `(foo + bar)' is a sexp in C mode. ! 626: ! 627: Some languages have obscure forms of syntax for expressions that ! 628: nobody has bothered to make Emacs understand properly. ! 629: ! 630: `C-M-f' ! 631: Move forward over a sexp (`forward-sexp'). ! 632: ! 633: `C-M-b' ! 634: Move backward over a sexp (`backward-sexp'). ! 635: ! 636: `C-M-k' ! 637: Kill sexp forward (`kill-sexp'). ! 638: ! 639: `C-M-u' ! 640: Move up and backward in list structure (`backward-up-list'). ! 641: ! 642: `C-M-d' ! 643: Move down and forward in list structure (`down-list'). ! 644: ! 645: `C-M-n' ! 646: Move forward over a list (`forward-list'). ! 647: ! 648: `C-M-p' ! 649: Move backward over a list (`backward-list'). ! 650: ! 651: `C-M-t' ! 652: Transpose expressions (`transpose-sexps'). ! 653: ! 654: `C-M-@' ! 655: Put mark after following expression (`mark-sexp'). ! 656: ! 657: To move forward over a sexp, use `C-M-f' (`forward-sexp'). If the ! 658: first significant character after point is an opening delimiter (`(' in ! 659: Lisp; `(', `[' or `{' in C), `C-M-f' moves past the matching closing ! 660: delimiter. If the character begins a symbol, string, or number, ! 661: `C-M-f' moves over that. If the character after point is a closing ! 662: delimiter, `C-M-f' gets an error. ! 663: ! 664: The command `C-M-b' (`backward-sexp') moves backward over a sexp. ! 665: The detailed rules are like those above for `C-M-f', but with ! 666: directions reversed. If there are any prefix characters (singlequote, ! 667: backquote and comma, in Lisp) preceding the sexp, `C-M-b' moves back ! 668: over them as well. ! 669: ! 670: `C-M-f' or `C-M-b' with an argument repeats that operation the ! 671: specified number of times; with a negative argument, it moves in the ! 672: opposite direction. ! 673: ! 674: The sexp commands move across comments as if they were whitespace, in ! 675: languages such as C where the comment-terminator can be recognized. In ! 676: Lisp, and other languages where comments run until the end of a line, ! 677: it is very difficult to ignore comments when parsing backwards; ! 678: therefore, in such languages the sexp commands treat the text of ! 679: comments as if it were code. ! 680: ! 681: Killing a sexp at a time can be done with `C-M-k' (`kill-sexp'). ! 682: `C-M-k' kills the characters that `C-M-f' would move over. ! 683: ! 684: The "list commands" move over lists like the sexp commands but skip ! 685: blithely over any number of other kinds of sexps (symbols, strings, ! 686: etc). They are `C-M-n' (`forward-list') and `C-M-p' (`backward-list'). ! 687: The main reason they are useful is that they usually ignore comments ! 688: (since the comments usually do not contain any lists). ! 689: ! 690: `C-M-n' and `C-M-p' stay at the same level in parentheses, when ! 691: that's possible. To move up one (or N) levels, use `C-M-u' ! 692: (`backward-up-list'). `C-M-u' moves backward up past one unmatched ! 693: opening delimiter. A positive argument serves as a repeat count; a ! 694: negative argument reverses direction of motion and also requests ! 695: repetition, so it moves forward and up one or more levels. ! 696: ! 697: To move down in list structure, use `C-M-d' (`down-list'). In Lisp ! 698: mode, where `(' is the only opening delimiter, this is nearly the same ! 699: as searching for a `('. An argument specifies the number of levels of ! 700: parentheses to go down. ! 701: ! 702: A somewhat random-sounding command which is nevertheless easy to use ! 703: is `C-M-t' (`transpose-sexps'), which drags the previous sexp across ! 704: the next one. An argument serves as a repeat count, and a negative ! 705: argument drags backwards (thus canceling out the effect of `C-M-t' with ! 706: a positive argument). An argument of zero, rather than doing nothing, ! 707: transposes the sexps ending after point and the mark. ! 708: ! 709: To make the region be the next sexp in the buffer, use `C-M-@' ! 710: (`mark-sexp') which sets mark at the same place that `C-M-f' would move ! 711: to. `C-M-@' takes arguments like `C-M-f'. In particular, a negative ! 712: argument is useful for putting the mark at the beginning of the ! 713: previous sexp. ! 714: ! 715: The list and sexp commands' understanding of syntax is completely ! 716: controlled by the syntax table. Any character can, for example, be ! 717: declared to be an opening delimiter and act like an open parenthesis. ! 718: *Note Syntax::. ! 719: ! 720: ! 721: File: emacs, Node: Defuns, Next: Grinding, Prev: Lists, Up: Programs ! 722: ! 723: Defuns ! 724: ====== ! 725: ! 726: In Emacs, a parenthetical grouping at the top level in the buffer is ! 727: called a "defun". The name derives from the fact that most top-level ! 728: lists in a Lisp file are instances of the special form `defun', but any ! 729: top-level parenthetical grouping counts as a defun in Emacs parlance ! 730: regardless of what its contents are, and regardless of the programming ! 731: language in use. For example, in C, the body of a function definition ! 732: is a defun. ! 733: ! 734: `C-M-a' ! 735: Move to beginning of current or preceding defun ! 736: (`beginning-of-defun'). ! 737: ! 738: `C-M-e' ! 739: Move to end of current or following defun (`end-of-defun'). ! 740: ! 741: `C-M-h' ! 742: Put region around whole current or following defun (`mark-defun'). ! 743: ! 744: The commands to move to the beginning and end of the current defun ! 745: are `C-M-a' (`beginning-of-defun') and `C-M-e' (`end-of-defun'). ! 746: ! 747: If you wish to operate on the current defun, use `C-M-h' ! 748: (`mark-defun') which puts point at the beginning and mark at the end of ! 749: the current or next defun. For example, this is the easiest way to get ! 750: ready to move the defun to a different place in the text. In C mode, ! 751: `C-M-h' runs the function `mark-c-function', which is almost the same ! 752: as `mark-defun'; the difference is that it backs up over the argument ! 753: declarations, function name and returned data type so that the entire C ! 754: function is inside the region. ! 755: ! 756: Emacs assumes that any open-parenthesis found in the leftmost column ! 757: is the start of a defun. Therefore, never put an open-parenthesis at ! 758: the left margin in a Lisp file unless it is the start of a top level ! 759: list. Never put an open-brace or other opening delimiter at the ! 760: beginning of a line of C code unless it starts the body of a function. ! 761: The most likely problem case is when you want an opening delimiter at ! 762: the start of a line inside a string. To avoid trouble, put an escape ! 763: character (`\', in C and Emacs Lisp, `/' in some other Lisp dialects) ! 764: before the opening delimiter. It will not affect the contents of the ! 765: string. ! 766: ! 767: In the remotest past, the original Emacs found defuns by moving ! 768: upward a level of parentheses until there were no more levels to go up. ! 769: This always required scanning all the way back to the beginning of the ! 770: buffer, even for a small function. To speed up the operation, Emacs ! 771: was changed to assume that any `(' (or other character assigned the ! 772: syntactic class of opening-delimiter) at the left margin is the start ! 773: of a defun. This heuristic was nearly always right and avoided the ! 774: costly scan; however, it mandated the convention described above. ! 775: ! 776: ! 777: File: emacs, Node: Grinding, Next: Matching, Prev: Defuns, Up: Programs ! 778: ! 779: Indentation for Programs ! 780: ======================== ! 781: ! 782: The best way to keep a program properly indented ("ground") is to use ! 783: Emacs to re-indent it as you change it. Emacs has commands to indent ! 784: properly either a single line, a specified number of lines, or all of ! 785: the lines inside a single parenthetical grouping. ! 786: ! 787: * Menu: ! 788: ! 789: * Basic Indent:: ! 790: * Multi-line Indent:: Commands to reindent many lines at once. ! 791: * Lisp Indent:: Specifying how each Lisp function should be indented. ! 792: * C Indent:: Choosing an indentation style for C code. ! 793: ! 794: ! 795: File: emacs, Node: Basic Indent, Next: Multi-line Indent, Prev: Grinding, Up: Grinding ! 796: ! 797: Basic Program Indentation Commands ! 798: ---------------------------------- ! 799: ! 800: `TAB' ! 801: Adjust indentation of current line. ! 802: ! 803: `LFD' ! 804: Equivalent to RET followed by TAB (`newline-and-indent'). ! 805: ! 806: The basic indentation command is TAB, which gives the current line ! 807: the correct indentation as determined from the previous lines. The ! 808: function that TAB runs depends on the major mode; it is ! 809: `lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc. These ! 810: functions understand different syntaxes for different languages, but ! 811: they all do about the same thing. TAB in any programming language ! 812: major mode inserts or deletes whitespace at the beginning of the ! 813: current line, independent of where point is in the line. If point is ! 814: inside the whitespace at the beginning of the line, TAB leaves it at ! 815: the end of that whitespace; otherwise, TAB leaves point fixed with ! 816: respect to the characters around it. ! 817: ! 818: Use `C-q TAB' to insert a tab at point. ! 819: ! 820: When entering a large amount of new code, use LFD ! 821: (`newline-and-indent'), which is equivalent to a RET followed by a TAB. ! 822: LFD creates a blank line, and then gives it the appropriate ! 823: indentation. ! 824: ! 825: TAB indents the second and following lines of the body of a ! 826: parenthetical grouping each under the preceding one; therefore, if you ! 827: alter one line's indentation to be nonstandard, the lines below will ! 828: tend to follow it. This is the right behavior in cases where the ! 829: standard result of TAB is unaesthetic. ! 830: ! 831: Remember that an open-parenthesis, open-brace or other opening ! 832: delimiter at the left margin is assumed by Emacs (including the ! 833: indentation routines) to be the start of a function. Therefore, you ! 834: must never have an opening delimiter in column zero that is not the ! 835: beginning of a function, not even inside a string. This restriction is ! 836: vital for making the indentation commands fast; you must simply accept ! 837: it. *Note Defuns::, for more information on this. ! 838: ! 839: ! 840: File: emacs, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Grinding ! 841: ! 842: Indenting Several Lines ! 843: ----------------------- ! 844: ! 845: When you wish to re-indent several lines of code which have been ! 846: altered or moved to a different level in the list structure, you have ! 847: several commands available. ! 848: ! 849: `C-M-q' ! 850: Re-indent all the lines within one list (`indent-sexp'). ! 851: ! 852: `C-u TAB' ! 853: Shift an entire list rigidly sideways so that its first line is ! 854: properly indented. ! 855: ! 856: `C-M-\' ! 857: Re-indent all lines in the region (`indent-region'). ! 858: ! 859: You can re-indent the contents of a single list by positioning point ! 860: before the beginning of it and typing `C-M-q' (`indent-sexp' in Lisp ! 861: mode, `indent-c-exp' in C mode; also bound to other suitable functions ! 862: in other modes). The indentation of the line the sexp starts on is not ! 863: changed; therefore, only the relative indentation within the list, and ! 864: not its position, is changed. To correct the position as well, type a ! 865: TAB before the `C-M-q'. ! 866: ! 867: If the relative indentation within a list is correct but the ! 868: indentation of its beginning is not, go to the line the list begins on ! 869: and type `C-u TAB'. When TAB is given a numeric argument, it moves all ! 870: the lines in the grouping starting on the current line sideways the ! 871: same amount that the current line moves. It is clever, though, and ! 872: does not move lines that start inside strings, or C preprocessor lines ! 873: when in C mode. ! 874: ! 875: Another way to specify the range to be re-indented is with point and ! 876: mark. The command `C-M-\' (`indent-region') applies TAB to every line ! 877: whose first character is between point and mark. ! 878: ! 879: ! 880: File: emacs, Node: Lisp Indent, Next: C Indent, Prev: Multi-line Indent, Up: Grinding ! 881: ! 882: Customizing Lisp Indentation ! 883: ---------------------------- ! 884: ! 885: The indentation pattern for a Lisp expression can depend on the ! 886: function called by the expression. For each Lisp function, you can ! 887: choose among several predefined patterns of indentation, or define an ! 888: arbitrary one with a Lisp program. ! 889: ! 890: The standard pattern of indentation is as follows: the second line ! 891: of the expression is indented under the first argument, if that is on ! 892: the same line as the beginning of the expression; otherwise, the second ! 893: line is indented underneath the function name. Each following line is ! 894: indented under the previous line whose nesting depth is the same. ! 895: ! 896: If the variable `lisp-indent-offset' is non-`nil', it overrides the ! 897: usual indentation pattern for the second line of an expression, so that ! 898: such lines are always indented `lisp-indent-offset' more columns than ! 899: the containing list. ! 900: ! 901: The standard pattern is overridden for certain functions. Functions ! 902: whose names start with `def' always indent the second line by ! 903: `lisp-body-indention' extra columns beyond the open-parenthesis ! 904: starting the expression. ! 905: ! 906: The standard pattern can be overridden in various ways for individual ! 907: functions, according to the `lisp-indent-hook' property of the function ! 908: name. There are four possibilities for this property: ! 909: ! 910: `nil' ! 911: This is the same as no property; the standard indentation pattern ! 912: is used. ! 913: ! 914: `defun' ! 915: The pattern used for function names that start with `def' is used ! 916: for this function also. ! 917: ! 918: a number, NUMBER ! 919: The first NUMBER arguments of the function are "distinguished" ! 920: arguments; the rest are considered the "body" of the expression. ! 921: A line in the expression is indented according to whether the ! 922: first argument on it is distinguished or not. If the argument is ! 923: part of the body, the line is indented `lisp-body-indent' more ! 924: columns than the open-parenthesis starting the containing ! 925: expression. If the argument is distinguished and is either the ! 926: first or second argument, it is indented twice that many extra ! 927: columns. If the argument is distinguished and not the first or ! 928: second argument, the standard pattern is followed for that line. ! 929: ! 930: a symbol, SYMBOL ! 931: SYMBOL should be a function name; that function is called to ! 932: calculate the indentation of a line within this expression. The ! 933: function receives two arguments: ! 934: STATE ! 935: The value returned by `parse-partial-sexp' (a Lisp primitive ! 936: for indentation and nesting computation) when it parses up to ! 937: the beginning of this line. ! 938: ! 939: POS ! 940: The position at which the line being indented begins. ! 941: ! 942: It should return either a number, which is the number of columns of ! 943: indentation for that line, or a list whose CAR is such a number. ! 944: The difference between returning a number and returning a list is ! 945: that a number says that all following lines at the same nesting ! 946: level should be indented just like this one; a list says that ! 947: following lines might call for different indentations. This makes ! 948: a difference when the indentation is being computed by `C-M-q'; if ! 949: the value is a number, `C-M-q' need not recalculate indentation ! 950: for the following lines until the end of the list. ! 951: ! 952: ! 953: File: emacs, Node: C Indent, Prev: Lisp Indent, Up: Grinding ! 954: ! 955: Customizing C Indentation ! 956: ------------------------- ! 957: ! 958: Two variables control which commands perform C indentation and when. ! 959: ! 960: If `c-auto-newline' is non-`nil', newlines are inserted both before ! 961: and after braces that you insert, and after colons and semicolons. ! 962: Correct C indentation is done on all the lines that are made this way. ! 963: ! 964: If `c-tab-always-indent' is `nil', the TAB command in C mode does ! 965: indentation only if point is at the left margin or within the line's ! 966: indentation. If there is non-whitespace to the left of point, then TAB ! 967: just inserts a tab character in the buffer. Normally, this variable is ! 968: `t', and TAB always reindents the current line. ! 969: ! 970: C does not have anything analogous to particular function names for ! 971: which special forms of indentation are desirable. However, it has a ! 972: different need for customization facilities: many different styles of C ! 973: indentation are in common use. ! 974: ! 975: There are six variables you can set to control the style that Emacs C ! 976: mode will use. ! 977: ! 978: `c-indent-level' ! 979: Indentation of C statements within surrounding block. The ! 980: surrounding block's indentation is the indentation of the line on ! 981: which the open-brace appears. ! 982: ! 983: `c-continued-statement-offset' ! 984: Extra indentation given to a substatement, such as the then-clause ! 985: of an if or body of a while. ! 986: ! 987: `c-brace-offset' ! 988: Extra indentation for line if it starts with an open brace. ! 989: ! 990: `c-brace-imaginary-offset' ! 991: An open brace following other text is treated as if it were this ! 992: far to the right of the start of its line. ! 993: ! 994: `c-argdecl-indent' ! 995: Indentation level of declarations of C function arguments. ! 996: ! 997: `c-label-offset' ! 998: Extra indentation for line that is a label, or case or default. ! 999: ! 1000: The variable `c-indent-level' controls the indentation for C ! 1001: statements with respect to the surrounding block. In the example ! 1002: ! 1003: { ! 1004: foo (); ! 1005: ! 1006: the difference in indentation between the lines is `c-indent-level'. ! 1007: Its standard value is 2. ! 1008: ! 1009: If the open-brace beginning the compound statement is not at the ! 1010: beginning of its line, the `c-indent-level' is added to the indentation ! 1011: of the line, not the column of the open-brace. For example, ! 1012: ! 1013: if (losing) { ! 1014: do_this (); ! 1015: ! 1016: One popular indentation style is that which results from setting ! 1017: `c-indent-level' to 8 and putting open-braces at the end of a line in ! 1018: this way. I prefer to put the open-brace on a separate line. ! 1019: ! 1020: In fact, the value of the variable `c-brace-imaginary-offset' is ! 1021: also added to the indentation of such a statement. Normally this ! 1022: variable is zero. Think of this variable as the imaginary position of ! 1023: the open brace, relative to the first nonblank character on the line. ! 1024: By setting this variable to 4 and `c-indent-level' to 0, you can get ! 1025: this style: ! 1026: ! 1027: if (x == y) { ! 1028: do_it (); ! 1029: } ! 1030: ! 1031: When `c-indent-level' is zero, the statements inside most braces ! 1032: will line up right under the open brace. But there is an exception made ! 1033: for braces in column zero, such as surrounding a function's body. The ! 1034: statements just inside it do not go at column zero. Instead, ! 1035: `c-brace-offset' and `c-continued-statement-offset' (see below) are ! 1036: added to produce a typical offset between brace levels, and the ! 1037: statements are indented that far. ! 1038: ! 1039: `c-continued-statement-offset' controls the extra indentation for a ! 1040: line that starts within a statement (but not within parentheses or ! 1041: brackets). These lines are usually statements that are within other ! 1042: statements, such as the then-clauses of `if' statements and the bodies ! 1043: of `while' statements. This parameter is the difference in indentation ! 1044: between the two lines in ! 1045: ! 1046: if (x == y) ! 1047: do_it (); ! 1048: ! 1049: Its standard value is 2. Some popular indentation styles correspond to ! 1050: a value of zero for `c-continued-statement-offset'. ! 1051: ! 1052: `c-brace-offset' is the extra indentation given to a line that ! 1053: starts with an open-brace. Its standard value is zero; compare ! 1054: ! 1055: if (x == y) ! 1056: { ! 1057: ! 1058: with ! 1059: ! 1060: if (x == y) ! 1061: do_it (); ! 1062: ! 1063: if `c-brace-offset' were set to 4, the first example would become ! 1064: ! 1065: if (x == y) ! 1066: { ! 1067: ! 1068: `c-argdecl-indent' controls the indentation of declarations of the ! 1069: arguments of a C function. It is absolute: argument declarations ! 1070: receive exactly `c-argdecl-indent' spaces. The standard value is 5, ! 1071: resulting in code like this: ! 1072: ! 1073: char * ! 1074: index (string, c) ! 1075: char *string; ! 1076: int c; ! 1077: ! 1078: `c-label-offset' is the extra indentation given to a line that ! 1079: contains a label, a case statement, or a `default:' statement. Its ! 1080: standard value is -2, resulting in code like this ! 1081: ! 1082: switch (c) ! 1083: { ! 1084: case 'x': ! 1085: ! 1086: If `c-label-offset' were zero, the same code would be indented as ! 1087: ! 1088: switch (c) ! 1089: { ! 1090: case 'x': ! 1091: ! 1092: This example assumes that the other variables above also have their ! 1093: standard values. ! 1094: ! 1095: I strongly recommend that you try out the indentation style produced ! 1096: by the standard settings of these variables, together with putting open ! 1097: braces on separate lines. You can see how it looks in all the C source ! 1098: files of GNU Emacs. ! 1099: ! 1100: ! 1101: File: emacs, Node: Matching, Next: Comments, Prev: Grinding, Up: Programs ! 1102: ! 1103: Automatic Display Of Matching Parentheses ! 1104: ========================================= ! 1105: ! 1106: The Emacs parenthesis-matching feature is designed to show ! 1107: automatically how parentheses match in the text. Whenever a ! 1108: self-inserting character that is a closing delimiter is typed, the ! 1109: cursor moves momentarily to the location of the matching opening ! 1110: delimiter, provided that is on the screen. If it is not on the screen, ! 1111: some text starting with that opening delimiter is displayed in the echo ! 1112: area. Either way, you can tell what grouping is being closed off. ! 1113: ! 1114: In Lisp, automatic matching applies only to parentheses. In C, it ! 1115: applies to braces and brackets too. Emacs knows which characters to ! 1116: regard as matching delimiters based on the syntax table, which is set ! 1117: by the major mode. *Note Syntax::. ! 1118: ! 1119: If the opening delimiter and closing delimiter are mismatched--such ! 1120: as in `[x)'--a warning message is displayed in the echo area. The ! 1121: correct matches are specified in the syntax table. ! 1122: ! 1123: Two variables control parenthesis match display. ! 1124: `blink-matching-paren' turns the feature on or off; `nil' turns it off, ! 1125: but the default is `t' to turn match display on. ! 1126: `blink-matching-paren-distance' specifies how many characters back to ! 1127: search to find the matching opening delimiter. If the match is not ! 1128: found in that far, scanning stops, and nothing is displayed. This is ! 1129: to prevent scanning for the matching delimiter from wasting lots of ! 1130: time when there is no match. The default is 4000. ! 1131: ! 1132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.