diff options
Diffstat (limited to 'info/emacs-6')
-rw-r--r-- | info/emacs-6 | 1204 |
1 files changed, 1204 insertions, 0 deletions
diff --git a/info/emacs-6 b/info/emacs-6 new file mode 100644 index 00000000000..5ff39073c11 --- /dev/null +++ b/info/emacs-6 @@ -0,0 +1,1204 @@ +This is Info file ../info/emacs, produced by Makeinfo-1.49 from the +input file emacs.texi. + + This file documents the GNU Emacs editor. + + Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "The GNU Manifesto", "Distribution" and "GNU +General Public License" are included exactly as in the original, and +provided that the entire resulting derived work is distributed under the +terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that the sections entitled "The GNU Manifesto", +"Distribution" and "GNU General Public License" may be included in a +translation approved by the author instead of in the original English. + + +File: emacs, Node: Several Buffers, Prev: Kill Buffer, Up: Buffers + +Operating on Several Buffers +============================ + + The "buffer-menu" facility is like a "Dired for buffers"; it allows +you to request operations on various Emacs buffers by editing an Emacs +buffer containing a list of them. You can save buffers, kill them +(here called "deleting" them, for consistency with Dired), or display +them. + +`M-x buffer-menu' + Begin editing a buffer listing all Emacs buffers. + + The command `buffer-menu' writes a list of all Emacs buffers into +the buffer `*Buffer List*', and selects that buffer in Buffer Menu +mode. The buffer is read-only, and can only be changed through the +special commands described in this section. Most of these commands are +graphic characters. The usual Emacs cursor motion commands can be used +in the `*Buffer List*' buffer. The following special commands apply to +the buffer described on the current line. + +`d' + Request to delete (kill) the buffer, then move down. The request + shows as a `D' on the line, before the buffer name. Requested + deletions take place when the `x' command is used. + +`k' + Synonym for `d'. + +`C-d' + Like `d' but move up afterwards instead of down. + +`s' + Request to save the buffer. The request shows as an `S' on the + line. Requested saves take place when the `x' command is used. + You may request both saving and deletion for the same buffer. + +`~' + Mark buffer "unmodified". The command `~' does this immediately + when typed. + +`x' + Perform previously requested deletions and saves. + +`u' + Remove any request made for the current line, and move down. + +`DEL' + Move to previous line and remove any request made for that line. + + All the commands that put in or remove flags to request later +operations also move down a line, and accept a numeric argument as a +repeat count, unless otherwise specified. + + There are also special commands to use the buffer list to select +another buffer, and to specify one or more other buffers for display in +additional windows. + +`1' + Select the buffer in a full-screen window. This command takes + effect immediately. + +`2' + Immediately set up two windows, with this buffer in one, and the + previously selected buffer (aside from the buffer `*Buffer List*') + in the other. + +`f' + Immediately select the buffer in place of the `*Buffer List*' + buffer. + +`o' + Immediately select the buffer in another window as if by `C-x 4 b', + leaving `*Buffer List*' visible. + +`q' + Immediately select this buffer, and also display in other windows + any buffers previously flagged with the `m' command. If there are + no such buffers, this command is equivalent to `1'. + +`m' + Flag this buffer to be displayed in another window if the `q' + command is used. The request shows as a `>' at the beginning of + the line. The same buffer may not have both a delete request and a + display request. + + All that `buffer-menu' does directly is create and select a suitable +buffer, and turn on Buffer Menu mode. Everything else described above +is implemented by the special commands provided in Buffer Menu mode. +One consequence of this is that you can switch from the `*Buffer List*' +buffer to another Emacs buffer, and edit there. You can reselect the +`buffer-menu' buffer later, to perform the operations already +requested, or you can kill it, or pay no further attention to it. + + The only difference between `buffer-menu' and `list-buffers' is that +`buffer-menu' selects the `*Buffer List*' buffer and `list-buffers' +does not. If you run `list-buffers' (that is, type `C-x C-b') and +select the buffer list manually, you can use all of the commands +described here. + + +File: emacs, Node: Windows, Next: Major Modes, Prev: Buffers, Up: Top + +Multiple Windows +**************** + + Emacs can split the screen into two or many windows, which can +display parts of different buffers, or different parts of one buffer. + +* Menu: + +* Basic Window:: Introduction to Emacs windows. +* Split Window:: New windows are made by splitting existing windows. +* Other Window:: Moving to another window or doing something to it. +* Pop Up Window:: Finding a file or buffer in another window. +* Change Window:: Deleting windows and changing their sizes. + + +File: emacs, Node: Basic Window, Next: Split Window, Prev: Windows, Up: Windows + +Concepts of Emacs Windows +========================= + + When multiple windows are being displayed, each window has an Emacs +buffer designated for display in it. The same buffer may appear in more +than one window; if it does, any changes in its text are displayed in +all the windows where it appears. But the windows showing the same +buffer can show different parts of it, because each window has its own +value of point. + + At any time, one of the windows is the "selected window"; the buffer +this window is displaying is the current buffer. The terminal's cursor +shows the location of point in this window. Each other window has a +location of point as well, but since the terminal has only one cursor +there is no way to show where those locations are. + + Commands to move point affect the value of point for the selected +Emacs window only. They do not change the value of point in any other +Emacs window, even one showing the same buffer. The same is true for +commands such as `C-x b' to change the selected buffer in the selected +window; they do not affect other windows at all. However, there are +other commands such as `C-x 4 b' that select a different window and +switch buffers in it. Also, all commands that display information in a +window, including (for example) `C-h f' (`describe-function') and `C-x +C-b' (`list-buffers'), work by switching buffers in a nonselected window +without affecting the selected window. + + Each window has its own mode line, which displays the buffer name, +modification status and major and minor modes of the buffer that is +displayed in the window. *Note Mode Line::, for full details on the +mode line. + + +File: emacs, Node: Split Window, Next: Other Window, Prev: Basic Window, Up: Windows + +Splitting Windows +================= + +`C-x 2' + Split the selected window into two windows, one above the other + (`split-window-vertically'). + +`C-x 5' + Split the selected window into two windows positioned side by side + (`split-window-horizontally'). + + The command `C-x 2' (`split-window-vertically') breaks the selected +window into two windows, one above the other. Both windows start out +displaying the same buffer, with the same value of point. By default +the two windows each get half the height of the window that was split; a +numeric argument specifies how many lines to give to the top window. + + `C-x 5' (`split-window-horizontally') breaks the selected window +into two side-by-side windows. A numeric argument specifies how many +columns to give the one on the left. A line of vertical bars separates +the two windows. Windows that are not the full width of the screen +have mode lines, but they are truncated; also, they do not always +appear in inverse video, because, the Emacs display routines have not +been taught how to display a region of inverse video that is only part +of a line on the screen. + + When a window is less than the full width, text lines too long to +fit are frequent. Continuing all those lines might be confusing. The +variable `truncate-partial-width-windows' can be set non-`nil' to force +truncation in all windows less than the full width of the screen, +independent of the buffer being displayed and its value for +`truncate-lines'. *Note Continuation Lines::. + + Horizontal scrolling is often used in side-by-side windows. *Note +Display::. + + +File: emacs, Node: Other Window, Next: Pop Up Window, Prev: Split Window, Up: Windows + +Using Other Windows +=================== + +`C-x o' + Select another window (`other-window'). That is `o', not zero. + +`C-M-v' + Scroll the next window (`scroll-other-window'). + +`M-x compare-windows' + Find next place where the text in the selected window does not + match the text in the next window. + + To select a different window, use `C-x o' (`other-window'). That is +an `o', for `other', not a zero. When there are more than two windows, +this command moves through all the windows in a cyclic order, generally +top to bottom and left to right. From the rightmost and bottommost +window, it goes back to the one at the upper left corner. A numeric +argument means to move several steps in the cyclic order of windows. A +negative argument moves around the cycle in the opposite order. When +the minibuffer is active, the minibuffer is the last window in the +cycle; you can switch from the minibuffer window to one of the other +windows, and later switch back and finish supplying the minibuffer +argument that is requested. *Note Minibuffer Edit::. + + The usual scrolling commands (*note Display::.) apply to the selected +window only, but there is one command to scroll the next window. +`C-M-v' (`scroll-other-window') scrolls the window that `C-x o' would +select. It takes arguments, positive and negative, like `C-v'. + + The command `M-x compare-windows' compares the text in the current +window with that in the next window. Comparison starts at point in each +window. Point moves forward in each window, a character at a time in +each window, until the next characters in the two windows are +different. Then the command is finished. + + +File: emacs, Node: Pop Up Window, Next: Change Window, Prev: Other Window, Up: Windows + +Displaying in Another Window +============================ + + `C-x 4' is a prefix key for commands that select another window +(splitting the window if there is only one) and select a buffer in that +window. Different `C-x 4' commands have different ways of finding the +buffer to select. + +`C-x 4 b BUFNAME RET' + Select buffer BUFNAME in another window. This runs + `switch-to-buffer-other-window'. + +`C-x 4 f FILENAME RET' + Visit file FILENAME and select its buffer in another window. This + runs `find-file-other-window'. *Note Visiting::. + +`C-x 4 d DIRECTORY RET' + Select a Dired buffer for directory DIRECTORY in another window. + This runs `dired-other-window'. *Note Dired::. + +`C-x 4 m' + Start composing a mail message in another window. This runs + `mail-other-window', and its same-window version is `C-x m' (*note + Sending Mail::.). + +`C-x 4 .' + Find a tag in the current tag table in another window. This runs + `find-tag-other-window', the multiple-window variant of `M-.' + (*note Tags::.). + + +File: emacs, Node: Change Window, Prev: Pop Up Window, Up: Windows + +Deleting and Rearranging Windows +================================ + +`C-x 0' + Get rid of the selected window (`kill-window'). That is a zero. + +`C-x 1' + Get rid of all windows except the selected one + (`delete-other-windows'). + +`C-x ^' + Make the selected window taller, at the expense of the other(s) + (`enlarge-window'). + +`C-x }' + Widen the selected window (`enlarge-window-horizontally'). + + To delete a window, type `C-x 0' (`delete-window'). (That is a +zero.) The space occupied by the deleted window is distributed among +the other active windows (but not the minibuffer window, even if that +is active at the time). Once a window is deleted, its attributes are +forgotten; there is no automatic way to make another window of the same +shape or showing the same buffer. But the buffer continues to exist, +and you can select it in any window with `C-x b'. + + `C-x 1' (`delete-other-windows') is more powerful than `C-x 0'; it +deletes all the windows except the selected one (and the minibuffer); +the selected window expands to use the whole screen except for the echo +area. + + To readjust the division of space among existing windows, use `C-x ^' +(`enlarge-window'). It makes the currently selected window get one +line bigger, or as many lines as is specified with a numeric argument. +With a negative argument, it makes the selected window smaller. `C-x +}' (`enlarge-window-horizontally') makes the selected window wider by +the specified number of columns. The extra screen space given to a +window comes from one of its neighbors, if that is possible; otherwise, +all the competing windows are shrunk in the same proportion. If this +makes any windows too small, those windows are deleted and their space +is divided up. The minimum size is specified by the variables +`window-min-height' and `window-min-width'. + + +File: emacs, Node: Major Modes, Next: Indentation, Prev: Windows, Up: Top + +Major Modes +*********** + + Emacs has many different "major modes", each of which customizes +Emacs for editing text of a particular sort. The major modes are +mutually exclusive, and each buffer has one major mode at any time. +The mode line normally contains the name of the current major mode, in +parentheses. *Note Mode Line::. + + The least specialized major mode is called "Fundamental mode". This +mode has no mode-specific redefinitions or variable settings, so that +each Emacs command behaves in its most general manner, and each option +is in its default state. For editing any specific type of text, such +as Lisp code or English text, you should switch to the appropriate +major mode, such as Lisp mode or Text mode. + + Selecting a major mode changes the meanings of a few keys to become +more specifically adapted to the language being edited. The ones which +are changed frequently are TAB, DEL, and LFD. In addition, the +commands which handle comments use the mode to determine how comments +are to be delimited. Many major modes redefine the syntactical +properties of characters appearing in the buffer. *Note Syntax::. + + The major modes fall into three major groups. Lisp mode (which has +several variants), C mode and Muddle mode are for specific programming +languages. Text mode, Nroff mode, TeX mode and Outline mode are for +editing English text. The remaining major modes are not intended for +use on users' files; they are used in buffers created for specific +purposes by Emacs, such as Dired mode for buffers made by Dired (*note +Dired::.), and Mail mode for buffers made by `C-x m' (*note Sending +Mail::.), and Shell mode for buffers used for communicating with an +inferior shell process (*note Interactive Shell::.). + + Most programming language major modes specify that only blank lines +separate paragraphs. This is so that the paragraph commands remain +useful. *Note Paragraphs::. They also cause Auto Fill mode to use the +definition of TAB to indent the new lines it creates. This is because +most lines in a program are usually indented. *Note Indentation::. + +* Menu: + +* Choosing Modes:: How major modes are specified or chosen. + + +File: emacs, Node: Choosing Modes, Prev: Major Modes, Up: Major Modes + +How Major Modes are Chosen +========================== + + You can select a major mode explicitly for the current buffer, but +most of the time Emacs determines which mode to use based on the file +name or some text in the file. + + Explicit selection of a new major mode is done with a `M-x' command. +From the name of a major mode, add `-mode' to get the name of a command +to select that mode. Thus, you can enter Lisp mode by executing `M-x +lisp-mode'. + + When you visit a file, Emacs usually chooses the right major mode +based on the file's name. For example, files whose names end in `.c' +are edited in C mode. The correspondence between file names and major +mode is controlled by the variable `auto-mode-alist'. Its value is a +list in which each element has the form + + (REGEXP . MODE-FUNCTION) + +For example, one element normally found in the list has the form +`("\\.c$" . c-mode)', and it is responsible for selecting C mode for +files whose names end in `.c'. (Note that `\\' is needed in Lisp +syntax to include a `\' in the string, which is needed to suppress the +special meaning of `.' in regexps.) The only practical way to change +this variable is with Lisp code. + + You can specify which major mode should be used for editing a certain +file by a special sort of text in the first nonblank line of the file. +The mode name should appear in this line both preceded and followed by +`-*-'. Other text may appear on the line as well. For example, + + ;-*-Lisp-*- + +tells Emacs to use Lisp mode. Note how the semicolon is used to make +Lisp treat this line as a comment. Such an explicit specification +overrides any defaulting based on the file name. + + Another format of mode specification is + + -*-Mode: MODENAME;-*- + +which allows other things besides the major mode name to be specified. +However, Emacs does not look for anything except the mode name. + + The major mode can also be specified in a local variables list. +*Note File Variables::. + + When a file is visited that does not specify a major mode to use, or +when a new buffer is created with `C-x b', the major mode used is that +specified by the variable `default-major-mode'. Normally this value is +the symbol `fundamental-mode', which specifies Fundamental mode. If +`default-major-mode' is `nil', the major mode is taken from the +previously selected buffer. + + The command `M-x normal-mode' recalculates the major mode from the +visited file name and the contents of the buffer. + + +File: emacs, Node: Indentation, Next: Text, Prev: Major Modes, Up: Top + +Indentation +*********** + +`TAB' + Indent current line "appropriately" in a mode-dependent fashion. + +`LFD' + Perform RET followed by TAB (`newline-and-indent'). + +`M-^' + Merge two lines (`delete-indentation'). This would cancel out the + effect of LFD. + +`C-M-o' + Split line at point; text on the line after point becomes a new + line indented to the same column that it now starts in + (`split-line'). + +`M-m' + Move (forward or back) to the first nonblank character on the + current line (`back-to-indentation'). + +`C-M-\' + Indent several lines to same column (`indent-region'). + +`C-x TAB' + Shift block of lines rigidly right or left (`indent-rigidly'). + +`M-i' + Indent from point to the next prespecified tab stop column + (`tab-to-tab-stop'). + +`M-x indent-relative' + Indent from point to under an indentation point in the previous + line. + + Most programming languages have some indentation convention. For +Lisp code, lines are indented according to their nesting in +parentheses. The same general idea is used for C code, though many +details are different. + + Whatever the language, to indent a line, use the TAB command. Each +major mode defines this command to perform the sort of indentation +appropriate for the particular language. In Lisp mode, TAB aligns the +line according to its depth in parentheses. No matter where in the +line you are when you type TAB, it aligns the line as a whole. In C +mode, TAB implements a subtle and sophisticated indentation style that +knows about many aspects of C syntax. + + In Text mode, TAB runs the command `tab-to-tab-stop', which indents +to the next tab stop column. You can set the tab stops with `M-x +edit-tab-stops'. + +* Menu: + +* Indentation Commands:: Various commands and techniques for indentation. +* Tab Stops:: You can set arbitrary "tab stops" and then + indent to the next tab stop when you want to. +* Just Spaces:: You can request indentation using just spaces. + + +File: emacs, Node: Indentation Commands, Next: Tab Stops, Prev: Indentation, Up: Indentation + +Indentation Commands and Techniques +=================================== + + If you just want to insert a tab character in the buffer, you can +type `C-q TAB'. + + To move over the indentation on a line, type `Meta-m'. This command, +given anywhere on a line, positions point at the first nonblank +character on the line (`back-to-indentation'). + + To insert an indented line before the current line, do `C-a C-o +TAB'. To make an indented line after the current line, use `C-e LFD'. + + `C-M-o' (`split-line') moves the text from point to the end of the +line vertically down, so that the current line becomes two lines. +`C-M-o' first moves point forward over any spaces and tabs. Then it +inserts after point a newline and enough indentation to reach the same +column point is on. Point remains before the inserted newline; in this +regard, `C-M-o' resembles `C-o'. + + To join two lines cleanly, use the `Meta-^' (`delete-indentation') +command to delete the indentation at the front of the current line, and +the line boundary as well. They are replaced by a single space, or by +no space if point after joining is at the beginning of a line or before +a `)' or after a `('. To delete just the indentation of a line, go to +the beginning of the line and use `Meta-\' (`delete-horizontal-space'), +which deletes all spaces and tabs around the cursor. + + There are also commands for changing the indentation of several +lines at once. `Control-Meta-\' (`indent-region') gives each line which +begins in the region the "usual" indentation by invoking TAB at the +beginning of the line. A numeric argument specifies the column to +indent to, and each line is shifted left or right so that its first +nonblank character appears in that column. `C-x TAB' +(`indent-rigidly') moves all of the lines in the region right by its +argument (left, for negative arguments). The whole group of lines moves +rigidly sideways, which is how the command gets its name. + + `M-x indent-relative' indents at point based on the previous line +(actually, the last nonempty line.) It inserts whitespace at point, +moving point, until it is underneath an indentation point in the +previous line. An indentation point is the end of a sequence of +whitespace or the end of the line. If point is farther right than any +indentation point in the previous line, the whitespace before point is +deleted and the first indentation point then applicable is used. If no +indentation point is applicable even then, `tab-to-tab-stop' is run +(see next section). + + `indent-relative' is the definition of TAB in Indented Text mode. +*Note Text::. + + +File: emacs, Node: Tab Stops, Next: Just Spaces, Prev: Indentation Commands, Up: Indentation + +Tab Stops +========= + + For typing in tables, you can use Text mode's definition of TAB, +`tab-to-tab-stop'. This command inserts indentation before point, +enough to reach the next tab stop column. If you are not in Text mode, +this function can be found on `M-i' anyway. + + The tab stops used by `M-i' can be set arbitrarily by the user. They +are stored in a variable called `tab-stop-list', as a list of +column-numbers in increasing order. + + The convenient way to set the tab stops is using `M-x +edit-tab-stops', which creates and selects a buffer containing a +description of the tab stop settings. You can edit this buffer to +specify different tab stops, and then type `C-c C-c' to make those new +tab stops take effect. In the tab stop buffer, `C-c C-c' runs the +function `edit-tab-stops-note-changes' rather than its usual definition +`save-buffer'. `edit-tab-stops' records which buffer was current when +you invoked it, and stores the tab stops back in that buffer; normally +all buffers share the same tab stops and changing them in one buffer +affects all, but if you happen to make `tab-stop-list' local in one +buffer then `edit-tab-stops' in that buffer will edit the local +settings. + + Here is what the text representing the tab stops looks like for +ordinary tab stops every eight columns. + + : : : : : : + 0 1 2 3 4 + 0123456789012345678901234567890123456789012345678 + To install changes, type C-c C-c + + The first line contains a colon at each tab stop. The remaining +lines are present just to help you see where the colons are and know +what to do. + + Note that the tab stops that control `tab-to-tab-stop' have nothing +to do with displaying tab characters in the buffer. *Note Display +Vars::, for more information on that. + + +File: emacs, Node: Just Spaces, Prev: Tab Stops, Up: Indentation + +Tabs vs. Spaces +=============== + + Emacs normally uses both tabs and spaces to indent lines. If you +prefer, all indentation can be made from spaces only. To request this, +set `indent-tabs-mode' to `nil'. This is a per-buffer variable; +altering the variable affects only the current buffer, but there is a +default value which you can change as well. *Note Locals::. + + There are also commands to convert tabs to spaces or vice versa, +always preserving the columns of all nonblank text. `M-x tabify' scans +the region for sequences of spaces, and converts sequences of at least +three spaces to tabs if that can be done without changing indentation. +`M-x untabify' changes all tabs in the region to appropriate numbers of +spaces. + + +File: emacs, Node: Text, Next: Programs, Prev: Indentation, Up: Top + +Commands for Human Languages +**************************** + + The term "text" has two widespread meanings in our area of the +computer field. One is data that is a sequence of characters. Any file +that you edit with Emacs is text, in this sense of the word. The other +meaning is more restrictive: a sequence of characters in a human +language for humans to read (possibly after processing by a text +formatter), as opposed to a program or commands for a program. + + Human languages have syntactic/stylistic conventions that can be +supported or used to advantage by editor commands: conventions involving +words, sentences, paragraphs, and capital letters. This chapter +describes Emacs commands for all of these things. There are also +commands for "filling", or rearranging paragraphs into lines of +approximately equal length. The commands for moving over and killing +words, sentences and paragraphs, while intended primarily for editing +text, are also often useful for editing programs. + + Emacs has several major modes for editing human language text. If +the file contains text pure and simple, use Text mode, which customizes +Emacs in small ways for the syntactic conventions of text. For text +which contains embedded commands for text formatters, Emacs has other +major modes, each for a particular text formatter. Thus, for input to +TeX, you would use TeX mode; for input to nroff, Nroff mode. + +* Menu: + +* Text Mode:: The major modes for editing text files. +* Nroff Mode:: The major mode for editing input to the formatter nroff. +* TeX Mode:: The major modes for editing input to the formatter TeX. +* Outline Mode::The major mode for editing outlines. +* Words:: Moving over and killing words. +* Sentences:: Moving over and killing sentences. +* Paragraphs:: Moving over paragraphs. +* Pages:: Moving over pages. +* Filling:: Filling or justifying text +* Case:: Changing the case of text + + +File: emacs, Node: Text Mode, Next: Words, Prev: Text, Up: Text + +Text Mode +========= + + Editing files of text in a human language ought to be done using Text +mode rather than Lisp or Fundamental mode. Invoke `M-x text-mode' to +enter Text mode. In Text mode, TAB runs the function +`tab-to-tab-stop', which allows you to use arbitrary tab stops set with +`M-x edit-tab-stops' (*note Tab Stops::.). Features concerned with +comments in programs are turned off except when explicitly invoked. The +syntax table is changed so that periods are not considered part of a +word, while apostrophes, backspaces and underlines are. + + A similar variant mode is Indented Text mode, intended for editing +text in which most lines are indented. This mode defines TAB to run +`indent-relative' (*note Indentation::.), and makes Auto Fill indent +the lines it creates. The result is that normally a line made by Auto +Filling, or by LFD, is indented just like the previous line. Use `M-x +indented-text-mode' to select this mode. + + Entering Text mode or Indented Text mode calls with no arguments the +value of the variable `text-mode-hook', if that value exists and is not +`nil'. This value is also called when modes related to Text mode are +entered; this includes Nroff mode, TeX mode, Outline mode and Mail +mode. Your hook can look at the value of `major-mode' to see which of +these modes is actually being entered. + +* Menu: + + Three modes similar to Text mode are of use for editing text that is to +be passed through a text formatter before achieving the form in which +humans are to read it. + +* Nroff Mode:: The nroff formatter typesets text. +* TeX Mode:: The TeX formatter typesets text and mathematics. +* Texinfo Mode::Texinfo provides both on-line information and printed output + from the same source file. + + Another similar mode is used for editing outlines. It allows you +to view the text at various levels of detail. You can view either +the outline headings alone or both headings and text; you can also +hide some of the headings at lower levels from view to make the high +level structure more visible. + +* Outline Mode::The major mode for editing outlines. + + +File: emacs, Node: Nroff Mode, Next: TeX Mode, Prev: Text Mode, Up: Text Mode + +Nroff Mode +---------- + + Nroff mode is a mode like Text mode but modified to handle nroff +commands present in the text. Invoke `M-x nroff-mode' to enter this +mode. It differs from Text mode in only a few ways. All nroff command +lines are considered paragraph separators, so that filling will never +garble the nroff commands. Pages are separated by `.bp' commands. +Comments start with backslash-doublequote. Also, three special +commands are provided that are not in Text mode: + +`M-n' + Move to the beginning of the next line that isn't an nroff command + (`forward-text-line'). An argument is a repeat count. + +`M-p' + Like `M-n' but move up (`backward-text-line'). + +`M-?' + Prints in the echo area the number of text lines (lines that are + not nroff commands) in the region (`count-text-lines'). + + The other feature of Nroff mode is Electric Nroff newline mode. This +is a minor mode that you can turn on or off with `M-x +electric-nroff-mode' (*note Minor Modes::.). When the mode is on, each +time you use RET to end a line that contains an nroff command that +opens a kind of grouping, it also inserts the matching nroff command to +close that grouping, on the following line. For example, if you are at +the beginning of a line and type `. ( b RET', this inserts the matching +command `.)b' on a new line following point. + + Entering Nroff mode calls with no arguments the value of the variable +`text-mode-hook', if that value exists and is not `nil'; then it does +the same with the variable `nroff-mode-hook'. + + +File: emacs, Node: TeX Mode, Next: Texinfo Mode, Prev: Nroff Mode, Up: Text Mode + +TeX Mode +-------- + + TeX is a powerful text formatter written by Donald Knuth; it is also +free, like GNU Emacs. LaTeX is a simplified input format for TeX, +implemented by TeX macros. It comes with TeX. + + Emacs has a special TeX mode for editing TeX input files. It +provides facilities for checking the balance of delimiters and for +invoking TeX on all or part of the file. + + TeX mode has two variants, Plain TeX mode and LaTeX mode (actually +two distinct major modes which differ only slightly). They are +designed for editing the two different input formats. The command `M-x +tex-mode' looks at the contents of the buffer to determine whether the +contents appear to be LaTeX input or not; it then selects the +appropriate mode. If it can't tell which is right (e.g., the buffer is +empty), the variable `TeX-default-mode' controls which mode is used. + + The commands `M-x plain-tex-mode' and `M-x latex-mode' explicitly +select the two variants of TeX mode. Use these commands when `M-x +tex-mode' does not guess right. + +* Menu: + +* Editing: TeX Editing. Special commands for editing in TeX mode. +* Printing: TeX Print. Commands for printing part of a file with TeX. + + TeX for Unix systems can be obtained from the University of +Washington for a distribution fee. + + To order a full distribution, send $200.00 for a 1/2-inch 9-track +1600 bpi (`tar' or `cpio') tape reel, or $210.00 for a 1/4-inch 4-track +QIC-24 (`tar' or `cpio') cartridge, to: + + Northwest Computing Support Center + DR-10, Thomson Hall 35 + University of Washington + Seattle, Washington 98195 + +Please make checks payable to the University of Washington. + + Prepaid orders are preferred but purchase orders are acceptable; +however, purchase orders carry an extra charge of $10.00, to pay for +processing. + + Overseas sites: please add to the base cost $20.00 for shipment via +air parcel post, or $30.00 for shipment via courier. + + Please check with the Northwest Computing Support Center at the +University of Washington for current prices and formats: + + telephone: (206) 543-6259 + email: elisabet@u.washington.edu + + +File: emacs, Node: TeX Editing, Next: TeX Print, Prev: TeX Mode, Up: TeX Mode + +TeX Editing Commands +.................... + + Here are the special commands provided in TeX mode for editing the +text of the file. + +`"' + Insert, according to context, either ```' or `"' or `''' + (`TeX-insert-quote'). + +`LFD' + Insert a paragraph break (two newlines) and check the previous + paragraph for unbalanced braces or dollar signs + (`TeX-terminate-paragraph'). + +`M-x validate-TeX-buffer' + Check each paragraph in the buffer for unbalanced braces or dollar + signs. + +`M-{' + Insert `{}' and position point between them (`TeX-insert-braces'). + +`M-}' + Move forward past the next unmatched close brace (`up-list'). + +`C-c C-f' + Close a block for LaTeX (`TeX-close-LaTeX-block'). + + In TeX, the character `"' is not normally used; use ```' to start a +quotation and `''' to end one. TeX mode defines the key `"' to insert +```' after whitespace or an open brace, `"' after a backslash, or `''' +otherwise. This is done by the command `TeX-insert-quote'. If you +need the character `"' itself in unusual contexts, use `C-q' to insert +it. Also, `"' with a numeric argument always inserts that number of +`"' characters. + + In TeX mode, `$' has a special syntax code which attempts to +understand the way TeX math mode delimiters match. When you insert a +`$' that is meant to exit math mode, the position of the matching `$' +that entered math mode is displayed for a second. This is the same +feature that displays the open brace that matches a close brace that is +inserted. However, there is no way to tell whether a `$' enters math +mode or leaves it; so when you insert a `$' that enters math mode, the +previous `$' position is shown as if it were a match, even though they +are actually unrelated. + + If you prefer to keep braces balanced at all times, you can use `M-{' +(`TeX-insert-braces') to insert a pair of braces. It leaves point +between the two braces so you can insert the text that belongs inside. +Afterward, use the command `M-}' (`up-list') to move forward past the +close brace. + + There are two commands for checking the matching of braces. LFD +(`TeX-terminate-paragraph') checks the paragraph before point, and +inserts two newlines to start a new paragraph. It prints a message in +the echo area if any mismatch is found. `M-x validate-TeX-buffer' +checks the entire buffer, paragraph by paragraph. When it finds a +paragraph that contains a mismatch, it displays point at the beginning +of the paragraph for a few seconds and pushes a mark at that spot. +Scanning continues until the whole buffer has been checked or until you +type another key. The positions of the last several paragraphs with +mismatches can be found in the mark ring (*note Mark Ring::.). + + Note that square brackets and parentheses are matched in TeX mode, +not just braces. This is wrong for the purpose of checking TeX syntax. +However, parentheses and square brackets are likely to be used in text +as matching delimiters and it is useful for the various motion commands +and automatic match display to work with them. + + In LaTeX input, `\begin' and `\end' commands must balance. After you +insert a `\begin', use `C-c C-f' (`TeX-close-LaTeX-block') to insert +automatically a matching `\end' (on a new line following the `\begin'). + A blank line is inserted between the two, and point is left there. + + +File: emacs, Node: TeX Print, Prev: TeX Editing, Up: TeX Mode + +TeX Printing Commands +..................... + + You can invoke TeX as an inferior of Emacs on either the entire +contents of the buffer or just a region at a time. Running TeX in this +way on just one chapter is a good way to see what your changes look +like without taking the time to format the entire file. + +`C-c C-r' + Invoke TeX on the current region, plus the buffer's header + (`TeX-region'). + +`C-c C-b' + Invoke TeX on the entire current buffer (`TeX-buffer'). + +`C-c C-l' + Recenter the window showing output from the inferior TeX so that + the last line can be seen (`TeX-recenter-output-buffer'). + +`C-c C-k' + Kill the inferior TeX (`TeX-kill-job'). + +`C-c C-p' + Print the output from the last `C-c C-r' or `C-c C-b' command + (`TeX-print'). + +`C-c C-q' + Show the printer queue (`TeX-show-print-queue'). + + You can pass the current buffer through an inferior TeX by means of +`C-c C-b' (`TeX-buffer'). The formatted output appears in a file in +`/tmp'; to print it, type `C-c C-p' (`TeX-print'). Afterward use `C-c +C-q' (`TeX-show-print-queue') to view the progress of your output +towards being printed. + + The console output from TeX, including any error messages, appears +in a buffer called `*TeX-shell*'. If TeX gets an error, you can switch +to this buffer and feed it input (this works as in Shell mode; *note +Interactive Shell::.). Without switching to this buffer you can scroll +it so that its last line is visible by typing `C-c C-l'. + + Type `C-c C-k' (`TeX-kill-job') to kill the TeX process if you see +that its output is no longer useful. Using `C-c C-b' or `C-c C-r' also +kills any TeX process still running. + + You can also pass an arbitrary region through an inferior TeX by +typing `C-c C-r' (`TeX-region'). This is tricky, however, because most +files of TeX input contain commands at the beginning to set parameters +and define macros, without which no later part of the file will format +correctly. To solve this problem, `C-c C-r' allows you to designate a +part of the file as containing essential commands; it is included before +the specified region as part of the input to TeX. The designated part +of the file is called the "header". + + To indicate the bounds of the header in Plain TeX mode, you insert +two special strings in the file. Insert `%**start of header' before the +header, and `%**end of header' after it. Each string must appear +entirely on one line, but there may be other text on the line before or +after. The lines containing the two strings are included in the header. +If `%**start of header' does not appear within the first 100 lines of +the buffer, `C-c C-r' assumes that there is no header. + + In LaTeX mode, the header begins with `\documentstyle' and ends with +`\begin{document}'. These are commands that LaTeX requires you to use +in any case, so nothing special needs to be done to identify the header. + + Entering either kind of TeX mode calls with no arguments the value of +the variable `text-mode-hook', if that value exists and is not `nil'; +then it does the same with the variable `TeX-mode-hook'. Finally it +does the same with either `plain-TeX-mode-hook' or `LaTeX-mode-hook'. + + +File: emacs, Node: Texinfo Mode, Next: Outline Mode, Prev: TeX Mode, Up: Text Mode + +Texinfo Mode +------------ + + Texinfo is a documentation system that uses a single source file to +produce both on-line information and printed output. This means that +instead of writing two different documents, one for the on-line help or +other on-line information and the other for a typeset manual or other +printed work, you need write only one document. When the work is +revised, you need revise only one document. (You can read the on-line +information, known as an "Info file", with an Info +documentation-reading program. *note info: (info)Top, for more +information about Info.) Texinfo is the format in which documentation +for GNU utilities and libraries is written. + + Texinfo mode provides special features for working with Texinfo files +including utilities to construct Info menus and pointers automatically, +keybindings to insert frequently used formatting commands, and +keybindings for commands to format both for Info and for printing. + + Texinfo mode is described in *Note Using Texinfo Mode: ( +texinfo)Texinfo Mode. + + +File: emacs, Node: Outline Mode, Prev: Texinfo Mode, Up: Text Mode + +Outline Mode +------------ + + Outline mode is a major mode much like Text mode but intended for +editing outlines. It allows you to make parts of the text temporarily +invisible so that you can see just the overall structure of the +outline. Type `M-x outline-mode' to turn on Outline mode in the +current buffer. + + Entering Outline mode calls with no arguments the value of the +variable `text-mode-hook', if that value exists and is not `nil'; then +it does the same with the variable `outline-mode-hook'. + + When a line is invisible in outline mode, it does not appear on the +screen. The screen appears exactly as if the invisible line were +deleted, except that an ellipsis (three periods in a row) appears at +the end of the previous visible line (only one ellipsis no matter how +many invisible lines follow). + + All editing commands treat the text of the invisible line as part of +the previous visible line. For example, `C-n' moves onto the next +visible line. Killing an entire visible line, including its +terminating newline, really kills all the following invisible lines +along with it; yanking it all back yanks the invisible lines and they +remain invisible. + +* Menu: + +* Format: Outline Format. What the text of an outline looks like. +* Motion: Outline Motion. Special commands for moving through outlines. +* Visibility: Outline Visibility. Commands to control what is visible. + + +File: emacs, Node: Outline Format, Next: Outline Motion, Prev: Outline Mode, Up: Outline Mode + +Format of Outlines +.................. + + Outline mode assumes that the lines in the buffer are of two types: +"heading lines" and "body lines". A heading line represents a topic in +the outline. Heading lines start with one or more stars; the number of +stars determines the depth of the heading in the outline structure. +Thus, a heading line with one star is a major topic; all the heading +lines with two stars between it and the next one-star heading are its +subtopics; and so on. Any line that is not a heading line is a body +line. Body lines belong to the preceding heading line. Here is an +example: + + * Food + + This is the body, + which says something about the topic of food. + + ** Delicious Food + + This is the body of the second-level header. + + ** Distasteful Food + + This could have + a body too, with + several lines. + + *** Dormitory Food + + * Shelter + + A second first-level topic with its header line. + + A heading line together with all following body lines is called +collectively an "entry". A heading line together with all following +deeper heading lines and their body lines is called a "subtree". + + You can customize the criterion for distinguishing heading lines by +setting the variable `outline-regexp'. Any line whose beginning has a +match for this regexp is considered a heading line. Matches that start +within a line (not at the beginning) do not count. The length of the +matching text determines the level of the heading; longer matches make +a more deeply nested level. Thus, for example, if a text formatter has +commands `@chapter', `@section' and `@subsection' to divide the +document into chapters and sections, you could make those lines count +as heading lines by setting `outline-regexp' to +`"@chap\\|@\\(sub\\)*section"'. Note the trick: the two words `chapter' +and `section' are equally long, but by defining the regexp to match +only `chap' we ensure that the length of the text matched on a chapter +heading is shorter, so that Outline mode will know that sections are +contained in chapters. This works as long as no other command starts +with `@chap'. + + Outline mode makes a line invisible by changing the newline before it +into an ASCII Control-M (code 015). Most editing commands that work on +lines treat an invisible line as part of the previous line because, +strictly speaking, it is part of that line, since there is no longer a +newline in between. When you save the file in Outline mode, Control-M +characters are saved as newlines, so the invisible lines become ordinary +lines in the file. But saving does not change the visibility status of +a line inside Emacs. + + +File: emacs, Node: Outline Motion, Next: Outline Visibility, Prev: Outline Format, Up: Outline Mode + +Outline Motion Commands +....................... + + There are some special motion commands in Outline mode that move +backward and forward to heading lines. + +`C-c C-n' + Move point to the next visible heading line + (`outline-next-visible-heading'). + +`C-c C-p' + Move point to the previous visible heading line + (`outline-previous-visible-heading'). + +`C-c C-f' + Move point to the next visible heading line at the same level as + the one point is on (`outline-forward-same-level'). + +`C-c C-b' + Move point to the previous visible heading line at the same level + (`outline-backward-same-level'). + +`C-c C-u' + Move point up to a lower-level (more inclusive) visible heading + line (`outline-up-heading'). + + `C-c C-n' (`next-visible-heading') moves down to the next heading +line. `C-c C-p' (`previous-visible-heading') moves similarly backward. + Both accept numeric arguments as repeat counts. The names emphasize +that invisible headings are skipped, but this is not really a special +feature. All editing commands that look for lines ignore the invisible +lines automatically. + + More advanced motion commands understand the levels of headings. The +two commands, `C-c C-f' (`outline-forward-same-level') and `C-c C-b' +(`outline-backward-same-level'), move from one heading line to another +visible heading at the same depth in the outline. `C-c C-u' +(`outline-up-heading') moves backward to another heading that is less +deeply nested. + + +File: emacs, Node: Outline Visibility, Prev: Outline Motion, Up: Outline Mode + +Outline Visibility Commands +........................... + + The other special commands of outline mode are used to make lines +visible or invisible. Their names all start with `hide' or `show'. +Most of them fall into pairs of opposites. They are not undoable; +instead, you can undo right past them. Making lines visible or +invisible is simply not recorded by the undo mechanism. + +`M-x hide-body' + Make all body lines in the buffer invisible. + +`M-x show-all' + Make all lines in the buffer visible. + +`C-c C-h' + Make everything under this heading invisible, not including this + heading itself (`hide-subtree'). + +`C-c C-s' + Make everything under this heading visible, including body, + subheadings, and their bodies (`show-subtree'). + +`M-x hide-leaves' + Make the body of this heading line, and of all its subheadings, + invisible. + +`M-x show-branches' + Make all subheadings of this heading line, at all levels, visible. + +`C-c C-i' + Make immediate subheadings (one level down) of this heading line + visible (`show-children'). + +`M-x hide-entry' + Make this heading line's body invisible. + +`M-x show-entry' + Make this heading line's body visible. + + Two commands that are exact opposites are `M-x hide-entry' and `M-x +show-entry'. They are used with point on a heading line, and apply +only to the body lines of that heading. The subtopics and their bodies +are not affected. + + Two more powerful opposites are `C-c C-h' (`hide-subtree') and `C-c +C-s' (`show-subtree'). Both expect to be used when point is on a +heading line, and both apply to all the lines of that heading's +"subtree": its body, all its subheadings, both direct and indirect, and +all of their bodies. In other words, the subtree contains everything +following this heading line, up to and not including the next heading of +the same or higher rank. + + Intermediate between a visible subtree and an invisible one is having +all the subheadings visible but none of the body. There are two +commands for doing this, depending on whether you want to hide the +bodies or make the subheadings visible. They are `M-x hide-leaves' and +`M-x show-branches'. + + A little weaker than `show-branches' is `C-c C-i' (`show-children'). + It makes just the direct subheadings visible--those one level down. +Deeper subheadings remain invisible, if they were invisible. + + Two commands have a blanket effect on the whole file. `M-x +hide-body' makes all body lines invisible, so that you see just the +outline structure. `M-x show-all' makes all lines visible. These +commands can be thought of as a pair of opposites even though `M-x +show-all' applies to more than just body lines. + + The use of ellipses at the ends of visible lines can be turned off +by setting `selective-display-ellipses' to `nil'. Then there is no +visible indication of the presence of invisible lines. + +
\ No newline at end of file |