Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-6, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.