Annotation of GNUtools/emacs/info/emacs-6, revision 1.1

1.1     ! root        1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
        !             2: input file emacs.texi.
        !             3: 
        !             4:    This file documents the GNU Emacs editor.
        !             5: 
        !             6:    Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
        !             7: 
        !             8:    Permission is granted to make and distribute verbatim copies of this
        !             9: manual provided the copyright notice and this permission notice are
        !            10: preserved on all copies.
        !            11: 
        !            12:    Permission is granted to copy and distribute modified versions of
        !            13: this manual under the conditions for verbatim copying, provided also
        !            14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19:    Permission is granted to copy and distribute translations of this
        !            20: manual into another language, under the above conditions for modified
        !            21: versions, except that the sections entitled "The GNU Manifesto",
        !            22: "Distribution" and "GNU General Public License" may be included in a
        !            23: translation approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs,  Node: Several Buffers,  Prev: Kill Buffer,  Up: Buffers
        !            27: 
        !            28: Operating on Several Buffers
        !            29: ============================
        !            30: 
        !            31:    The "buffer-menu" facility is like a "Dired for buffers"; it allows
        !            32: you to request operations on various Emacs buffers by editing an Emacs
        !            33: buffer containing a list of them.  You can save buffers, kill them
        !            34: (here called "deleting" them, for consistency with Dired), or display
        !            35: them.
        !            36: 
        !            37: `M-x buffer-menu'
        !            38:      Begin editing a buffer listing all Emacs buffers.
        !            39: 
        !            40:    The command `buffer-menu' writes a list of all Emacs buffers into
        !            41: the buffer `*Buffer List*', and selects that buffer in Buffer Menu
        !            42: mode.  The buffer is read-only, and can only be changed through the
        !            43: special commands described in this section.  Most of these commands are
        !            44: graphic characters.  The usual Emacs cursor motion commands can be used
        !            45: in the `*Buffer List*' buffer.  The following special commands apply to
        !            46: the buffer described on the current line.
        !            47: 
        !            48: `d'
        !            49:      Request to delete (kill) the buffer, then move down.  The request
        !            50:      shows as a `D' on the line, before the buffer name.  Requested
        !            51:      deletions take place when the `x' command is used.
        !            52: 
        !            53: `k'
        !            54:      Synonym for `d'.
        !            55: 
        !            56: `C-d'
        !            57:      Like `d' but move up afterwards instead of down.
        !            58: 
        !            59: `s'
        !            60:      Request to save the buffer.  The request shows as an `S' on the
        !            61:      line.  Requested saves take place when the `x' command is used.
        !            62:      You may request both saving and deletion for the same buffer.
        !            63: 
        !            64: `~'
        !            65:      Mark buffer "unmodified".  The command `~' does this immediately
        !            66:      when typed.
        !            67: 
        !            68: `x'
        !            69:      Perform previously requested deletions and saves.
        !            70: 
        !            71: `u'
        !            72:      Remove any request made for the current line, and move down.
        !            73: 
        !            74: `DEL'
        !            75:      Move to previous line and remove any request made for that line.
        !            76: 
        !            77:    All the commands that put in or remove flags to request later
        !            78: operations also move down a line, and accept a numeric argument as a
        !            79: repeat count, unless otherwise specified.
        !            80: 
        !            81:    There are also special commands to use the buffer list to select
        !            82: another buffer, and to specify one or more other buffers for display in
        !            83: additional windows.
        !            84: 
        !            85: `1'
        !            86:      Select the buffer in a full-screen window.  This command takes
        !            87:      effect immediately.
        !            88: 
        !            89: `2'
        !            90:      Immediately set up two windows, with this buffer in one, and the
        !            91:      previously selected buffer (aside from the buffer `*Buffer List*')
        !            92:      in the other.
        !            93: 
        !            94: `f'
        !            95:      Immediately select the buffer in place of the `*Buffer List*'
        !            96:      buffer.
        !            97: 
        !            98: `o'
        !            99:      Immediately select the buffer in another window as if by `C-x 4 b',
        !           100:      leaving `*Buffer List*' visible.
        !           101: 
        !           102: `q'
        !           103:      Immediately select this buffer, and also display in other windows
        !           104:      any buffers previously flagged with the `m' command.  If there are
        !           105:      no such buffers, this command is equivalent to `1'.
        !           106: 
        !           107: `m'
        !           108:      Flag this buffer to be displayed in another window if the `q'
        !           109:      command is used.  The request shows as a `>' at the beginning of
        !           110:      the line.  The same buffer may not have both a delete request and a
        !           111:      display request.
        !           112: 
        !           113:    All that `buffer-menu' does directly is create and select a suitable
        !           114: buffer, and turn on Buffer Menu mode.  Everything else described above
        !           115: is implemented by the special commands provided in Buffer Menu mode. 
        !           116: One consequence of this is that you can switch from the `*Buffer List*'
        !           117: buffer to another Emacs buffer, and edit there.  You can reselect the
        !           118: `buffer-menu' buffer later, to perform the operations already
        !           119: requested, or you can kill it, or pay no further attention to it.
        !           120: 
        !           121:    The only difference between `buffer-menu' and `list-buffers' is that
        !           122: `buffer-menu' selects the `*Buffer List*' buffer and `list-buffers'
        !           123: does not.  If you run `list-buffers' (that is, type `C-x C-b') and
        !           124: select the buffer list manually, you can use all of the commands
        !           125: described here.
        !           126: 
        !           127: 
        !           128: File: emacs,  Node: Windows,  Next: Major Modes,  Prev: Buffers,  Up: Top
        !           129: 
        !           130: Multiple Windows
        !           131: ****************
        !           132: 
        !           133:    Emacs can split the screen into two or many windows, which can
        !           134: display parts of different buffers, or different parts of one buffer.
        !           135: 
        !           136: * Menu:
        !           137: 
        !           138: * Basic Window::     Introduction to Emacs windows.
        !           139: * Split Window::     New windows are made by splitting existing windows.
        !           140: * Other Window::     Moving to another window or doing something to it.
        !           141: * Pop Up Window::    Finding a file or buffer in another window.
        !           142: * Change Window::    Deleting windows and changing their sizes.
        !           143: 
        !           144: 
        !           145: File: emacs,  Node: Basic Window,  Next: Split Window,  Prev: Windows,  Up: Windows
        !           146: 
        !           147: Concepts of Emacs Windows
        !           148: =========================
        !           149: 
        !           150:    When multiple windows are being displayed, each window has an Emacs
        !           151: buffer designated for display in it.  The same buffer may appear in more
        !           152: than one window; if it does, any changes in its text are displayed in
        !           153: all the windows where it appears.  But the windows showing the same
        !           154: buffer can show different parts of it, because each window has its own
        !           155: value of point.
        !           156: 
        !           157:    At any time, one of the windows is the "selected window"; the buffer
        !           158: this window is displaying is the current buffer.  The terminal's cursor
        !           159: shows the location of point in this window.  Each other window has a
        !           160: location of point as well, but since the terminal has only one cursor
        !           161: there is no way to show where those locations are.
        !           162: 
        !           163:    Commands to move point affect the value of point for the selected
        !           164: Emacs window only.  They do not change the value of point in any other
        !           165: Emacs window, even one showing the same buffer.  The same is true for
        !           166: commands such as `C-x b' to change the selected buffer in the selected
        !           167: window; they do not affect other windows at all.  However, there are
        !           168: other commands such as `C-x 4 b' that select a different window and
        !           169: switch buffers in it.  Also, all commands that display information in a
        !           170: window, including (for example) `C-h f' (`describe-function') and `C-x
        !           171: C-b' (`list-buffers'), work by switching buffers in a nonselected window
        !           172: without affecting the selected window.
        !           173: 
        !           174:    Each window has its own mode line, which displays the buffer name,
        !           175: modification status and major and minor modes of the buffer that is
        !           176: displayed in the window.  *Note Mode Line::, for full details on the
        !           177: mode line.
        !           178: 
        !           179: 
        !           180: File: emacs,  Node: Split Window,  Next: Other Window,  Prev: Basic Window,  Up: Windows
        !           181: 
        !           182: Splitting Windows
        !           183: =================
        !           184: 
        !           185: `C-x 2'
        !           186:      Split the selected window into two windows, one above the other
        !           187:      (`split-window-vertically').
        !           188: 
        !           189: `C-x 5'
        !           190:      Split the selected window into two windows positioned side by side
        !           191:      (`split-window-horizontally').
        !           192: 
        !           193:    The command `C-x 2' (`split-window-vertically') breaks the selected
        !           194: window into two windows, one above the other.  Both windows start out
        !           195: displaying the same buffer, with the same value of point.  By default
        !           196: the two windows each get half the height of the window that was split; a
        !           197: numeric argument specifies how many lines to give to the top window.
        !           198: 
        !           199:    `C-x 5' (`split-window-horizontally') breaks the selected window
        !           200: into two side-by-side windows.  A numeric argument specifies how many
        !           201: columns to give the one on the left.  A line of vertical bars separates
        !           202: the two windows.  Windows that are not the full width of the screen
        !           203: have mode lines, but they are truncated; also, they do not always
        !           204: appear in inverse video, because, the Emacs display routines have not
        !           205: been taught how to display a region of inverse video that is only part
        !           206: of a line on the screen.
        !           207: 
        !           208:    When a window is less than the full width, text lines too long to
        !           209: fit are frequent.  Continuing all those lines might be confusing.  The
        !           210: variable `truncate-partial-width-windows' can be set non-`nil' to force
        !           211: truncation in all windows less than the full width of the screen,
        !           212: independent of the buffer being displayed and its value for
        !           213: `truncate-lines'.  *Note Continuation Lines::.
        !           214: 
        !           215:    Horizontal scrolling is often used in side-by-side windows. *Note
        !           216: Display::.
        !           217: 
        !           218: 
        !           219: File: emacs,  Node: Other Window,  Next: Pop Up Window,  Prev: Split Window,  Up: Windows
        !           220: 
        !           221: Using Other Windows
        !           222: ===================
        !           223: 
        !           224: `C-x o'
        !           225:      Select another window (`other-window').  That is `o', not zero.
        !           226: 
        !           227: `C-M-v'
        !           228:      Scroll the next window (`scroll-other-window').
        !           229: 
        !           230: `M-x compare-windows'
        !           231:      Find next place where the text in the selected window does not
        !           232:      match the text in the next window.
        !           233: 
        !           234:    To select a different window, use `C-x o' (`other-window'). That is
        !           235: an `o', for `other', not a zero.  When there are more than two windows,
        !           236: this command moves through all the windows in a cyclic order, generally
        !           237: top to bottom and left to right.  From the rightmost and bottommost
        !           238: window, it goes back to the one at the upper left corner.  A numeric
        !           239: argument means to move several steps in the cyclic order of windows.  A
        !           240: negative argument moves around the cycle in the opposite order. When
        !           241: the minibuffer is active, the minibuffer is the last window in the
        !           242: cycle; you can switch from the minibuffer window to one of the other
        !           243: windows, and later switch back and finish supplying the minibuffer
        !           244: argument that is requested.  *Note Minibuffer Edit::.
        !           245: 
        !           246:    The usual scrolling commands (*note Display::.) apply to the selected
        !           247: window only, but there is one command to scroll the next window.
        !           248: `C-M-v' (`scroll-other-window') scrolls the window that `C-x o' would
        !           249: select.  It takes arguments, positive and negative, like `C-v'.
        !           250: 
        !           251:    The command `M-x compare-windows' compares the text in the current
        !           252: window with that in the next window.  Comparison starts at point in each
        !           253: window.  Point moves forward in each window, a character at a time in
        !           254: each window, until the next characters in the two windows are
        !           255: different.  Then the command is finished.
        !           256: 
        !           257: 
        !           258: File: emacs,  Node: Pop Up Window,  Next: Change Window,  Prev: Other Window,  Up: Windows
        !           259: 
        !           260: Displaying in Another Window
        !           261: ============================
        !           262: 
        !           263:    `C-x 4' is a prefix key for commands that select another window
        !           264: (splitting the window if there is only one) and select a buffer in that
        !           265: window.  Different `C-x 4' commands have different ways of finding the
        !           266: buffer to select.
        !           267: 
        !           268: `C-x 4 b BUFNAME RET'
        !           269:      Select buffer BUFNAME in another window.  This runs
        !           270:      `switch-to-buffer-other-window'.
        !           271: 
        !           272: `C-x 4 f FILENAME RET'
        !           273:      Visit file FILENAME and select its buffer in another window.  This
        !           274:      runs `find-file-other-window'.  *Note Visiting::.
        !           275: 
        !           276: `C-x 4 d DIRECTORY RET'
        !           277:      Select a Dired buffer for directory DIRECTORY in another window.
        !           278:      This runs `dired-other-window'.  *Note Dired::.
        !           279: 
        !           280: `C-x 4 m'
        !           281:      Start composing a mail message in another window.  This runs
        !           282:      `mail-other-window', and its same-window version is `C-x m' (*note
        !           283:      Sending Mail::.).
        !           284: 
        !           285: `C-x 4 .'
        !           286:      Find a tag in the current tag table in another window.  This runs
        !           287:      `find-tag-other-window', the multiple-window variant of `M-.'
        !           288:      (*note Tags::.).
        !           289: 
        !           290: 
        !           291: File: emacs,  Node: Change Window,  Prev: Pop Up Window,  Up: Windows
        !           292: 
        !           293: Deleting and Rearranging Windows
        !           294: ================================
        !           295: 
        !           296: `C-x 0'
        !           297:      Get rid of the selected window (`kill-window').  That is a zero.
        !           298: 
        !           299: `C-x 1'
        !           300:      Get rid of all windows except the selected one
        !           301:      (`delete-other-windows').
        !           302: 
        !           303: `C-x ^'
        !           304:      Make the selected window taller, at the expense of the other(s)
        !           305:      (`enlarge-window').
        !           306: 
        !           307: `C-x }'
        !           308:      Widen the selected window (`enlarge-window-horizontally').
        !           309: 
        !           310:    To delete a window, type `C-x 0' (`delete-window').  (That is a
        !           311: zero.)  The space occupied by the deleted window is distributed among
        !           312: the other active windows (but not the minibuffer window, even if that
        !           313: is active at the time).  Once a window is deleted, its attributes are
        !           314: forgotten; there is no automatic way to make another window of the same
        !           315: shape or showing the same buffer.  But the buffer continues to exist,
        !           316: and you can select it in any window with `C-x b'.
        !           317: 
        !           318:    `C-x 1' (`delete-other-windows') is more powerful than `C-x 0'; it
        !           319: deletes all the windows except the selected one (and the minibuffer);
        !           320: the selected window expands to use the whole screen except for the echo
        !           321: area.
        !           322: 
        !           323:    To readjust the division of space among existing windows, use `C-x ^'
        !           324: (`enlarge-window').  It makes the currently selected window get one
        !           325: line bigger, or as many lines as is specified with a numeric argument.
        !           326: With a negative argument, it makes the selected window smaller.  `C-x
        !           327: }' (`enlarge-window-horizontally') makes the selected window wider by
        !           328: the specified number of columns.  The extra screen space given to a
        !           329: window comes from one of its neighbors, if that is possible; otherwise,
        !           330: all the competing windows are shrunk in the same proportion.  If this
        !           331: makes any windows too small, those windows are deleted and their space
        !           332: is divided up. The minimum size is specified by the variables
        !           333: `window-min-height' and `window-min-width'.
        !           334: 
        !           335: 
        !           336: File: emacs,  Node: Major Modes,  Next: Indentation,  Prev: Windows,  Up: Top
        !           337: 
        !           338: Major Modes
        !           339: ***********
        !           340: 
        !           341:    Emacs has many different "major modes", each of which customizes
        !           342: Emacs for editing text of a particular sort.  The major modes are
        !           343: mutually exclusive, and each buffer has one major mode at any time. 
        !           344: The mode line normally contains the name of the current major mode, in
        !           345: parentheses. *Note Mode Line::.
        !           346: 
        !           347:    The least specialized major mode is called "Fundamental mode".  This
        !           348: mode has no mode-specific redefinitions or variable settings, so that
        !           349: each Emacs command behaves in its most general manner, and each option
        !           350: is in its default state.  For editing any specific type of text, such
        !           351: as Lisp code or English text, you should switch to the appropriate
        !           352: major mode, such as Lisp mode or Text mode.
        !           353: 
        !           354:    Selecting a major mode changes the meanings of a few keys to become
        !           355: more specifically adapted to the language being edited.  The ones which
        !           356: are changed frequently are TAB, DEL, and LFD.  In addition, the
        !           357: commands which handle comments use the mode to determine how comments
        !           358: are to be delimited.  Many major modes redefine the syntactical
        !           359: properties of characters appearing in the buffer.  *Note Syntax::.
        !           360: 
        !           361:    The major modes fall into three major groups.  Lisp mode (which has
        !           362: several variants), C mode and Muddle mode are for specific programming
        !           363: languages.  Text mode, Nroff mode, TeX mode and Outline mode are for
        !           364: editing English text.  The remaining major modes are not intended for
        !           365: use on users' files; they are used in buffers created for specific
        !           366: purposes by Emacs, such as Dired mode for buffers made by Dired (*note
        !           367: Dired::.), and Mail mode for buffers made by `C-x m' (*note Sending
        !           368: Mail::.), and Shell mode for buffers used for communicating with an
        !           369: inferior shell process (*note Interactive Shell::.).
        !           370: 
        !           371:    Most programming language major modes specify that only blank lines
        !           372: separate paragraphs.  This is so that the paragraph commands remain
        !           373: useful. *Note Paragraphs::.  They also cause Auto Fill mode to use the
        !           374: definition of TAB to indent the new lines it creates.  This is because
        !           375: most lines in a program are usually indented.  *Note Indentation::.
        !           376: 
        !           377: * Menu:
        !           378: 
        !           379: * Choosing Modes::     How major modes are specified or chosen.
        !           380: 
        !           381: 
        !           382: File: emacs,  Node: Choosing Modes,  Prev: Major Modes,  Up: Major Modes
        !           383: 
        !           384: How Major Modes are Chosen
        !           385: ==========================
        !           386: 
        !           387:    You can select a major mode explicitly for the current buffer, but
        !           388: most of the time Emacs determines which mode to use based on the file
        !           389: name or some text in the file.
        !           390: 
        !           391:    Explicit selection of a new major mode is done with a `M-x' command.
        !           392: From the name of a major mode, add `-mode' to get the name of a command
        !           393: to select that mode.  Thus, you can enter Lisp mode by executing `M-x
        !           394: lisp-mode'.
        !           395: 
        !           396:    When you visit a file, Emacs usually chooses the right major mode
        !           397: based on the file's name.  For example, files whose names end in `.c'
        !           398: are edited in C mode.  The correspondence between file names and major
        !           399: mode is controlled by the variable `auto-mode-alist'.  Its value is a
        !           400: list in which each element has the form
        !           401: 
        !           402:      (REGEXP . MODE-FUNCTION)
        !           403: 
        !           404: For example, one element normally found in the list has the form
        !           405: `("\\.c$" . c-mode)', and it is responsible for selecting C mode for
        !           406: files whose names end in `.c'.  (Note that `\\' is needed in Lisp
        !           407: syntax to include a `\' in the string, which is needed to suppress the
        !           408: special meaning of `.' in regexps.)  The only practical way to change
        !           409: this variable is with Lisp code.
        !           410: 
        !           411:    You can specify which major mode should be used for editing a certain
        !           412: file by a special sort of text in the first nonblank line of the file. 
        !           413: The mode name should appear in this line both preceded and followed by
        !           414: `-*-'.  Other text may appear on the line as well.  For example,
        !           415: 
        !           416:      ;-*-Lisp-*-
        !           417: 
        !           418: tells Emacs to use Lisp mode.  Note how the semicolon is used to make
        !           419: Lisp treat this line as a comment.  Such an explicit specification
        !           420: overrides any defaulting based on the file name.
        !           421: 
        !           422:    Another format of mode specification is
        !           423: 
        !           424:      -*-Mode: MODENAME;-*-
        !           425: 
        !           426: which allows other things besides the major mode name to be specified.
        !           427: However, Emacs does not look for anything except the mode name.
        !           428: 
        !           429:    The major mode can also be specified in a local variables list.
        !           430: *Note File Variables::.
        !           431: 
        !           432:    When a file is visited that does not specify a major mode to use, or
        !           433: when a new buffer is created with `C-x b', the major mode used is that
        !           434: specified by the variable `default-major-mode'.  Normally this value is
        !           435: the symbol `fundamental-mode', which specifies Fundamental mode. If
        !           436: `default-major-mode' is `nil', the major mode is taken from the
        !           437: previously selected buffer.
        !           438: 
        !           439:    The command `M-x normal-mode' recalculates the major mode from the
        !           440: visited file name and the contents of the buffer.
        !           441: 
        !           442: 
        !           443: File: emacs,  Node: Indentation,  Next: Text,  Prev: Major Modes,  Up: Top
        !           444: 
        !           445: Indentation
        !           446: ***********
        !           447: 
        !           448: `TAB'
        !           449:      Indent current line "appropriately" in a mode-dependent fashion.
        !           450: 
        !           451: `LFD'
        !           452:      Perform RET followed by TAB (`newline-and-indent').
        !           453: 
        !           454: `M-^'
        !           455:      Merge two lines (`delete-indentation').  This would cancel out the
        !           456:      effect of LFD.
        !           457: 
        !           458: `C-M-o'
        !           459:      Split line at point; text on the line after point becomes a new
        !           460:      line indented to the same column that it now starts in
        !           461:      (`split-line').
        !           462: 
        !           463: `M-m'
        !           464:      Move (forward or back) to the first nonblank character on the
        !           465:      current line (`back-to-indentation').
        !           466: 
        !           467: `C-M-\'
        !           468:      Indent several lines to same column (`indent-region').
        !           469: 
        !           470: `C-x TAB'
        !           471:      Shift block of lines rigidly right or left (`indent-rigidly').
        !           472: 
        !           473: `M-i'
        !           474:      Indent from point to the next prespecified tab stop column
        !           475:      (`tab-to-tab-stop').
        !           476: 
        !           477: `M-x indent-relative'
        !           478:      Indent from point to under an indentation point in the previous
        !           479:      line.
        !           480: 
        !           481:    Most programming languages have some indentation convention.  For
        !           482: Lisp code, lines are indented according to their nesting in
        !           483: parentheses.  The same general idea is used for C code, though many
        !           484: details are different.
        !           485: 
        !           486:    Whatever the language, to indent a line, use the TAB command.  Each
        !           487: major mode defines this command to perform the sort of indentation
        !           488: appropriate for the particular language.  In Lisp mode, TAB aligns the
        !           489: line according to its depth in parentheses.  No matter where in the
        !           490: line you are when you type TAB, it aligns the line as a whole.  In C
        !           491: mode, TAB implements a subtle and sophisticated indentation style that
        !           492: knows about many aspects of C syntax.
        !           493: 
        !           494:    In Text mode, TAB runs the command `tab-to-tab-stop', which indents
        !           495: to the next tab stop column.  You can set the tab stops with `M-x
        !           496: edit-tab-stops'.
        !           497: 
        !           498: * Menu:
        !           499: 
        !           500: * Indentation Commands:: Various commands and techniques for indentation.
        !           501: * Tab Stops::            You can set arbitrary "tab stops" and then
        !           502:                          indent to the next tab stop when you want to.
        !           503: * Just Spaces::          You can request indentation using just spaces.
        !           504: 
        !           505: 
        !           506: File: emacs,  Node: Indentation Commands,  Next: Tab Stops,  Prev: Indentation,  Up: Indentation
        !           507: 
        !           508: Indentation Commands and Techniques
        !           509: ===================================
        !           510: 
        !           511:    If you just want to insert a tab character in the buffer, you can
        !           512: type `C-q TAB'.
        !           513: 
        !           514:    To move over the indentation on a line, type `Meta-m'. This command,
        !           515: given anywhere on a line, positions point at the first nonblank
        !           516: character on the line (`back-to-indentation').
        !           517: 
        !           518:    To insert an indented line before the current line, do `C-a C-o
        !           519: TAB'.  To make an indented line after the current line, use `C-e LFD'.
        !           520: 
        !           521:    `C-M-o' (`split-line') moves the text from point to the end of the
        !           522: line vertically down, so that the current line becomes two lines.
        !           523: `C-M-o' first moves point forward over any spaces and tabs.  Then it
        !           524: inserts after point a newline and enough indentation to reach the same
        !           525: column point is on.  Point remains before the inserted newline; in this
        !           526: regard, `C-M-o' resembles `C-o'.
        !           527: 
        !           528:    To join two lines cleanly, use the `Meta-^' (`delete-indentation')
        !           529: command to delete the indentation at the front of the current line, and
        !           530: the line boundary as well.  They are replaced by a single space, or by
        !           531: no space if point after joining is at the beginning of a line or before
        !           532: a `)' or after a `('.  To delete just the indentation of a line, go to
        !           533: the beginning of the line and use `Meta-\' (`delete-horizontal-space'),
        !           534: which deletes all spaces and tabs around the cursor.
        !           535: 
        !           536:    There are also commands for changing the indentation of several
        !           537: lines at once.  `Control-Meta-\' (`indent-region') gives each line which
        !           538: begins in the region the "usual" indentation by invoking TAB at the
        !           539: beginning of the line.  A numeric argument specifies the column to
        !           540: indent to, and each line is shifted left or right so that its first
        !           541: nonblank character appears in that column.  `C-x TAB'
        !           542: (`indent-rigidly') moves all of the lines in the region right by its
        !           543: argument (left, for negative arguments).  The whole group of lines moves
        !           544: rigidly sideways, which is how the command gets its name.
        !           545: 
        !           546:    `M-x indent-relative' indents at point based on the previous line
        !           547: (actually, the last nonempty line.)  It inserts whitespace at point,
        !           548: moving point, until it is underneath an indentation point in the
        !           549: previous line. An indentation point is the end of a sequence of
        !           550: whitespace or the end of the line.  If point is farther right than any
        !           551: indentation point in the previous line, the whitespace before point is
        !           552: deleted and the first indentation point then applicable is used.  If no
        !           553: indentation point is applicable even then, `tab-to-tab-stop' is run
        !           554: (see next section).
        !           555: 
        !           556:    `indent-relative' is the definition of TAB in Indented Text mode. 
        !           557: *Note Text::.
        !           558: 
        !           559: 
        !           560: File: emacs,  Node: Tab Stops,  Next: Just Spaces,  Prev: Indentation Commands,  Up: Indentation
        !           561: 
        !           562: Tab Stops
        !           563: =========
        !           564: 
        !           565:    For typing in tables, you can use Text mode's definition of TAB,
        !           566: `tab-to-tab-stop'.  This command inserts indentation before point,
        !           567: enough to reach the next tab stop column.  If you are not in Text mode,
        !           568: this function can be found on `M-i' anyway.
        !           569: 
        !           570:    The tab stops used by `M-i' can be set arbitrarily by the user. They
        !           571: are stored in a variable called `tab-stop-list', as a list of
        !           572: column-numbers in increasing order.
        !           573: 
        !           574:    The convenient way to set the tab stops is using `M-x
        !           575: edit-tab-stops', which creates and selects a buffer containing a
        !           576: description of the tab stop settings.  You can edit this buffer to
        !           577: specify different tab stops, and then type `C-c C-c' to make those new
        !           578: tab stops take effect.  In the tab stop buffer, `C-c C-c' runs the
        !           579: function `edit-tab-stops-note-changes' rather than its usual definition
        !           580: `save-buffer'.  `edit-tab-stops' records which buffer was current when
        !           581: you invoked it, and stores the tab stops back in that buffer; normally
        !           582: all buffers share the same tab stops and changing them in one buffer
        !           583: affects all, but if you happen to make `tab-stop-list' local in one
        !           584: buffer then `edit-tab-stops' in that buffer will edit the local
        !           585: settings.
        !           586: 
        !           587:    Here is what the text representing the tab stops looks like for
        !           588: ordinary tab stops every eight columns.
        !           589: 
        !           590:              :       :       :       :       :       :
        !           591:      0         1         2         3         4
        !           592:      0123456789012345678901234567890123456789012345678
        !           593:      To install changes, type C-c C-c
        !           594: 
        !           595:    The first line contains a colon at each tab stop.  The remaining
        !           596: lines are present just to help you see where the colons are and know
        !           597: what to do.
        !           598: 
        !           599:    Note that the tab stops that control `tab-to-tab-stop' have nothing
        !           600: to do with displaying tab characters in the buffer.  *Note Display
        !           601: Vars::, for more information on that.
        !           602: 
        !           603: 
        !           604: File: emacs,  Node: Just Spaces,  Prev: Tab Stops,  Up: Indentation
        !           605: 
        !           606: Tabs vs. Spaces
        !           607: ===============
        !           608: 
        !           609:    Emacs normally uses both tabs and spaces to indent lines.  If you
        !           610: prefer, all indentation can be made from spaces only.  To request this,
        !           611: set `indent-tabs-mode' to `nil'.  This is a per-buffer variable;
        !           612: altering the variable affects only the current buffer, but there is a
        !           613: default value which you can change as well.  *Note Locals::.
        !           614: 
        !           615:    There are also commands to convert tabs to spaces or vice versa,
        !           616: always preserving the columns of all nonblank text.  `M-x tabify' scans
        !           617: the region for sequences of spaces, and converts sequences of at least
        !           618: three spaces to tabs if that can be done without changing indentation. 
        !           619: `M-x untabify' changes all tabs in the region to appropriate numbers of
        !           620: spaces.
        !           621: 
        !           622: 
        !           623: File: emacs,  Node: Text,  Next: Programs,  Prev: Indentation,  Up: Top
        !           624: 
        !           625: Commands for Human Languages
        !           626: ****************************
        !           627: 
        !           628:    The term "text" has two widespread meanings in our area of the
        !           629: computer field.  One is data that is a sequence of characters.  Any file
        !           630: that you edit with Emacs is text, in this sense of the word.  The other
        !           631: meaning is more restrictive: a sequence of characters in a human
        !           632: language for humans to read (possibly after processing by a text
        !           633: formatter), as opposed to a program or commands for a program.
        !           634: 
        !           635:    Human languages have syntactic/stylistic conventions that can be
        !           636: supported or used to advantage by editor commands: conventions involving
        !           637: words, sentences, paragraphs, and capital letters.  This chapter
        !           638: describes Emacs commands for all of these things.  There are also
        !           639: commands for "filling", or rearranging paragraphs into lines of
        !           640: approximately equal length.  The commands for moving over and killing
        !           641: words, sentences and paragraphs, while intended primarily for editing
        !           642: text, are also often useful for editing programs.
        !           643: 
        !           644:    Emacs has several major modes for editing human language text. If
        !           645: the file contains text pure and simple, use Text mode, which customizes
        !           646: Emacs in small ways for the syntactic conventions of text.  For text
        !           647: which contains embedded commands for text formatters, Emacs has other
        !           648: major modes, each for a particular text formatter.  Thus, for input to
        !           649: TeX, you would use TeX mode; for input to nroff, Nroff mode.
        !           650: 
        !           651: * Menu:
        !           652: 
        !           653: * Text Mode::   The major modes for editing text files.
        !           654: * Nroff Mode::  The major mode for editing input to the formatter nroff.
        !           655: * TeX Mode::    The major modes for editing input to the formatter TeX.
        !           656: * Outline Mode::The major mode for editing outlines.
        !           657: * Words::       Moving over and killing words.
        !           658: * Sentences::   Moving over and killing sentences.
        !           659: * Paragraphs:: Moving over paragraphs.
        !           660: * Pages::      Moving over pages.
        !           661: * Filling::     Filling or justifying text
        !           662: * Case::        Changing the case of text
        !           663: 
        !           664: 
        !           665: File: emacs,  Node: Text Mode,  Next: Words,  Prev: Text,  Up: Text
        !           666: 
        !           667: Text Mode
        !           668: =========
        !           669: 
        !           670:    Editing files of text in a human language ought to be done using Text
        !           671: mode rather than Lisp or Fundamental mode.  Invoke `M-x text-mode' to
        !           672: enter Text mode.  In Text mode, TAB runs the function
        !           673: `tab-to-tab-stop', which allows you to use arbitrary tab stops set with
        !           674: `M-x edit-tab-stops' (*note Tab Stops::.).  Features concerned with
        !           675: comments in programs are turned off except when explicitly invoked.  The
        !           676: syntax table is changed so that periods are not considered part of a
        !           677: word, while apostrophes, backspaces and underlines are.
        !           678: 
        !           679:    A similar variant mode is Indented Text mode, intended for editing
        !           680: text in which most lines are indented.  This mode defines TAB to run
        !           681: `indent-relative' (*note Indentation::.), and makes Auto Fill indent
        !           682: the lines it creates.  The result is that normally a line made by Auto
        !           683: Filling, or by LFD, is indented just like the previous line.  Use `M-x
        !           684: indented-text-mode' to select this mode.
        !           685: 
        !           686:    Entering Text mode or Indented Text mode calls with no arguments the
        !           687: value of the variable `text-mode-hook', if that value exists and is not
        !           688: `nil'.  This value is also called when modes related to Text mode are
        !           689: entered; this includes Nroff mode, TeX mode, Outline mode and Mail
        !           690: mode.  Your hook can look at the value of `major-mode' to see which of
        !           691: these modes is actually being entered.
        !           692: 
        !           693: * Menu:
        !           694: 
        !           695:   Three modes similar to Text mode are of use for editing text that is to
        !           696: be passed through a text formatter before achieving the form in which
        !           697: humans are to read it.
        !           698: 
        !           699: * Nroff Mode::  The nroff formatter typesets text.
        !           700: * TeX Mode::    The TeX formatter typesets text and mathematics.
        !           701: * Texinfo Mode::Texinfo provides both on-line information and printed output
        !           702:                  from the same source file.
        !           703: 
        !           704:   Another similar mode is used for editing outlines.  It allows you
        !           705: to view the text at various levels of detail.  You can view either
        !           706: the outline headings alone or both headings and text; you can also
        !           707: hide some of the headings at lower levels from view to make the high
        !           708: level structure more visible.
        !           709: 
        !           710: * Outline Mode::The major mode for editing outlines.
        !           711: 
        !           712: 
        !           713: File: emacs,  Node: Nroff Mode,  Next: TeX Mode,  Prev: Text Mode,  Up: Text Mode
        !           714: 
        !           715: Nroff Mode
        !           716: ----------
        !           717: 
        !           718:    Nroff mode is a mode like Text mode but modified to handle nroff
        !           719: commands present in the text.  Invoke `M-x nroff-mode' to enter this
        !           720: mode.  It differs from Text mode in only a few ways.  All nroff command
        !           721: lines are considered paragraph separators, so that filling will never
        !           722: garble the nroff commands.  Pages are separated by `.bp' commands. 
        !           723: Comments start with backslash-doublequote.  Also, three special
        !           724: commands are provided that are not in Text mode:
        !           725: 
        !           726: `M-n'
        !           727:      Move to the beginning of the next line that isn't an nroff command
        !           728:      (`forward-text-line').  An argument is a repeat count.
        !           729: 
        !           730: `M-p'
        !           731:      Like `M-n' but move up (`backward-text-line').
        !           732: 
        !           733: `M-?'
        !           734:      Prints in the echo area the number of text lines (lines that are
        !           735:      not nroff commands) in the region (`count-text-lines').
        !           736: 
        !           737:    The other feature of Nroff mode is Electric Nroff newline mode.  This
        !           738: is a minor mode that you can turn on or off with `M-x
        !           739: electric-nroff-mode' (*note Minor Modes::.).  When the mode is on, each
        !           740: time you use RET to end a line that contains an nroff command that
        !           741: opens a kind of grouping, it also inserts the matching nroff command to
        !           742: close that grouping, on the following line.  For example, if you are at
        !           743: the beginning of a line and type `. ( b RET', this inserts the matching
        !           744: command `.)b' on a new line following point.
        !           745: 
        !           746:    Entering Nroff mode calls with no arguments the value of the variable
        !           747: `text-mode-hook', if that value exists and is not `nil'; then it does
        !           748: the same with the variable `nroff-mode-hook'.
        !           749: 
        !           750: 
        !           751: File: emacs,  Node: TeX Mode,  Next: Texinfo Mode,  Prev: Nroff Mode,  Up: Text Mode
        !           752: 
        !           753: TeX Mode
        !           754: --------
        !           755: 
        !           756:    TeX is a powerful text formatter written by Donald Knuth; it is also
        !           757: free, like GNU Emacs.  LaTeX is a simplified input format for TeX,
        !           758: implemented by TeX macros.  It comes with TeX.
        !           759: 
        !           760:    Emacs has a special TeX mode for editing TeX input files. It
        !           761: provides facilities for checking the balance of delimiters and for
        !           762: invoking TeX on all or part of the file.
        !           763: 
        !           764:    TeX mode has two variants, Plain TeX mode and LaTeX mode (actually
        !           765: two distinct major modes which differ only slightly).  They are
        !           766: designed for editing the two different input formats.  The command `M-x
        !           767: tex-mode' looks at the contents of the buffer to determine whether the
        !           768: contents appear to be LaTeX input or not; it then selects the
        !           769: appropriate mode.  If it can't tell which is right (e.g., the buffer is
        !           770: empty), the variable `TeX-default-mode' controls which mode is used.
        !           771: 
        !           772:    The commands `M-x plain-tex-mode' and `M-x latex-mode' explicitly
        !           773: select the two variants of TeX mode.  Use these commands when `M-x
        !           774: tex-mode' does not guess right.
        !           775: 
        !           776: * Menu:
        !           777: 
        !           778: * Editing: TeX Editing.   Special commands for editing in TeX mode.
        !           779: * Printing: TeX Print.    Commands for printing part of a file with TeX.
        !           780: 
        !           781:    TeX for Unix systems can be obtained from the University of
        !           782: Washington for a distribution fee.
        !           783: 
        !           784:    To order a full distribution, send $200.00 for a 1/2-inch 9-track
        !           785: 1600 bpi (`tar' or `cpio') tape reel, or $210.00 for a 1/4-inch 4-track
        !           786: QIC-24 (`tar' or `cpio') cartridge, to:
        !           787: 
        !           788:      Northwest Computing Support Center
        !           789:      DR-10, Thomson Hall 35
        !           790:      University of Washington
        !           791:      Seattle, Washington 98195
        !           792: 
        !           793: Please make checks payable to the University of Washington.
        !           794: 
        !           795:    Prepaid orders are preferred but purchase orders are acceptable;
        !           796: however, purchase orders carry an extra charge of $10.00, to pay for
        !           797: processing.
        !           798: 
        !           799:    Overseas sites: please add to the base cost $20.00 for shipment via
        !           800: air parcel post, or $30.00 for shipment via courier.
        !           801: 
        !           802:    Please check with the Northwest Computing Support Center at the
        !           803: University of Washington for current prices and formats:
        !           804: 
        !           805:      telephone:  (206) 543-6259
        !           806:      email:      [email protected]
        !           807: 
        !           808: 
        !           809: File: emacs,  Node: TeX Editing,  Next: TeX Print,  Prev: TeX Mode,  Up: TeX Mode
        !           810: 
        !           811: TeX Editing Commands
        !           812: ....................
        !           813: 
        !           814:    Here are the special commands provided in TeX mode for editing the
        !           815: text of the file.
        !           816: 
        !           817: `"'
        !           818:      Insert, according to context, either ```' or `"' or `'''
        !           819:      (`TeX-insert-quote').
        !           820: 
        !           821: `LFD'
        !           822:      Insert a paragraph break (two newlines) and check the previous
        !           823:      paragraph for unbalanced braces or dollar signs
        !           824:      (`TeX-terminate-paragraph').
        !           825: 
        !           826: `M-x validate-TeX-buffer'
        !           827:      Check each paragraph in the buffer for unbalanced braces or dollar
        !           828:      signs.
        !           829: 
        !           830: `M-{'
        !           831:      Insert `{}' and position point between them (`TeX-insert-braces').
        !           832: 
        !           833: `M-}'
        !           834:      Move forward past the next unmatched close brace (`up-list').
        !           835: 
        !           836: `C-c C-f'
        !           837:      Close a block for LaTeX (`TeX-close-LaTeX-block').
        !           838: 
        !           839:    In TeX, the character `"' is not normally used; use ```' to start a
        !           840: quotation and `''' to end one.  TeX mode defines the key `"' to insert
        !           841: ```' after whitespace or an open brace, `"' after a backslash, or `'''
        !           842: otherwise.  This is done by the command `TeX-insert-quote'.  If you
        !           843: need the character `"' itself in unusual contexts, use `C-q' to insert
        !           844: it.  Also, `"' with a numeric argument always inserts that number of
        !           845: `"' characters.
        !           846: 
        !           847:    In TeX mode, `$' has a special syntax code which attempts to
        !           848: understand the way TeX math mode delimiters match.  When you insert a
        !           849: `$' that is meant to exit math mode, the position of the matching `$'
        !           850: that entered math mode is displayed for a second.  This is the same
        !           851: feature that displays the open brace that matches a close brace that is
        !           852: inserted.  However, there is no way to tell whether a `$' enters math
        !           853: mode or leaves it; so when you insert a `$' that enters math mode, the
        !           854: previous `$' position is shown as if it were a match, even though they
        !           855: are actually unrelated.
        !           856: 
        !           857:    If you prefer to keep braces balanced at all times, you can use `M-{'
        !           858: (`TeX-insert-braces') to insert a pair of braces.  It leaves point
        !           859: between the two braces so you can insert the text that belongs inside.
        !           860: Afterward, use the command `M-}' (`up-list') to move forward past the
        !           861: close brace.
        !           862: 
        !           863:    There are two commands for checking the matching of braces.  LFD
        !           864: (`TeX-terminate-paragraph') checks the paragraph before point, and
        !           865: inserts two newlines to start a new paragraph.  It prints a message in
        !           866: the echo area if any mismatch is found.  `M-x validate-TeX-buffer'
        !           867: checks the entire buffer, paragraph by paragraph.  When it finds a
        !           868: paragraph that contains a mismatch, it displays point at the beginning
        !           869: of the paragraph for a few seconds and pushes a mark at that spot. 
        !           870: Scanning continues until the whole buffer has been checked or until you
        !           871: type another key. The positions of the last several paragraphs with
        !           872: mismatches can be found in the mark ring (*note Mark Ring::.).
        !           873: 
        !           874:    Note that square brackets and parentheses are matched in TeX mode,
        !           875: not just braces.  This is wrong for the purpose of checking TeX syntax.
        !           876: However, parentheses and square brackets are likely to be used in text
        !           877: as matching delimiters and it is useful for the various motion commands
        !           878: and automatic match display to work with them.
        !           879: 
        !           880:    In LaTeX input, `\begin' and `\end' commands must balance. After you
        !           881: insert a `\begin', use `C-c C-f' (`TeX-close-LaTeX-block') to insert
        !           882: automatically a matching `\end' (on a new line following the `\begin').
        !           883:  A blank line is inserted between the two, and point is left there.
        !           884: 
        !           885: 
        !           886: File: emacs,  Node: TeX Print,  Prev: TeX Editing,  Up: TeX Mode
        !           887: 
        !           888: TeX Printing Commands
        !           889: .....................
        !           890: 
        !           891:    You can invoke TeX as an inferior of Emacs on either the entire
        !           892: contents of the buffer or just a region at a time.  Running TeX in this
        !           893: way on just one chapter is a good way to see what your changes look
        !           894: like without taking the time to format the entire file.
        !           895: 
        !           896: `C-c C-r'
        !           897:      Invoke TeX on the current region, plus the buffer's header
        !           898:      (`TeX-region').
        !           899: 
        !           900: `C-c C-b'
        !           901:      Invoke TeX on the entire current buffer (`TeX-buffer').
        !           902: 
        !           903: `C-c C-l'
        !           904:      Recenter the window showing output from the inferior TeX so that
        !           905:      the last line can be seen (`TeX-recenter-output-buffer').
        !           906: 
        !           907: `C-c C-k'
        !           908:      Kill the inferior TeX (`TeX-kill-job').
        !           909: 
        !           910: `C-c C-p'
        !           911:      Print the output from the last `C-c C-r' or `C-c C-b' command
        !           912:      (`TeX-print').
        !           913: 
        !           914: `C-c C-q'
        !           915:      Show the printer queue (`TeX-show-print-queue').
        !           916: 
        !           917:    You can pass the current buffer through an inferior TeX by means of
        !           918: `C-c C-b' (`TeX-buffer').  The formatted output appears in a file in
        !           919: `/tmp'; to print it, type `C-c C-p' (`TeX-print'). Afterward use `C-c
        !           920: C-q' (`TeX-show-print-queue') to view the progress of your output
        !           921: towards being printed.
        !           922: 
        !           923:    The console output from TeX, including any error messages, appears
        !           924: in a buffer called `*TeX-shell*'.  If TeX gets an error, you can switch
        !           925: to this buffer and feed it input (this works as in Shell mode; *note
        !           926: Interactive Shell::.).  Without switching to this buffer you can scroll
        !           927: it so that its last line is visible by typing `C-c C-l'.
        !           928: 
        !           929:    Type `C-c C-k' (`TeX-kill-job') to kill the TeX process if you see
        !           930: that its output is no longer useful.  Using `C-c C-b' or `C-c C-r' also
        !           931: kills any TeX process still running.
        !           932: 
        !           933:    You can also pass an arbitrary region through an inferior TeX by
        !           934: typing `C-c C-r' (`TeX-region').  This is tricky, however, because most
        !           935: files of TeX input contain commands at the beginning to set parameters
        !           936: and define macros, without which no later part of the file will format
        !           937: correctly.  To solve this problem, `C-c C-r' allows you to designate a
        !           938: part of the file as containing essential commands; it is included before
        !           939: the specified region as part of the input to TeX.  The designated part
        !           940: of the file is called the "header".
        !           941: 
        !           942:    To indicate the bounds of the header in Plain TeX mode, you insert
        !           943: two special strings in the file.  Insert `%**start of header' before the
        !           944: header, and `%**end of header' after it.  Each string must appear
        !           945: entirely on one line, but there may be other text on the line before or
        !           946: after.  The lines containing the two strings are included in the header.
        !           947: If `%**start of header' does not appear within the first 100 lines of
        !           948: the buffer, `C-c C-r' assumes that there is no header.
        !           949: 
        !           950:    In LaTeX mode, the header begins with `\documentstyle' and ends with
        !           951: `\begin{document}'.  These are commands that LaTeX requires you to use
        !           952: in any case, so nothing special needs to be done to identify the header.
        !           953: 
        !           954:    Entering either kind of TeX mode calls with no arguments the value of
        !           955: the variable `text-mode-hook', if that value exists and is not `nil';
        !           956: then it does the same with the variable `TeX-mode-hook'. Finally it
        !           957: does the same with either `plain-TeX-mode-hook' or `LaTeX-mode-hook'.
        !           958: 
        !           959: 
        !           960: File: emacs,  Node: Texinfo Mode,  Next: Outline Mode,  Prev: TeX Mode,  Up: Text Mode
        !           961: 
        !           962: Texinfo Mode
        !           963: ------------
        !           964: 
        !           965:    Texinfo is a documentation system that uses a single source file to
        !           966: produce both on-line information and printed output.  This means that
        !           967: instead of writing two different documents, one for the on-line help or
        !           968: other on-line information and the other for a typeset manual or other
        !           969: printed work, you need write only one document.  When the work is
        !           970: revised, you need revise only one document.  (You can read the on-line
        !           971: information, known as an "Info file", with an Info
        !           972: documentation-reading program.  *note info: (info)Top, for more
        !           973: information about Info.)  Texinfo is the format in which documentation
        !           974: for GNU utilities and libraries is written.
        !           975: 
        !           976:    Texinfo mode provides special features for working with Texinfo files
        !           977: including utilities to construct Info menus and pointers automatically,
        !           978: keybindings to insert frequently used formatting commands, and
        !           979: keybindings for commands to format both for Info and for printing.
        !           980: 
        !           981:    Texinfo mode is described in *Note Using Texinfo Mode: (
        !           982: texinfo)Texinfo Mode.
        !           983: 
        !           984: 
        !           985: File: emacs,  Node: Outline Mode,  Prev: Texinfo Mode,  Up: Text Mode
        !           986: 
        !           987: Outline Mode
        !           988: ------------
        !           989: 
        !           990:    Outline mode is a major mode much like Text mode but intended for
        !           991: editing outlines.  It allows you to make parts of the text temporarily
        !           992: invisible so that you can see just the overall structure of the
        !           993: outline.  Type `M-x outline-mode' to turn on Outline mode in the
        !           994: current buffer.
        !           995: 
        !           996:    Entering Outline mode calls with no arguments the value of the
        !           997: variable `text-mode-hook', if that value exists and is not `nil'; then
        !           998: it does the same with the variable `outline-mode-hook'.
        !           999: 
        !          1000:    When a line is invisible in outline mode, it does not appear on the
        !          1001: screen.  The screen appears exactly as if the invisible line were
        !          1002: deleted, except that an ellipsis (three periods in a row) appears at
        !          1003: the end of the previous visible line (only one ellipsis no matter how
        !          1004: many invisible lines follow).
        !          1005: 
        !          1006:    All editing commands treat the text of the invisible line as part of
        !          1007: the previous visible line.  For example, `C-n' moves onto the next
        !          1008: visible line.  Killing an entire visible line, including its
        !          1009: terminating newline, really kills all the following invisible lines
        !          1010: along with it; yanking it all back yanks the invisible lines and they
        !          1011: remain invisible.
        !          1012: 
        !          1013: * Menu:
        !          1014: 
        !          1015: * Format: Outline Format.        What the text of an outline looks like.
        !          1016: * Motion: Outline Motion.        Special commands for moving through outlines.
        !          1017: * Visibility: Outline Visibility. Commands to control what is visible.
        !          1018: 
        !          1019: 
        !          1020: File: emacs,  Node: Outline Format,  Next: Outline Motion,  Prev: Outline Mode,  Up: Outline Mode
        !          1021: 
        !          1022: Format of Outlines
        !          1023: ..................
        !          1024: 
        !          1025:    Outline mode assumes that the lines in the buffer are of two types:
        !          1026: "heading lines" and "body lines".  A heading line represents a topic in
        !          1027: the outline.  Heading lines start with one or more stars; the number of
        !          1028: stars determines the depth of the heading in the outline structure. 
        !          1029: Thus, a heading line with one star is a major topic; all the heading
        !          1030: lines with two stars between it and the next one-star heading are its
        !          1031: subtopics; and so on.  Any line that is not a heading line is a body
        !          1032: line.  Body lines belong to the preceding heading line.  Here is an
        !          1033: example:
        !          1034: 
        !          1035:      * Food
        !          1036:      
        !          1037:      This is the body,
        !          1038:      which says something about the topic of food.
        !          1039:      
        !          1040:      ** Delicious Food
        !          1041:      
        !          1042:      This is the body of the second-level header.
        !          1043:      
        !          1044:      ** Distasteful Food
        !          1045:      
        !          1046:      This could have
        !          1047:      a body too, with
        !          1048:      several lines.
        !          1049:      
        !          1050:      *** Dormitory Food
        !          1051:      
        !          1052:      * Shelter
        !          1053:      
        !          1054:      A second first-level topic with its header line.
        !          1055: 
        !          1056:    A heading line together with all following body lines is called
        !          1057: collectively an "entry".  A heading line together with all following
        !          1058: deeper heading lines and their body lines is called a "subtree".
        !          1059: 
        !          1060:    You can customize the criterion for distinguishing heading lines by
        !          1061: setting the variable `outline-regexp'.  Any line whose beginning has a
        !          1062: match for this regexp is considered a heading line. Matches that start
        !          1063: within a line (not at the beginning) do not count. The length of the
        !          1064: matching text determines the level of the heading; longer matches make
        !          1065: a more deeply nested level.  Thus, for example, if a text formatter has
        !          1066: commands `@chapter', `@section' and `@subsection' to divide the
        !          1067: document into chapters and sections, you could make those lines count
        !          1068: as heading lines by setting `outline-regexp' to
        !          1069: `"@chap\\|@\\(sub\\)*section"'. Note the trick: the two words `chapter'
        !          1070: and `section' are equally long, but by defining the regexp to match
        !          1071: only `chap' we ensure that the length of the text matched on a chapter
        !          1072: heading is shorter, so that Outline mode will know that sections are
        !          1073: contained in chapters. This works as long as no other command starts
        !          1074: with `@chap'.
        !          1075: 
        !          1076:    Outline mode makes a line invisible by changing the newline before it
        !          1077: into an ASCII Control-M (code 015).  Most editing commands that work on
        !          1078: lines treat an invisible line as part of the previous line because,
        !          1079: strictly speaking, it is part of that line, since there is no longer a
        !          1080: newline in between.  When you save the file in Outline mode, Control-M
        !          1081: characters are saved as newlines, so the invisible lines become ordinary
        !          1082: lines in the file.  But saving does not change the visibility status of
        !          1083: a line inside Emacs.
        !          1084: 
        !          1085: 
        !          1086: File: emacs,  Node: Outline Motion,  Next: Outline Visibility,  Prev: Outline Format,  Up: Outline Mode
        !          1087: 
        !          1088: Outline Motion Commands
        !          1089: .......................
        !          1090: 
        !          1091:    There are some special motion commands in Outline mode that move
        !          1092: backward and forward to heading lines.
        !          1093: 
        !          1094: `C-c C-n'
        !          1095:      Move point to the next visible heading line
        !          1096:      (`outline-next-visible-heading').
        !          1097: 
        !          1098: `C-c C-p'
        !          1099:      Move point to the previous visible heading line
        !          1100:      (`outline-previous-visible-heading').
        !          1101: 
        !          1102: `C-c C-f'
        !          1103:      Move point to the next visible heading line at the same level as
        !          1104:      the one point is on (`outline-forward-same-level').
        !          1105: 
        !          1106: `C-c C-b'
        !          1107:      Move point to the previous visible heading line at the same level
        !          1108:      (`outline-backward-same-level').
        !          1109: 
        !          1110: `C-c C-u'
        !          1111:      Move point up to a lower-level (more inclusive) visible heading
        !          1112:      line (`outline-up-heading').
        !          1113: 
        !          1114:    `C-c C-n' (`next-visible-heading') moves down to the next heading
        !          1115: line.  `C-c C-p' (`previous-visible-heading') moves similarly backward.
        !          1116:  Both accept numeric arguments as repeat counts.  The names emphasize
        !          1117: that invisible headings are skipped, but this is not really a special
        !          1118: feature.  All editing commands that look for lines ignore the invisible
        !          1119: lines automatically.
        !          1120: 
        !          1121:    More advanced motion commands understand the levels of headings. The
        !          1122: two commands, `C-c C-f' (`outline-forward-same-level') and `C-c C-b'
        !          1123: (`outline-backward-same-level'), move from one heading line to another
        !          1124: visible heading at the same depth in the outline.  `C-c C-u'
        !          1125: (`outline-up-heading') moves backward to another heading that is less
        !          1126: deeply nested.
        !          1127: 
        !          1128: 
        !          1129: File: emacs,  Node: Outline Visibility,  Prev: Outline Motion,  Up: Outline Mode
        !          1130: 
        !          1131: Outline Visibility Commands
        !          1132: ...........................
        !          1133: 
        !          1134:    The other special commands of outline mode are used to make lines
        !          1135: visible or invisible.  Their names all start with `hide' or `show'.
        !          1136: Most of them fall into pairs of opposites.  They are not undoable;
        !          1137: instead, you can undo right past them.  Making lines visible or
        !          1138: invisible is simply not recorded by the undo mechanism.
        !          1139: 
        !          1140: `M-x hide-body'
        !          1141:      Make all body lines in the buffer invisible.
        !          1142: 
        !          1143: `M-x show-all'
        !          1144:      Make all lines in the buffer visible.
        !          1145: 
        !          1146: `C-c C-h'
        !          1147:      Make everything under this heading invisible, not including this
        !          1148:      heading itself (`hide-subtree').
        !          1149: 
        !          1150: `C-c C-s'
        !          1151:      Make everything under this heading visible, including body,
        !          1152:      subheadings, and their bodies (`show-subtree').
        !          1153: 
        !          1154: `M-x hide-leaves'
        !          1155:      Make the body of this heading line, and of all its subheadings,
        !          1156:      invisible.
        !          1157: 
        !          1158: `M-x show-branches'
        !          1159:      Make all subheadings of this heading line, at all levels, visible.
        !          1160: 
        !          1161: `C-c C-i'
        !          1162:      Make immediate subheadings (one level down) of this heading line
        !          1163:      visible (`show-children').
        !          1164: 
        !          1165: `M-x hide-entry'
        !          1166:      Make this heading line's body invisible.
        !          1167: 
        !          1168: `M-x show-entry'
        !          1169:      Make this heading line's body visible.
        !          1170: 
        !          1171:    Two commands that are exact opposites are `M-x hide-entry' and `M-x
        !          1172: show-entry'.  They are used with point on a heading line, and apply
        !          1173: only to the body lines of that heading.  The subtopics and their bodies
        !          1174: are not affected.
        !          1175: 
        !          1176:    Two more powerful opposites are `C-c C-h' (`hide-subtree') and `C-c
        !          1177: C-s' (`show-subtree').  Both expect to be used when point is on a
        !          1178: heading line, and both apply to all the lines of that heading's
        !          1179: "subtree": its body, all its subheadings, both direct and indirect, and
        !          1180: all of their bodies.  In other words, the subtree contains everything
        !          1181: following this heading line, up to and not including the next heading of
        !          1182: the same or higher rank.
        !          1183: 
        !          1184:    Intermediate between a visible subtree and an invisible one is having
        !          1185: all the subheadings visible but none of the body.  There are two
        !          1186: commands for doing this, depending on whether you want to hide the
        !          1187: bodies or make the subheadings visible.  They are `M-x hide-leaves' and
        !          1188: `M-x show-branches'.
        !          1189: 
        !          1190:    A little weaker than `show-branches' is `C-c C-i' (`show-children').
        !          1191:  It makes just the direct subheadings visible--those one level down. 
        !          1192: Deeper subheadings remain invisible, if they were invisible.
        !          1193: 
        !          1194:    Two commands have a blanket effect on the whole file.  `M-x
        !          1195: hide-body' makes all body lines invisible, so that you see just the
        !          1196: outline structure. `M-x show-all' makes all lines visible.  These
        !          1197: commands can be thought of as a pair of opposites even though `M-x
        !          1198: show-all' applies to more than just body lines.
        !          1199: 
        !          1200:    The use of ellipses at the ends of visible lines can be turned off
        !          1201: by setting `selective-display-ellipses' to `nil'.  Then there is no
        !          1202: visible indication of the presence of invisible lines.
        !          1203: 
        !          1204: 

unix.superglobalmegacorp.com

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