|
|
1.1 ! root 1: Info file emacs, produced by texinfo-format-buffer -*-Text-*- ! 2: from file emacs.tex ! 3: ! 4: This file documents the GNU Emacs editor. ! 5: ! 6: Copyright (C) 1985, 1986 Richard M. Stallman. ! 7: ! 8: Permission is granted to make and distribute verbatim copies of ! 9: this manual provided the copyright notice and this permission notice ! 10: are preserved on all copies. ! 11: ! 12: Permission is granted to copy and distribute modified versions of this ! 13: manual under the conditions for verbatim copying, provided also that the ! 14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs ! 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 manual ! 20: into another language, under the above conditions for modified versions, ! 21: except that the sections entitled "The GNU Manifesto", "Distribution" ! 22: and "GNU Emacs General Public License" may be included in a translation ! 23: approved by the author instead of in the original English. ! 24: ! 25: ! 26: File: emacs Node: Just Spaces, Prev: Tab Stops, Up: Indentation ! 27: ! 28: Tabs vs. Spaces ! 29: =============== ! 30: ! 31: Emacs normally uses both tabs and spaces to indent lines. If you prefer, ! 32: all indentation can be made from spaces only. To request this, set ! 33: `indent-tabs-mode' to `nil'. This is a per-buffer variable; ! 34: altering the variable affects only the current buffer, but there is a ! 35: default value which you can change as well. *Note Locals::. ! 36: ! 37: There are also commands to convert tabs to spaces or vice versa, always ! 38: preserving the columns of all nonblank text. `M-x tabify' scans the ! 39: region for sequences of spaces, and converts sequences of at least three ! 40: spaces to tabs if that can be done without changing indentation. `M-x ! 41: untabify' changes all tabs in the region to appropriate numbers of spaces. ! 42: ! 43: ! 44: File: emacs Node: Text, Prev: Indentation, Up: Top, Next: Programs ! 45: ! 46: Commands for Human Languages ! 47: **************************** ! 48: ! 49: The term "text" has two widespread meanings in our area of the ! 50: computer field. One is data that is a sequence of characters. Any file ! 51: that you edit with Emacs is text, in this sense of the word. The other ! 52: meaning is more restrictive: a sequence of characters in a human language ! 53: for humans to read (possibly after processing by a text formatter), as ! 54: opposed to a program or commands for a program. ! 55: ! 56: Human languages have syntactic/stylistic conventions that can be ! 57: supported or used to advantage by editor commands: conventions involving ! 58: words, sentences, paragraphs, and capital letters. This chapter describes ! 59: Emacs commands for all of these things. There are also commands for ! 60: "filling", or rearranging paragraphs into lines of approximately equal ! 61: length. The commands for moving over and killing words, sentences ! 62: and paragraphs, while intended primarily for editing text, are also often ! 63: useful for editing programs. ! 64: ! 65: Emacs has several major modes for editing human language text. ! 66: If the file contains text pure and simple, use Text mode, which customizes ! 67: Emacs in small ways for the syntactic conventions of text. For text which ! 68: contains embedded commands for text formatters, Emacs has other major modes, ! 69: each for a particular text formatter. Thus, for input to TeX, you would ! 70: use TeX mode; for input to nroff, Nroff mode. ! 71: ! 72: * Menu: ! 73: ! 74: * Text Mode:: The major modes for editing text files. ! 75: * Nroff Mode:: The major mode for editing input to the formatter nroff. ! 76: * TeX Mode:: The major modes for editing input to the formatter TeX. ! 77: * Outline Mode::The major mode for editing outlines. ! 78: * Words:: Moving over and killing words. ! 79: * Sentences:: Moving over and killing sentences. ! 80: * Paragraphs:: Moving over paragraphs. ! 81: * Pages:: Moving over pages. ! 82: * Filling:: Filling or justifying text ! 83: * Case:: Changing the case of text ! 84: ! 85: ! 86: File: emacs Node: Text Mode, Prev: Text, Up: Text, Next: Words ! 87: ! 88: Text Mode ! 89: ========= ! 90: ! 91: Editing files of text in a human language ought to be done using Text ! 92: mode rather than Lisp or Fundamental mode. Invoke `M-x text-mode' to ! 93: enter Text mode. In Text mode, TAB runs the function ! 94: `tab-to-tab-stop', which allows you to use arbitrary tab stops set ! 95: with `M-x edit-tab-stops' (*Note Tab Stops::). Features concerned with ! 96: comments in programs are turned off except when explicitly invoked. The ! 97: syntax table is changed so that periods are not considered part of a word, ! 98: while apostrophes, backspaces and underlines are. ! 99: ! 100: A similar variant mode is Indented Text mode, intended for editing text ! 101: in which most lines are indented. This mode defines TAB to run ! 102: `indent-relative' (*Note Indentation::), and makes Auto Fill indent ! 103: the lines it creates. The result is that normally a line made by Auto ! 104: Filling, or by LFD, is indented just like the previous line. Use ! 105: `M-x indented-text-mode' to select this mode. ! 106: ! 107: Entering Text mode or Indented Text mode calls with no arguments the ! 108: value of the variable `text-mode-hook', if that value exists and is ! 109: not `nil'. This value is also called when modes related to Text mode ! 110: are entered; this includes Nroff mode, TeX mode, Outline mode and Mail ! 111: mode. Your hook can look at the value of `major-mode' to see which of ! 112: these modes is actually being entered. ! 113: ! 114: * Menu: ! 115: ! 116: Two modes similar to Text mode are of use for editing text that is to ! 117: be passed through a text formatter before achieving the form in which ! 118: humans are to read it. ! 119: ! 120: * Nroff Mode:: The major mode for editing input to the formatter nroff. ! 121: * TeX Mode:: The major modes for editing input to the formatter TeX. ! 122: ! 123: Another similar mode is used for editing outlines. It allows you ! 124: to view the text at various levels of detail. You can view either ! 125: the outline headings alone or both headings and text; you can also ! 126: hide some of the headings at lower levels from view to make the high ! 127: level structure more visible. ! 128: ! 129: * Outline Mode::The major mode for editing outlines. ! 130: ! 131: ! 132: File: emacs Node: Nroff Mode, Prev: Text Mode, Up: Text Mode, Next: TeX Mode ! 133: ! 134: Nroff Mode ! 135: ---------- ! 136: ! 137: Nroff mode is a mode like Text mode but modified to handle nroff commands ! 138: present in the text. Invoke `M-x nroff-mode' to enter this mode. It ! 139: differs from Text mode in only a few ways. All nroff command lines are ! 140: considered paragraph separators, so that filling will never garble the ! 141: nroff commands. Pages are separated by `.bp' commands. Comments ! 142: start with backslash-doublequote. Also, three special commands are ! 143: provided that are not in Text mode: ! 144: ! 145: `M-n' ! 146: Move to the beginning of the next line that isn't an nroff command ! 147: (`forward-text-line'). An argument is a repeat count. ! 148: `M-p' ! 149: Like `M-n' but move up (`backward-text-line'). ! 150: `M-?' ! 151: Prints in the echo area the number of text lines (lines that are not ! 152: nroff commands) in the region (`count-text-lines'). ! 153: ! 154: The other feature of Nroff mode is that you can turn on Electric ! 155: Nroff newline mode. This is a minor mode that you can turn on or off ! 156: with `M-x electric-nroff-mode' (*Note Minor Modes::). When the ! 157: mode is on, each time you use RET to end a line that contains ! 158: an nroff command that opens a kind of grouping, the matching ! 159: nroff command to close that grouping is automatically inserted on ! 160: the following line. For example, if you are at the beginning of ! 161: a line and type `. ( b RET', the matching command ! 162: `.)b' will be inserted on a new line following point. ! 163: ! 164: Entering Nroff mode calls with no arguments the value of the variable ! 165: `text-mode-hook', if that value exists and is not `nil'; then it ! 166: does the same with the variable `nroff-mode-hook'. ! 167: ! 168: ! 169: File: emacs Node: TeX Mode, Prev: Nroff Mode, Up: Text Mode, Next: Outline Mode ! 170: ! 171: TeX Mode ! 172: -------- ! 173: ! 174: TeX is a powerful text formatter written by Donald Knuth; it is also ! 175: free, like GNU Emacs. LaTeX is a simplified input format for TeX, ! 176: implemented by TeX macros. It comes with TeX. ! 177: ! 178: Emacs has a special TeX mode for editing TeX input files. ! 179: It provides facilities for checking the balance of delimiters and for ! 180: invoking TeX on all or part of the file. ! 181: ! 182: TeX mode has two variants, Plain TeX mode and LaTeX mode ! 183: (actually two distinct major modes which differ only slightly). They are ! 184: designed for editing the two different input formats. The command `M-x ! 185: tex-mode' looks at the contents of the buffer to determine whether the ! 186: contents appear to be LaTeX input or not; it then selects the ! 187: appropriate mode. If it can't tell which is right (e.g., the buffer is ! 188: empty), the variable `TeX-default-mode' controls which mode is used. ! 189: ! 190: The commands `M-x plain-tex-mode' and `M-x latex-mode' explicitly select ! 191: the two variants of TeX mode. Use these commands when `M-x tex-mode' does ! 192: not guess right. ! 193: ! 194: * Menu: ! 195: ! 196: * Editing: TeX Editing. Special commands for editing in TeX mode. ! 197: * Printing: TeX Print. Commands for printing part of a file with TeX. ! 198: ! 199: TeX for Berkeley Unix can be obtained on a 1600bpi tar tape for a $100 ! 200: distribution fee from ! 201: ! 202: Pierre MacKay ! 203: Department of Computer Science, FR-35 ! 204: University of Washington ! 205: Seattle, WA 98195 ! 206: ! 207: It would work on system V as well if that version of Unix had a reasonable ! 208: Pascal compiler. Outside the U.S., add $10 to cover extra costs. ! 209: ! 210: ! 211: File: emacs Node: TeX Editing, Prev: TeX Mode, Up: TeX Mode, Next: TeX Print ! 212: ! 213: TeX Editing Commands ! 214: .................... ! 215: ! 216: Here are the special commands provided in TeX mode for editing the ! 217: text of the file. ! 218: ! 219: `"' ! 220: Insert, according to context, either ```' or `"' or ! 221: `''' (`TeX-insert-quote'). ! 222: `LFD' ! 223: Insert a paragraph break (two newlines) and check the previous ! 224: paragraph for unbalanced braces or dollar signs ! 225: (`TeX-terminate-paragraph'). ! 226: `M-x validate-TeX-buffer' ! 227: Check each paragraph in the buffer for unbalanced braces or dollar signs. ! 228: `M-{' ! 229: Insert `{}' and position point between them (`TeX-insert-braces'). ! 230: `M-}' ! 231: Move forward past the next unmatched close brace (`up-list'). ! 232: `C-c C-f' ! 233: Close a block for LaTeX (`TeX-close-LaTeX-block'). ! 234: ! 235: In TeX, the character `"' is not normally used; one uses `"' ! 236: to start a quotation and `"' to end one. TeX mode defines the key ! 237: `"' to insert `"' after whitespace or an open brace, `"' ! 238: after a backslash, or `"' otherwise. This is done by the command ! 239: `TeX-insert-quote'. If you need the character `"' itself in ! 240: unusual contexts, use `C-q' to insert it. Also, `"' with a ! 241: numeric argument always inserts that number of `"' characters. ! 242: ! 243: In TeX mode, `$' has a special syntax code which attempts to ! 244: understand the way TeX math mode delimiters match. When you insert a ! 245: `$' that is meant to exit math mode, the position of the matching ! 246: `$' that entered math mode is displayed for a second. This is the ! 247: same feature that displays the open brace that matches a close brace that ! 248: is inserted. However, there is no way to tell whether a `$' enters ! 249: math mode or leaves it; so when you insert a `$' that enters math ! 250: mode, the previous `$' position is shown as if it were a match, even ! 251: though they are actually unrelated. ! 252: ! 253: If you prefer to keep braces balanced at all times, you can use `M-{' ! 254: (`TeX-insert-braces') to insert a pair of braces. It leaves point ! 255: between the two braces so you can insert the text that belongs inside. ! 256: Afterward, use the command `M-}' (`up-list') to move forward ! 257: past the close brace. ! 258: ! 259: There are two commands for checking the matching of braces. LFD ! 260: (`TeX-terminate-paragraph') checks the paragraph before point, and ! 261: inserts two newlines to start a new paragraph. It prints a message in the ! 262: echo area if any mismatch is found. `M-x validate-TeX-buffer' checks ! 263: the entire buffer, paragraph by paragraph. When it finds a paragraph that ! 264: contains a mismatch, it displays point at the beginning of the paragraph ! 265: for a few seconds and pushes a mark at that spot. Scanning continues ! 266: until the whole buffer has been checked or until you type another key. ! 267: The positions of the last several paragraphs with mismatches can be ! 268: found in the mark ring (*Note Mark Ring::). ! 269: ! 270: Note that square brackets and parentheses are matched in TeX mode, not ! 271: just braces. This is wrong for the purpose of checking TeX syntax. ! 272: However, parentheses and square brackets are likely to be used in text as ! 273: matching delimiters and it is useful for the various motion commands and ! 274: automatic match display to work with them. ! 275: ! 276: In LaTeX input, `\begin' and `\end' commands must balance. After you ! 277: insert a `\begin', use `C-c C-f' (`TeX-close-LaTeX-block') to insert ! 278: automatically a matching `\end' (on a new line following the `\begin'). A ! 279: blank line is inserted between the two, and point is left there. ! 280: ! 281: ! 282: File: emacs Node: TeX Print, Prev: TeX Editing, Up: TeX Mode ! 283: ! 284: TeX Printing Commands ! 285: ..................... ! 286: ! 287: You can invoke TeX as an inferior of Emacs on either the entire ! 288: contents of the buffer or just a region at a time. Running TeX in ! 289: this way on just one chapter is a good way to see what your changes ! 290: look like without taking the time to format the entire file. ! 291: ! 292: `C-c C-r' ! 293: Invoke TeX on the current region, plus the buffer's header ! 294: (`TeX-region'). ! 295: `C-c C-b' ! 296: Invoke TeX on the entire current buffer (`TeX-buffer'). ! 297: `C-c C-l' ! 298: Recenter the window showing output from the inferior TeX so that ! 299: the last line can be seen (`TeX-recenter-output-buffer'). ! 300: `C-c C-k' ! 301: Kill the inferior TeX (`TeX-kill-job'). ! 302: `C-c C-p' ! 303: Print the output from the last `C-c C-r' or `C-c C-b' command ! 304: (`TeX-print'). ! 305: `C-c C-q' ! 306: Show the printer queue (`TeX-show-print-queue'). ! 307: ! 308: You can pass the current buffer through an inferior TeX by means of ! 309: `C-c C-b' (`TeX-buffer'). The formatted output appears in a file ! 310: in `/tmp'; to print it, type `C-c C-p' (`TeX-print'). ! 311: Afterward use `C-c C-q' (`TeX-show-print-queue') to view the ! 312: progress of your output towards being printed. ! 313: ! 314: The console output from TeX, including any error messages, appear in a ! 315: buffer called `*TeX-shell*'. If TeX gets an error, you can switch ! 316: to this buffer and feed it input (this works as in Shell mode; ! 317: *Note Interactive Shell::). Without switching to this buffer you can scroll ! 318: it so that its last line is visible by typing `C-c C-l'. ! 319: ! 320: Type `C-c C-k' (`TeX-kill-job') to kill the TeX process if you see that ! 321: its output is no longer useful. Using `C-c C-b' or `C-c C-r' also kills ! 322: any TeX process still running. ! 323: ! 324: You can also pass an arbitrary region through an inferior TeX by typing ! 325: `C-c C-r' (`TeX-region'). This is tricky, however, because most files ! 326: of TeX input contain commands at the beginning to set parameters and ! 327: define macros, without which no later part of the file will format ! 328: correctly. To solve this problem, `C-c C-r' allows you to designate a ! 329: part of the file as containing essential commands; it is included before ! 330: the specified region as part of the input to TeX. The designated part ! 331: of the file is called the "header". ! 332: ! 333: To indicate the bounds of the header in Plain TeX mode, you insert two ! 334: special strings in the file. Insert `%**start of header' before the ! 335: header, and `%**end of header' after it. Each string must appear ! 336: entirely on one line, but there may be other text on the line before or ! 337: after. The lines containing the two strings are included in the header. ! 338: If `%**start of header' does not appear within the first 100 lines of ! 339: the buffer, `C-c C-r' assumes that there is no header. ! 340: ! 341: In LaTeX mode, the header begins with `\documentstyle' and ends ! 342: with `\begin{document}'. These are commands that LaTeX requires ! 343: you to use in any case, so nothing special needs to be done to identify the ! 344: header. ! 345: ! 346: Entering either kind of TeX mode calls with no arguments the value of ! 347: the variable `text-mode-hook', if that value exists and is not ! 348: `nil'; then it does the same with the variable `TeX-mode-hook'. ! 349: Finally it does the same with either `plain-TeX-mode-hook' or ! 350: `LaTeX-mode-hook'. ! 351: ! 352: ! 353: File: emacs Node: Outline Mode, Prev: TeX Mode, Up: Text Mode ! 354: ! 355: Outline Mode ! 356: ------------ ! 357: ! 358: Outline mode is a major mode much like Text mode but intended for editing ! 359: outlines. It allows you to make parts of the text temporarily invisible ! 360: so that you can see just the overall structure of the outline. Type ! 361: `M-x outline-mode' to turn on Outline mode in the current buffer. ! 362: ! 363: Entering Outline mode calls with no arguments the value of the variable ! 364: `text-mode-hook', if that value exists and is not `nil'; then it ! 365: does the same with the variable `outline-mode-hook'. ! 366: ! 367: When a line is invisible in outline mode, it does not appear on the ! 368: screen. The screen appears exactly as if the invisible line ! 369: were deleted, except that an ellipsis (three periods in a row) appears ! 370: at the end of the previous visible line (only one ellipsis no matter ! 371: how many invisible lines follow). ! 372: ! 373: All editing commands treat the text of the invisible line as part of the ! 374: previous visible line. For example, `C-n' moves onto the next visible ! 375: line. Killing an entire visible line, including its terminating newline, ! 376: really kills all the following invisible lines along with it; yanking it ! 377: all back yanks the invisible lines and they remain invisible. ! 378: ! 379: * Menu: ! 380: ! 381: * Format: Outline Format. What the text of an outline looks like. ! 382: * Motion: Outline Motion. Special commands for moving through outlines. ! 383: * Visibility: Outline Visibility. Commands to control what is visible. ! 384: ! 385: ! 386: File: emacs Node: Outline Format, Prev: Outline Mode, Up: Outline Mode, Next: Outline Motion ! 387: ! 388: Format of Outlines ! 389: .................. ! 390: ! 391: Outline mode assumes that the lines in the buffer are of two types: ! 392: "heading lines" and "body lines". A heading line represents a topic in the ! 393: outline. Heading lines start with one or more stars; the number of stars ! 394: determines the depth of the heading in the outline structure. Thus, a ! 395: heading line with one star is a major topic; all the heading lines with ! 396: two stars between it and the next one-star heading are its subtopics; and ! 397: so on. Any line that is not a heading line is a body line. Body lines ! 398: belong to the preceding heading line. Here is an example: ! 399: ! 400: * Food ! 401: ! 402: This is the body, ! 403: which says something about the topic of food. ! 404: ! 405: ** Delicious Food ! 406: ! 407: This is the body of the second-level header. ! 408: ! 409: ** Distasteful Food ! 410: ! 411: This could have ! 412: a body too, with ! 413: several lines. ! 414: ! 415: *** Dormitory Food ! 416: ! 417: * Shelter ! 418: ! 419: A second first-level topic with its header line. ! 420: ! 421: A heading line together with all following body lines is called ! 422: collectively an "entry". A heading line together with all following ! 423: deeper heading lines and their body lines is called a "subtree". ! 424: ! 425: You can customize the criterion for distinguishing heading lines ! 426: by setting the variable `outline-regexp'. Any line whose ! 427: beginning has a match for this regexp is considered a heading line. ! 428: Matches that start within a line (not at the beginning) do not count. ! 429: The length of the matching text determines the level of the heading; ! 430: longer matches make a more deeply nested level. Thus, for example, ! 431: if a text formatter has commands `@chapter', `@section' ! 432: and `@subsection' to divide the document into chapters and ! 433: sections, you could make those lines count as heading lines by ! 434: setting `outline-regexp' to `"@chap\\|@\\(sub\\)*section"'. ! 435: Note the trick: the two words `chapter' and `section' are equally ! 436: long, but by defining the regexp to match only `chap' we ensure ! 437: that the length of the text matched on a chapter heading is shorter, ! 438: so that Outline mode will know that sections are contained in chapters. ! 439: This works as long as no other command starts with `@chap'. ! 440: ! 441: Outline mode makes a line invisible by changing the newline before it ! 442: into an ASCII Control-M (code 015). Most editing commands that work on ! 443: lines treat an invisible line as part of the previous line because, ! 444: strictly speaking, it is part of that line, since there is no longer a ! 445: newline in between. When you save the file in Outline mode, Control-M ! 446: characters are saved as newlines, so the invisible lines become ordinary ! 447: lines in the file. But saving does not change the visibility status of a ! 448: line inside Emacs. ! 449: ! 450: ! 451: File: emacs Node: Outline Motion, Prev: Outline Format, Up: Outline Mode, Next: Outline Visibility ! 452: ! 453: Outline Motion Commands ! 454: ....................... ! 455: ! 456: There are some special motion commands in Outline mode that move ! 457: backward and forward to heading lines. ! 458: ! 459: `C-c C-n' ! 460: Move point to the next visible heading line ! 461: (`outline-next-visible-heading'). ! 462: `C-c C-p' ! 463: Move point to the previous visible heading line ! 464: (`outline-previous-visible-heading'). ! 465: `C-c C-f' ! 466: Move point to the next visible heading line at the same level ! 467: as the one point is on (`outline-forward-same-level'). ! 468: `C-c C-b' ! 469: Move point to the previous visible heading line at the same level ! 470: (`outline-backward-same-level'). ! 471: `C-c C-u' ! 472: Move point up to a lower-level (more inclusive) visible heading line ! 473: (`outline-up-heading'). ! 474: ! 475: `C-c C-n' (`next-visible-heading') moves down to the next heading line. ! 476: `C-c C-p' (`previous-visible-heading') moves similarly backward. Both ! 477: accept numeric arguments as repeat counts. The names emphasize that ! 478: invisible headings are skipped, but this is not really a special feature. ! 479: All editing commands that look for lines ignore the invisible lines ! 480: automatically. ! 481: ! 482: More advanced motion commands understand the levels of headings. ! 483: `C-c C-f' (`outline-forward-same-level') and ! 484: `C-c C-b' (`outline-backward-same-level') move from one ! 485: heading line to another visible heading at the same depth in ! 486: the outline. `C-c C-u' (`outline-up-heading') moves ! 487: backward to another heading that is less deeply nested. ! 488: ! 489: ! 490: File: emacs Node: Outline Visibility, Prev: Outline Motion, Up: Outline Mode ! 491: ! 492: Outline Visibility Commands ! 493: ........................... ! 494: ! 495: The other special commands of outline mode are used to make lines visible ! 496: or invisible. Their names all start with `hide' or `show'. ! 497: Most of them fall into pairs of opposites. They are not undoable; instead, ! 498: you can undo right past them. Making lines visible or invisible is simply ! 499: not recorded by the undo mechanism. ! 500: ! 501: `M-x hide-body' ! 502: Make all body lines in the buffer invisible. ! 503: `M-x show-all' ! 504: Make all lines in the buffer visible. ! 505: `C-c C-h' ! 506: Make everything under this heading invisible, not including this ! 507: heading itself (`hide-subtree'). ! 508: `C-c C-s' ! 509: Make everything under this heading visible, including body, ! 510: subheadings, and their bodies (`show-subtree'). ! 511: `M-x hide-leaves' ! 512: Make the body of this heading line, and of all its subheadings, ! 513: invisible. ! 514: `M-x show-branches' ! 515: Make all subheadings of this heading line, at all levels, visible. ! 516: `C-c C-i' ! 517: Make immediate subheadings (one level down) of this heading line ! 518: visible (`show-children'). ! 519: `M-x hide-entry' ! 520: Make this heading line's body invisible. ! 521: `M-x show-entry' ! 522: Make this heading line's body visible. ! 523: ! 524: Two commands that are exact opposites are `M-x hide-entry' and ! 525: `M-x show-entry'. They are used with point on a heading line, and ! 526: apply only to the body lines of that heading. The subtopics and their ! 527: bodies are not affected. ! 528: ! 529: Two more powerful opposites are `C-c C-h' (`hide-subtree') and `C-c C-s' ! 530: (`show-subtree'). Both expect to be used when point is on a heading line, ! 531: and both apply to all the lines of that heading's "subtree": its body, all ! 532: its subheadings, both direct and indirect, and all of their bodies. In ! 533: other words, the subtree contains everything following this heading line, ! 534: up to and not including the next heading of the same or higher rank. ! 535: ! 536: Intermediate between a visible subtree and an invisible one is having ! 537: all the subheadings visible but none of the body. There are two commands ! 538: for doing this, depending on whether you want to hide the bodies or ! 539: make the subheadings visible. They are `M-x hide-leaves' and ! 540: `M-x show-branches'. ! 541: ! 542: A little weaker than `show-branches' is `C-c C-i' (`show-children'). It ! 543: makes just the direct subheadings visible---those one level down. Deeper ! 544: subheadings remain invisible, if they were invisible. ! 545: ! 546: Two commands have a blanket effect on the whole file. `M-x hide-body' ! 547: makes all body lines invisible, so that you see just the outline structure. ! 548: `M-x show-all' makes all lines visible. These commands can be thought ! 549: of as a pair of opposites even though `M-x show-all' applies to more ! 550: than just body lines. ! 551: ! 552: The use of ellipses at the ends of visible lines can be turned off ! 553: by setting `selective-display-ellipses' to `nil'. Then there ! 554: is no visible indication of the presence of invisible lines. ! 555: ! 556: ! 557: File: emacs Node: Words, Prev: Text Mode, Up: Text, Next: Sentences ! 558: ! 559: Words ! 560: ===== ! 561: ! 562: Emacs has commands for moving over or operating on words. By convention, ! 563: the keys for them are all `Meta-' characters. ! 564: ! 565: `M-f' ! 566: Move forward over a word (`forward-word'). ! 567: `M-b' ! 568: Move backward over a word (`backward-word'). ! 569: `M-d' ! 570: Kill up to the end of a word (`kill-word'). ! 571: `M-DEL' ! 572: Kill back to the beginning of a word (`backward-kill-word'). ! 573: `M-@' ! 574: Mark the end of the next word (`mark-word'). ! 575: `M-t' ! 576: Transpose two words; drag a word forward ! 577: or backward across other words (`transpose-words'). ! 578: ! 579: Notice how these keys form a series that parallels the character-based ! 580: `C-f', `C-b', `C-d', `C-t' and DEL. `M-@' is related to `C-@', which is an ! 581: alias for `C-SPC'. ! 582: ! 583: The commands `Meta-f' (`forward-word') and `Meta-b' (`backward-word') ! 584: move forward and backward over words. They are thus analogous to ! 585: `Control-f' and `Control-b', which move over single characters. Like their ! 586: `Control-' analogues, `Meta-f' and `Meta-b' move several words if given an ! 587: argument. `Meta-f' with a negative argument moves backward, and `Meta-b' ! 588: with a negative argument moves forward. Forward motion stops right after ! 589: the last letter of the word, while backward motion stops right before the ! 590: first letter. ! 591: ! 592: `Meta-d' (`kill-word') kills the word after point. To be ! 593: precise, it kills everything from point to the place `Meta-f' would ! 594: move to. Thus, if point is in the middle of a word, `Meta-d' kills ! 595: just the part after point. If some punctuation comes between point and the ! 596: next word, it is killed along with the word. (If you wish to kill only the ! 597: next word but not the punctuation before it, simply do `Meta-f' to get ! 598: the end, and kill the word backwards with `Meta-DEL'.) ! 599: `Meta-d' takes arguments just like `Meta-f'. ! 600: ! 601: `Meta-DEL' (`backward-kill-word') kills the word before ! 602: point. It kills everything from point back to where `Meta-b' would ! 603: move to. If point is after the space in `FOO, BAR', then ! 604: `FOO, ' is killed. (If you wish to kill just `FOO', do ! 605: `Meta-b Meta-d' instead of `Meta-DEL'.) ! 606: ! 607: `Meta-t' (`transpose-words') exchanges the word before or ! 608: containing point with the following word. The delimiter characters between ! 609: the words do not move. For example, `FOO, BAR' transposes into ! 610: `BAR, FOO' rather than `BAR FOO,'. *Note Transpose::, for ! 611: more on transposition and on arguments to transposition commands. ! 612: ! 613: To operate on the next N words with an operation which applies ! 614: between point and mark, you can either set the mark at point and then move ! 615: over the words, or you can use the command `Meta-@' (`mark-word') ! 616: which does not move point, but sets the mark where `Meta-f' would move ! 617: to. It can be given arguments just like `Meta-f'. ! 618: ! 619: The word commands' understanding of syntax is completely controlled by ! 620: the syntax table. Any character can, for example, be declared to be a word ! 621: delimiter. *Note Syntax::. ! 622: ! 623: ! 624: File: emacs Node: Sentences, Prev: Words, Up: Text, Next: Paragraphs ! 625: ! 626: Sentences ! 627: ========= ! 628: ! 629: The Emacs commands for manipulating sentences and paragraphs are mostly ! 630: on `Meta-' keys, so as to be like the word-handling commands. ! 631: ! 632: `M-a' ! 633: Move back to the beginning of the sentence (`backward-sentence'). ! 634: `M-e' ! 635: Move forward to the end of the sentence (`forward-sentence'). ! 636: `M-k' ! 637: Kill forward to the end of the sentence (`kill-sentence'). ! 638: `C-x DEL' ! 639: Kill back to the beginning of the sentence (`backward-kill-sentence'). ! 640: ! 641: The commands `Meta-a' and `Meta-e' (`backward-sentence' and ! 642: `forward-sentence') move to the beginning and end of the current sentence, ! 643: respectively. They were chosen to resemble `Control-a' and `Control-e', ! 644: which move to the beginning and end of a line. Unlike them, `Meta-a' and ! 645: `Meta-e' if repeated or given numeric arguments move over successive ! 646: sentences. Emacs assumes that the typist's convention is followed, and ! 647: thus considers a sentence to end wherever there is a `.', `?' or `!' ! 648: followed by the end of a line or two spaces, with any number of `)', `]', ! 649: `'', or `"' characters allowed in between. A sentence also begins or ends ! 650: wherever a paragraph begins or ends. ! 651: ! 652: Neither `M-a' nor `M-e' moves past the newline or spaces beyond ! 653: the sentence edge at which it is stopping. ! 654: ! 655: Just as `C-a' and `C-e' have a kill command, `C-k', to go with them, so ! 656: `M-a' and `M-e' have a corresponding kill command `M-k' (`kill-sentence') ! 657: which kills from point to the end of the sentence. With minus one as an ! 658: argument it kills back to the beginning of the sentence. Larger arguments ! 659: serve as a repeat count. ! 660: ! 661: There is a special command, `C-x DEL' (`backward-kill-sentence') for ! 662: killing back to the beginning of a sentence, because this is useful when ! 663: you change your mind in the middle of composing text. ! 664: ! 665: The variable `sentence-end' controls recognition of the end of a ! 666: sentence. It is a regexp that matches the last few characters of a ! 667: sentence, together with the whitespace following the sentence. Its ! 668: normal value is ! 669: ! 670: "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*" ! 671: ! 672: This example is explained in the section on regexps. *Note Regexps::. ! 673: ! 674: ! 675: File: emacs Node: Paragraphs, Prev: Sentences, Up: Text, Next: Pages ! 676: ! 677: Paragraphs ! 678: ========== ! 679: ! 680: The Emacs commands for manipulating paragraphs are also `Meta-' ! 681: keys. ! 682: ! 683: `M-[' ! 684: Move back to previous paragraph beginning (`backward-paragraph'). ! 685: `M-]' ! 686: Move forward to next paragraph end (`forward-paragraph'). ! 687: `M-h' ! 688: Put point and mark around this or next paragraph (`mark-paragraph'). ! 689: ! 690: `Meta-[' moves to the beginning of the current or previous paragraph, ! 691: while `Meta-]' moves to the end of the current or next paragraph. ! 692: Blank lines and text formatter command lines separate paragraphs and are ! 693: not part of any paragraph. Also, an indented line starts a new ! 694: paragraph. ! 695: ! 696: In major modes for programs (as opposed to Text mode), paragraphs begin ! 697: and end only at blank lines. This makes the paragraph commands continue to ! 698: be useful even though there are no paragraphs per se. ! 699: ! 700: When there is a fill prefix, then paragraphs are delimited by all lines ! 701: which don't start with the fill prefix. *Note Filling::. ! 702: ! 703: When you wish to operate on a paragraph, you can use the command ! 704: `Meta-h' (`mark-paragraph') to set the region around it. This ! 705: command puts point at the beginning and mark at the end of the paragraph ! 706: point was in. If point is between paragraphs (in a run of blank lines, or ! 707: at a boundary), the paragraph following point is surrounded by point and ! 708: mark. If there are blank lines preceding the first line of the paragraph, ! 709: one of these blank lines is included in the region. Thus, for example, ! 710: `M-h C-w' kills the paragraph around or after point. ! 711: ! 712: The precise definition of a paragraph boundary is controlled by the ! 713: variables `paragraph-separate' and `paragraph-start'. The value of ! 714: `paragraph-start' is a regexp that should match any line that either starts ! 715: or separates paragraphs. The value of `paragraph-separate' is another ! 716: regexp that should match only lines that separate paragraphs without being ! 717: part of any paragraph. Lines that start a new paragraph and are contained ! 718: in it must match both regexps. For example, normally `paragraph-start' is ! 719: `"^[ \t\n\f]"' and `paragraph-separate' is `"^[ \t\f]*$"'. ! 720: ! 721: Normally it is desirable for page boundaries to separate paragraphs. ! 722: The default values of these variables recognize the usual separator for ! 723: pages. ! 724: ! 725: ! 726: File: emacs Node: Pages, Prev: Paragraphs, Up: Text, Next: Filling ! 727: ! 728: Pages ! 729: ===== ! 730: ! 731: Files are often thought of as divided into "pages" by the ! 732: "formfeed" character (ASCII Control-L, octal code 014). For example, ! 733: if a file is printed on a line printer, each page of the file, in this ! 734: sense, will start on a new page of paper. Emacs treats a page-separator ! 735: character just like any other character. It can be inserted with `C-q ! 736: C-l', or deleted with DEL. Thus, you are free to paginate your file ! 737: or not. However, since pages are often meaningful divisions of the file, ! 738: commands are provided to move over them and operate on them. ! 739: ! 740: `C-x [' ! 741: Move point to previous page boundary (`backward-page'). ! 742: `C-x ]' ! 743: Move point to next page boundary (`forward-page'). ! 744: `C-x C-p' ! 745: Put point and mark around this page (or another page) (`mark-page'). ! 746: `C-x l' ! 747: Count the lines in this page (`count-lines-page'). ! 748: ! 749: The `C-x [' (`backward-page') command moves point to immediately ! 750: after the previous page delimiter. If point is already right after a page ! 751: delimiter, it skips that one and stops at the previous one. A numeric ! 752: argument serves as a repeat count. The `C-x ]' (`forward-page') ! 753: command moves forward past the next page delimiter. ! 754: ! 755: The `C-x C-p' command (`mark-page') puts point at the beginning ! 756: of the current page and the mark at the end. The page delimiter at the end ! 757: is included (the mark follows it). The page delimiter at the front is ! 758: excluded (point follows it). This command can be followed by `C-w' to ! 759: kill a page which is to be moved elsewhere. If it is inserted after a page ! 760: delimiter, at a place where `C-x ]' or `C-x [' would take you, then ! 761: the page will be properly delimited before and after once again. ! 762: ! 763: A numeric argument to `C-x C-p' is used to specify which page to go ! 764: to, relative to the current one. Zero means the current page. One means ! 765: the next page, and -1 means the previous one. ! 766: ! 767: The `C-x l' command (`count-lines-page') is good for deciding ! 768: where to break a page in two. It prints in the echo area the total number ! 769: of lines in the current page, and then divides it up into those preceding ! 770: the current line and those following, as in ! 771: ! 772: Page has 96 (72+25) lines ! 773: ! 774: Notice that the sum is off by one; this is correct if point is not at the ! 775: beginning of a line. ! 776: ! 777: The variable `page-delimiter' should have as its value a regexp that ! 778: matches the beginning of a line that separates pages. This is what defines ! 779: where pages begin. The normal value of this variable is `"^\f"', ! 780: which matches a formfeed character at the beginning of a line. ! 781: ! 782: ! 783: File: emacs Node: Filling, Prev: Pages, Up: Text, Next: Case ! 784: ! 785: Filling Text ! 786: ============ ! 787: ! 788: With Auto Fill mode, text can be "filled" (broken up into lines that ! 789: fit in a specified width) as you insert it. If you alter existing text it ! 790: may no longer be properly filled; then explicit commands for filling can be ! 791: used. ! 792: ! 793: * Menu: ! 794: ! 795: * Auto Fill:: Auto Fill mode breaks long lines automatically. ! 796: * Fill Commands:: Commands to refill paragraphs and center lines. ! 797: * Fill Prefix:: Filling when every line is indented or in a comment, etc. ! 798: ! 799: ! 800: File: emacs Node: Auto Fill, Prev: Filling, Up: Filling, Next: Fill Commands ! 801: ! 802: Auto Fill Mode ! 803: -------------- ! 804: ! 805: ! 806: "Auto Fill" mode is a minor mode in which lines are broken ! 807: automatically when they become too wide. Breaking happens only when ! 808: you type a SPC or RET. ! 809: ! 810: `M-x auto-fill-mode' ! 811: Enable or disable Auto Fill mode. ! 812: `SPC' ! 813: `RET' ! 814: In Auto Fill mode, break lines when appropriate. ! 815: ! 816: `M-x auto-fill-mode' turns Auto Fill mode on if it was off, or off if ! 817: it was on. With a positive numeric argument it always turns Auto Fill mode ! 818: on, and with a negative argument always turns it off. You can see when ! 819: Auto Fill mode is in effect by the presence of the word `Fill' in the ! 820: mode line, inside the parentheses. Auto Fill mode is a minor mode, turned ! 821: on or off for each buffer individually. *Note Minor Modes::. ! 822: ! 823: In Auto Fill mode, lines are broken automatically at spaces when they get ! 824: longer than the desired width. Line breaking and rearrangement takes place ! 825: only when you type SPC or RET. If you wish to insert a space ! 826: or newline without permitting line-breaking, type `C-q SPC' or ! 827: `C-q LFD' (recall that a newline is really a linefeed). Also, ! 828: `C-o' inserts a newline without line breaking. ! 829: ! 830: Auto Fill mode works well with Lisp mode, because when it makes a new ! 831: line in Lisp mode it indents that line with TAB. If a line ending in ! 832: a comment gets too long, the text of the comment is split into two ! 833: comment lines. Optionally new comment delimiters are inserted at the end of ! 834: the first line and the beginning of the second so that each line is ! 835: a separate comment; the variable `comment-multi-line' controls the ! 836: choice (*Note Comments::). ! 837: ! 838: Auto Fill mode does not refill entire paragraphs. It can break lines but ! 839: cannot merge lines. So editing in the middle of a paragraph can result in ! 840: a paragraph that is not correctly filled. The easiest way to make the ! 841: paragraph properly filled again is usually with the explicit fill commands. ! 842: ! 843: Many users like Auto Fill mode and want to use it in all text files. ! 844: The section on init files says how to arrange this permanently for yourself. ! 845: *Note Init File::. ! 846: ! 847: ! 848: File: emacs Node: Fill Commands, Prev: Auto Fill, Up: Filling, Next: Fill Prefix ! 849: ! 850: Explicit Fill Commands ! 851: ---------------------- ! 852: ! 853: `M-q' ! 854: Fill current paragraph (`fill-paragraph'). ! 855: `M-g' ! 856: Fill each paragraph in the region (`fill-region'). ! 857: `C-x f' ! 858: Set the fill column (`set-fill-column'). ! 859: `M-x fill-region-as-paragraph.' ! 860: Fill the region, considering it as one paragraph. ! 861: `M-s' ! 862: Center a line. ! 863: ! 864: To refill a paragraph, use the command `Meta-q' (`fill-paragraph'). It ! 865: causes the paragraph that point is inside, or the one after point if point ! 866: is between paragraphs, to be refilled. All the line-breaks are removed, ! 867: and then new ones are inserted where necessary. `M-q' can be undone with ! 868: `C-_'. *Note Undo::. ! 869: ! 870: To refill many paragraphs, use `M-g' (`fill-region'), which ! 871: divides the region into paragraphs and fills each of them. ! 872: ! 873: `Meta-q' and `Meta-g' use the same criteria as `Meta-h' for finding ! 874: paragraph boundaries (*Note Paragraphs::). For more control, you can use ! 875: `M-x fill-region-as-paragraph', which refills everything between point and ! 876: mark. This command recognizes only blank lines as paragraph separators. ! 877: ! 878: A numeric argument to `M-g' or `M-q' causes it to "justify" the text as ! 879: well as filling it. This means that extra spaces are inserted to make the ! 880: right margin line up exactly at the fill column. To remove the extra ! 881: spaces, use `M-q' or `M-g' with no argument. ! 882: ! 883: The command `Meta-s' (`center-line') centers the current line ! 884: within the current fill column. With an argument, it centers several lines ! 885: individually and moves past them. ! 886: ! 887: The maximum line width for filling is in the variable `fill-column'. ! 888: Altering the value of `fill-column' makes it local to the current ! 889: buffer; until that time, the default value is in effect. The default is ! 890: initially 70. *Note Locals::. ! 891: ! 892: The easiest way to set `fill-column' is to use the command `C-x ! 893: f' (`set-fill-column'). With no argument, it sets `fill-column' ! 894: to the current horizontal position of point. With a numeric argument, it ! 895: uses that as the new fill column. ! 896: ! 897: ! 898: File: emacs Node: Fill Prefix, Prev: Fill Commands, Up: Filling ! 899: ! 900: The Fill Prefix ! 901: --------------- ! 902: ! 903: To fill a paragraph in which each line starts with a special marker ! 904: (which might be a few spaces, giving an indented paragraph), use the ! 905: "fill prefix" feature. The fill prefix is a string which Emacs expects ! 906: every line to start with, and which is not included in filling. ! 907: ! 908: `C-x .' ! 909: Set the fill prefix (`set-fill-prefix'). ! 910: `M-q' ! 911: Fill a paragraph using current fill prefix (`fill-paragraph'). ! 912: `M-x fill-individual-paragraphs' ! 913: Fill the region, considering each change of indentation as starting a ! 914: new paragraph. ! 915: ! 916: To specify a fill prefix, move to a line that starts with the desired ! 917: prefix, put point at the end of the prefix, and give the command `C-x .' ! 918: (`set-fill-prefix'). That's a period after the `C-x'. To turn off the ! 919: fill prefix, specify an empty prefix: type `C-x .' with point at the ! 920: beginning of a line. ! 921: ! 922: When a fill prefix is in effect, the fill commands remove the fill prefix ! 923: from each line before filling and insert it on each line after filling. ! 924: The fill prefix is also inserted on new lines made automatically by Auto ! 925: Fill mode. Lines that do not start with the fill prefix are considered to ! 926: start paragraphs, both in `M-q' and the paragraph commands; this is ! 927: just right if you are using paragraphs with hanging indentation (every line ! 928: indented except the first one). Lines which are blank or indented once the ! 929: prefix is removed also separate or start paragraphs; this is what you want ! 930: if you are writing multi-paragraph comments with a comment delimiter on ! 931: each line. ! 932: ! 933: The fill prefix is stored in the variable `fill-prefix'. Its value ! 934: is a string, or `nil' when there is no fill prefix. This is a ! 935: per-buffer variable; altering the variable affects only the current buffer, ! 936: but there is a default value which you can change as well. *Note Locals::. ! 937: ! 938: Another way to use fill prefixes is through `M-x ! 939: fill-individual-paragraphs'. This function divides the region into groups ! 940: of consecutive lines with the same amount and kind of indentation and fills ! 941: each group as a paragraph using its indentation as a fill prefix. ! 942: ! 943: ! 944: File: emacs Node: Case, Prev: Filling, Up: Text ! 945: ! 946: Case Conversion Commands ! 947: ======================== ! 948: ! 949: Emacs has commands for converting either a single word or any arbitrary ! 950: range of text to upper case or to lower case. ! 951: ! 952: `M-l' ! 953: Convert following word to lower case (`downcase-word'). ! 954: `M-u' ! 955: Convert following word to upper case (`upcase-word'). ! 956: `M-c' ! 957: Capitalize the following word (`capitalize-word'). ! 958: `C-x C-l' ! 959: Convert region to lower case (`downcase-region'). ! 960: `C-x C-u' ! 961: Convert region to upper case (`upcase-region'). ! 962: ! 963: The word conversion commands are the most useful. `Meta-l' ! 964: (`downcase-word') converts the word after point to lower case, moving ! 965: past it. Thus, repeating `Meta-l' converts successive words. ! 966: `Meta-u' (`upcase-word') converts to all capitals instead, while ! 967: `Meta-c' (`capitalize-word') puts the first letter of the word ! 968: into upper case and the rest into lower case. All these commands convert ! 969: several words at once if given an argument. They are especially convenient ! 970: for converting a large amount of text from all upper case to mixed case, ! 971: because you can move through the text using `M-l', `M-u' or ! 972: `M-c' on each word as appropriate, occasionally using `M-f' instead ! 973: to skip a word. ! 974: ! 975: When given a negative argument, the word case conversion commands apply ! 976: to the appropriate number of words before point, but do not move point. ! 977: This is convenient when you have just typed a word in the wrong case: you ! 978: can give the case conversion command and continue typing. ! 979: ! 980: If a word case conversion command is given in the middle of a word, it ! 981: applies only to the part of the word which follows point. This is just ! 982: like what `Meta-d' (`kill-word') does. With a negative argument, ! 983: case conversion applies only to the part of the word before point. ! 984: ! 985: The other case conversion commands are `C-x C-u' (`upcase-region') and ! 986: `C-x C-l' (`downcase-region'), which convert everything between point and ! 987: mark to the specified case. Point and mark do not move. ! 988: ! 989: ! 990: File: emacs Node: Programs, Prev: Text, Up: Top, Next: Running ! 991: ! 992: Editing Programs ! 993: **************** ! 994: ! 995: Emacs has many commands designed to understand the syntax of programming ! 996: languages such as Lisp and C. These commands can ! 997: ! 998: * Move over or kill balanced expressions or "sexps" (*Note Lists::). ! 999: * Move over or mark top-level balanced expressions ("defuns", in Lisp; ! 1000: functions, in C). ! 1001: * Show how parentheses balance (*Note Matching::). ! 1002: * Insert, kill or align comments (*Note Comments::). ! 1003: * Follow the usual indentation conventions of the language ! 1004: (*Note Grinding::). ! 1005: ! 1006: The commands for words, sentences and paragraphs are very useful in ! 1007: editing code even though their canonical application is for editing human ! 1008: language text. Most symbols contain words (*Note Words::); sentences can ! 1009: be found in strings and comments (*Note Sentences::). Paragraphs per se ! 1010: are not present in code, but the paragraph commands are useful anyway, ! 1011: because Lisp mode and C mode define paragraphs to begin and end at blank ! 1012: lines (*Note Paragraphs::). Judicious use of blank lines to make the ! 1013: program clearer will also provide interesting chunks of text for the ! 1014: paragraph commands to work on. ! 1015: ! 1016: The selective display feature is useful for looking at the overall ! 1017: structure of a function (*Note Selective Display::). This feature causes ! 1018: only the lines that are indented less than a specified amount to appear ! 1019: on the screen. ! 1020: ! 1021: * Menu: ! 1022: ! 1023: * Program Modes:: Major modes for editing programs. ! 1024: * Lists:: Expressions with balanced parentheses. ! 1025: There are editing commands to operate on them. ! 1026: * Defuns:: Each program is made up of separate functions. ! 1027: There are editing commands to operate on them. ! 1028: * Grinding:: Adjusting indentation to show the nesting. ! 1029: * Matching:: Insertion of a close-delimiter flashes matching open. ! 1030: * Comments:: Inserting, illing and aligning comments. ! 1031: * Balanced Editing:: Inserting two matching parentheses at once, etc. ! 1032: * Lisp Completion:: Completion on symbol names in Lisp code. ! 1033: * Documentation:: Getting documentation of functions you plan to call. ! 1034: * Change Log:: Maintaining a change history for your program. ! 1035: * Tags:: Go direct to any function in your program in one ! 1036: command. Tags remembers which file it is in. ! 1037: * Fortran:: Fortran mode and its special features. ! 1038: ! 1039: ! 1040: File: emacs Node: Program Modes, Prev: Programs, Up: Programs, Next: Lists ! 1041: ! 1042: Major Modes for Programming Languages ! 1043: ===================================== ! 1044: ! 1045: Emacs also has major modes for the programming languages Lisp, Scheme (a ! 1046: variant of Lisp), C, Fortran and Muddle. Ideally, a major mode should be ! 1047: implemented for each programming language that you might want to edit with ! 1048: Emacs; but often the mode for one language can serve for other ! 1049: syntactically similar languages. The language modes that exist are those ! 1050: that someone decided to take the trouble to write. ! 1051: ! 1052: There are several forms of Lisp mode, which differ in the way they ! 1053: interface to Lisp execution. *Note Lisp Modes::. ! 1054: ! 1055: Each of the programming language modes defines the TAB key to run ! 1056: an indentation function that knows the indentation conventions of that ! 1057: language and updates the current line's indentation accordingly. For ! 1058: example, in C mode TAB is bound to `c-indent-line'. LFD ! 1059: is normally defined to do RET followed by TAB; thus, it too ! 1060: indents in a mode-specific fashion. ! 1061: ! 1062: In most programming languages, indentation is likely to vary from line to ! 1063: line. So the major modes for those languages rebind DEL to treat a ! 1064: tab as if it were the equivalent number of spaces (using the command ! 1065: `backward-delete-char-untabify'). This makes it possible to rub out ! 1066: indentation one column at a time without worrying whether it is made up of ! 1067: spaces or tabs. Use `C-b C-d' to delete a tab character before point, ! 1068: in these modes. ! 1069: ! 1070: Programming language modes define paragraphs to be separated only by ! 1071: blank lines, so that the paragraph commands remain useful. Auto Fill mode, ! 1072: if enabled in a programming language major mode, indents the new lines ! 1073: which it creates. ! 1074: ! 1075: Turning on a major mode calls a user-supplied function called the "mode ! 1076: hook", which is the value of a Lisp variable. For example, turning on C ! 1077: mode calls the value of the variable `c-mode-hook' if that value exists and ! 1078: is non-`nil'. Mode hook variables for other programming language modes ! 1079: include `lisp-mode-hook', `emacs-lisp-mode-hook', ! 1080: `lisp-interaction-mode-hook', `scheme-mode-hook' and `muddle-mode-hook'. ! 1081: The mode hook function receives no arguments. ! 1082: ! 1083: ! 1084: File: emacs Node: Lists, Prev: Program Modes, Up: Programs, Next: Defuns ! 1085: ! 1086: Lists and Sexps ! 1087: =============== ! 1088: ! 1089: By convention, Emacs keys for dealing with balanced expressions are ! 1090: usually `Control-Meta-' characters. They tend to be analogous in ! 1091: function to their `Control-' and `Meta-' equivalents. These commands ! 1092: are usually thought of as pertaining to expressions in programming ! 1093: languages, but can be useful with any language in which some sort of ! 1094: parentheses exist (including English). ! 1095: ! 1096: These commands fall into two classes. Some deal only with "lists" ! 1097: (parenthetical groupings). They see nothing except parentheses, brackets, ! 1098: braces (whichever ones must balance in the language you are working with), ! 1099: and escape characters that might be used to quote those. ! 1100: ! 1101: The other commands deal with expressions or "sexps". The word `sexp' ! 1102: is derived from "s-expression", the ancient term for an expression in ! 1103: Lisp. But in Emacs, the notion of `sexp' is not limited to Lisp. It ! 1104: refers to an expression in whatever language your program is written in. ! 1105: Each programming language has its own major mode, which customizes the ! 1106: syntax tables so that expressions in that language count as sexps. ! 1107: ! 1108: Sexps typically include symbols, numbers, and string constants, as well ! 1109: as anything contained in parentheses, brackets or braces. ! 1110: ! 1111: In languages that use prefix and infix operators, such as C, it is not ! 1112: possible for all expressions to be sexps. For example, C mode does not ! 1113: recognize `foo + bar' as a sexp, even though it is a C expression; ! 1114: it recognizes `foo' as one sexp and `bar' as another, with the ! 1115: `+' as punctuation between them. This is a fundamental ambiguity: ! 1116: both `foo + bar' and `foo' are legitimate choices for the sexp to ! 1117: move over if point is at the `f'. Note that `(foo + bar)' is a ! 1118: sexp in C mode. ! 1119: ! 1120: Some languages have obscure forms of syntax for expressions that nobody ! 1121: has bothered to make Emacs understand properly. ! 1122: ! 1123: `C-M-f' ! 1124: Move forward over a sexp (`forward-sexp'). ! 1125: `C-M-b' ! 1126: Move backward over a sexp (`backward-sexp'). ! 1127: `C-M-k' ! 1128: Kill sexp forward (`kill-sexp'). ! 1129: `C-M-u' ! 1130: Move up and backward in list structure (`backward-up-list'). ! 1131: `C-M-d' ! 1132: Move down and forward in list structure (`down-list'). ! 1133: `C-M-n' ! 1134: Move forward over a list (`forward-list'). ! 1135: `C-M-p' ! 1136: Move backward over a list (`backward-list'). ! 1137: `C-M-t' ! 1138: Transpose expressions (`transpose-sexps'). ! 1139: `C-M-@' ! 1140: Put mark after following expression (`mark-sexp'). ! 1141: ! 1142: To move forward over a sexp, use `C-M-f' (`forward-sexp'). If the first ! 1143: significant character after point is an opening delimiter (`(' in Lisp; ! 1144: `(', `[' or `{' in C), `C-M-f' moves past the matching closing delimiter. ! 1145: If the character begins a symbol, string, or number, `C-M-f' moves over ! 1146: that. If the character after point is a closing delimiter, `C-M-f' just ! 1147: moves past it. (This last is not really moving across a sexp; it is an ! 1148: exception which is included in the definition of `C-M-f' because it is as ! 1149: useful a behavior as anyone can think of for that situation.) ! 1150: ! 1151: The command `C-M-b' (`backward-sexp') moves backward over a ! 1152: sexp. The detailed rules are like those above for `C-M-f', but with ! 1153: directions reversed. If there are any prefix characters (singlequote, ! 1154: backquote and comma, in Lisp) preceding the sexp, `C-M-b' moves back ! 1155: over them as well. ! 1156: ! 1157: `C-M-f' or `C-M-b' with an argument repeats that operation the ! 1158: specified number of times; with a negative argument, it moves in the ! 1159: opposite direction. ! 1160: ! 1161: The sexp commands move across comments as if they were whitespace, in ! 1162: languages such as C where the comment-terminator can be recognized. In ! 1163: Lisp, and other languages where comments run until the end of a line, it is ! 1164: very difficult to ignore comments when parsing backwards; therefore, in ! 1165: such languages the sexp commands treat the text of comments as if it were ! 1166: code. ! 1167: ! 1168: Killing a sexp at a time can be done with `C-M-k' (`kill-sexp'). ! 1169: `C-M-k' kills the characters that `C-M-f' would move over. ! 1170: ! 1171: The "list commands" move over lists like the sexp commands but skip ! 1172: blithely over any number of other kinds of sexps (symbols, strings, etc). ! 1173: They are `C-M-n' (`forward-list') and `C-M-p' (`backward-list'). The main ! 1174: reason they are useful is that they usually ignore comments (since the ! 1175: comments usually do not contain any lists). ! 1176: ! 1177: `C-M-n' and `C-M-p' stay at the same level in parentheses, when that's ! 1178: possible. To move up one (or N) levels, use `C-M-u' (`backward-up-list'). ! 1179: `C-M-u' moves backward up past one unmatched opening delimiter. A positive ! 1180: argument serves as a repeat count; a negative argument reverses direction ! 1181: of motion and also requests repetition, so it moves forward and up one or ! 1182: more levels. ! 1183: ! 1184: To move down in list structure, use `C-M-d' (`down-list'). In Lisp mode, ! 1185: where `(' is the only opening delimiter, this is nearly the same as ! 1186: searching for a `('. An argument specifies the number of levels ! 1187: of parentheses to go down. ! 1188: ! 1189: A somewhat random-sounding command which is nevertheless easy to use is ! 1190: `C-M-t' (`transpose-sexps'), which drags the previous sexp across ! 1191: the next one. An argument serves as a repeat count, and a negative ! 1192: argument drags backwards (thus canceling out the effect of `C-M-t' with ! 1193: a positive argument). An argument of zero, rather than doing nothing, ! 1194: transposes the sexps ending after point and the mark. ! 1195: ! 1196: To make the region be the next sexp in the buffer, use `C-M-@' ! 1197: (`mark-sexp') which sets mark at the same place that `C-M-f' would ! 1198: move to. `C-M-@' takes arguments like `C-M-f'. In particular, a ! 1199: negative argument is useful for putting the mark at the beginning of the ! 1200: previous sexp. ! 1201: ! 1202: The list and sexp commands' understanding of syntax is completely ! 1203: controlled by the syntax table. Any character can, for example, be ! 1204: declared to be an opening delimiter and act like an open parenthesis. ! 1205: *Note Syntax::. ! 1206: ! 1207:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.