* admin/gitmerge.el (gitmerge-missing):
[emacs.git] / doc / emacs / text.texi
blob7aa859d1772c5d9f3e31ab597dbaaa89cb0b2493
1 @c -*- coding: utf-8 -*-
2 @c This is part of the Emacs manual.
3 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2017 Free Software
4 @c Foundation, Inc.
5 @c See file emacs.texi for copying conditions.
6 @node Text
7 @chapter Commands for Human Languages
8 @cindex text
9 @cindex manipulating text
11   This chapter describes Emacs commands that act on @dfn{text}, by
12 which we mean sequences of characters in a human language (as opposed
13 to, say, a computer programming language).  These commands act in ways
14 that take into account the syntactic and stylistic conventions of
15 human languages: conventions involving words, sentences, paragraphs,
16 and capital letters.  There are also commands for @dfn{filling}, which
17 means rearranging the lines of a paragraph to be approximately equal
18 in length.  These commands, while intended primarily for editing text,
19 are also often useful for editing programs.
21   Emacs has several major modes for editing human-language text.  If
22 the file contains ordinary text, use Text mode, which customizes Emacs
23 in small ways for the syntactic conventions of text.  Outline mode
24 provides special commands for operating on text with an outline
25 structure.  Org mode extends Outline mode and turn Emacs into a
26 full-fledged organizer: you can manage TODO lists, store notes and
27 publish them in many formats.
29 @iftex
30 @xref{Outline Mode}.
31 @end iftex
33 @cindex nXML mode
34 @cindex mode, XML
35 @cindex mode, nXML
36 @findex nxml-mode
37   Emacs has other major modes for text which contains embedded
38 commands, such as @TeX{} and @LaTeX{} (@pxref{TeX Mode}); HTML and
39 SGML (@pxref{HTML Mode}); XML
40 @ifinfo
41 (@pxref{Top,The nXML Mode Manual,,nxml-mode, nXML Mode});
42 @end ifinfo
43 @ifnotinfo
44 (see the nXML mode Info manual, which is distributed with Emacs);
45 @end ifnotinfo
46 and Groff and Nroff (@pxref{Nroff Mode}).
48 @cindex ASCII art
49   If you need to edit ASCII art pictures made out of text characters,
50 use Picture mode, a special major mode for editing such pictures.
51 @iftex
52 @xref{Picture Mode,,, emacs-xtra, Specialized Emacs Features}.
53 @end iftex
54 @ifnottex
55 @xref{Picture Mode}.
56 @end ifnottex
58 @ifinfo
59 @cindex skeletons
60 @cindex templates
61 @cindex autotyping
62 @cindex automatic typing
63   The automatic typing features may be useful when writing text.
64 @inforef{Top,The Autotype Manual,autotype}.
65 @end ifinfo
67 @menu
68 * Words::               Moving over and killing words.
69 * Sentences::           Moving over and killing sentences.
70 * Paragraphs::          Moving over paragraphs.
71 * Pages::               Moving over pages.
72 * Quotation Marks::     Inserting quotation marks.
73 * Filling::             Filling or justifying text.
74 * Case::                Changing the case of text.
75 * Text Mode::           The major modes for editing text files.
76 * Outline Mode::        Editing outlines.
77 * Org Mode::            The Emacs organizer.
78 * TeX Mode::            Editing TeX and LaTeX files.
79 * HTML Mode::           Editing HTML and SGML files.
80 * Nroff Mode::          Editing input to the nroff formatter.
81 * Enriched Text::       Editing text enriched with fonts, colors, etc.
82 * Text Based Tables::   Commands for editing text-based tables.
83 * Two-Column::          Splitting text columns into separate windows.
84 @end menu
86 @node Words
87 @section Words
88 @cindex words
89 @cindex Meta commands and words
91   Emacs defines several commands for moving over or operating on
92 words:
94 @table @kbd
95 @item M-f
96 Move forward over a word (@code{forward-word}).
97 @item M-b
98 Move backward over a word (@code{backward-word}).
99 @item M-d
100 Kill up to the end of a word (@code{kill-word}).
101 @item M-@key{DEL}
102 Kill back to the beginning of a word (@code{backward-kill-word}).
103 @item M-@@
104 Mark the end of the next word (@code{mark-word}).
105 @item M-t
106 Transpose two words or drag a word across others
107 (@code{transpose-words}).
108 @end table
110   Notice how these keys form a series that parallels the character-based
111 @kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @key{DEL} and @kbd{C-t}.  @kbd{M-@@} is
112 cognate to @kbd{C-@@}, which is an alias for @kbd{C-@key{SPC}}.
114 @kindex M-f
115 @kindex M-b
116 @findex forward-word
117 @findex backward-word
118   The commands @kbd{M-f} (@code{forward-word}) and @kbd{M-b}
119 (@code{backward-word}) move forward and backward over words.  These
120 @key{META}-based key sequences are analogous to the key sequences
121 @kbd{C-f} and @kbd{C-b}, which move over single characters.  The
122 analogy extends to numeric arguments, which serve as repeat counts.
123 @kbd{M-f} with a negative argument moves backward, and @kbd{M-b} with
124 a negative argument moves forward.  Forward motion stops right after
125 the last letter of the word, while backward motion stops right before
126 the first letter.
128 @kindex M-d
129 @findex kill-word
130   @kbd{M-d} (@code{kill-word}) kills the word after point.  To be
131 precise, it kills everything from point to the place @kbd{M-f} would
132 move to.  Thus, if point is in the middle of a word, @kbd{M-d} kills
133 just the part after point.  If some punctuation comes between point
134 and the next word, it is killed along with the word.  (If you wish to
135 kill only the next word but not the punctuation before it, simply do
136 @kbd{M-f} to get the end, and kill the word backwards with
137 @kbd{M-@key{DEL}}.)  @kbd{M-d} takes arguments just like @kbd{M-f}.
139 @findex backward-kill-word
140 @kindex M-DEL
141   @kbd{M-@key{DEL}} (@code{backward-kill-word}) kills the word before
142 point.  It kills everything from point back to where @kbd{M-b} would
143 move to.  For instance, if point is after the space in @w{@samp{FOO,
144 BAR}}, it kills @w{@samp{FOO, }}.  If you wish to kill just
145 @samp{FOO}, and not the comma and the space, use @kbd{M-b M-d} instead
146 of @kbd{M-@key{DEL}}.
148 @c Don't index M-t and transpose-words here, they are indexed in
149 @c fixit.texi, in the node "Transpose".
150 @c @kindex M-t
151 @c @findex transpose-words
152   @kbd{M-t} (@code{transpose-words}) exchanges the word before or
153 containing point with the following word.  The delimiter characters between
154 the words do not move.  For example, @w{@samp{FOO, BAR}} transposes into
155 @w{@samp{BAR, FOO}} rather than @samp{@w{BAR FOO,}}.  @xref{Transpose}, for
156 more on transposition.
158 @kindex M-@@
159 @findex mark-word
160   To operate on words with an operation which acts on the region, use
161 the command @kbd{M-@@} (@code{mark-word}).  This command sets the mark
162 where @kbd{M-f} would move to.  @xref{Marking Objects}, for more
163 information about this command.
165   The word commands' understanding of word boundaries is controlled by
166 the syntax table.  Any character can, for example, be declared to be a
167 word delimiter.  @xref{Syntax Tables,, Syntax Tables, elisp, The Emacs
168 Lisp Reference Manual}.
170   In addition, see @ref{Position Info} for the @kbd{M-=}
171 (@code{count-words-region}) and @kbd{M-x count-words} commands, which
172 count and report the number of words in the region or buffer.
174 @node Sentences
175 @section Sentences
176 @cindex sentences
177 @cindex manipulating sentences
179   The Emacs commands for manipulating sentences and paragraphs are
180 mostly on Meta keys, like the word-handling commands.
182 @table @kbd
183 @item M-a
184 Move back to the beginning of the sentence (@code{backward-sentence}).
185 @item M-e
186 Move forward to the end of the sentence (@code{forward-sentence}).
187 @item M-k
188 Kill forward to the end of the sentence (@code{kill-sentence}).
189 @item C-x @key{DEL}
190 Kill back to the beginning of the sentence (@code{backward-kill-sentence}).
191 @end table
193 @kindex M-a
194 @kindex M-e
195 @findex backward-sentence
196 @findex forward-sentence
197   The commands @kbd{M-a} (@code{backward-sentence}) and @kbd{M-e}
198 (@code{forward-sentence}) move to the beginning and end of the current
199 sentence, respectively.  Their bindings were chosen to resemble
200 @kbd{C-a} and @kbd{C-e}, which move to the beginning and end of a
201 line.  Unlike them, @kbd{M-a} and @kbd{M-e} move over successive
202 sentences if repeated.
204   Moving backward over a sentence places point just before the first
205 character of the sentence; moving forward places point right after the
206 punctuation that ends the sentence.  Neither one moves over the
207 whitespace at the sentence boundary.
209 @kindex M-k
210 @findex kill-sentence
211   Just as @kbd{C-a} and @kbd{C-e} have a kill command, @kbd{C-k}, to
212 go with them, @kbd{M-a} and @kbd{M-e} have a corresponding kill
213 command: @kbd{M-k} (@code{kill-sentence}) kills from point to the end
214 of the sentence.  With a positive numeric argument @var{n}, it kills
215 the next @var{n} sentences; with a negative argument @minus{}@var{n},
216 it kills back to the beginning of the @var{n}th preceding sentence.
218 @kindex C-x DEL
219 @findex backward-kill-sentence
220   The @kbd{C-x @key{DEL}} (@code{backward-kill-sentence}) kills back
221 to the beginning of a sentence.
223   The sentence commands assume that you follow the American typist's
224 convention of putting two spaces at the end of a sentence.  That is, a
225 sentence ends wherever there is a @samp{.}, @samp{?} or @samp{!}
226 followed by the end of a line or two spaces, with any number of
227 @samp{)}, @samp{]}, @samp{'}, or @samp{"} characters allowed in
228 between.  A sentence also begins or ends wherever a paragraph begins
229 or ends.  It is useful to follow this convention, because it allows
230 the Emacs sentence commands to distinguish between periods that end a
231 sentence and periods that indicate abbreviations.
233 @vindex sentence-end-double-space
234   If you want to use just one space between sentences, you can set the
235 variable @code{sentence-end-double-space} to @code{nil} to make the
236 sentence commands stop for single spaces.  However, this has a
237 drawback: there is no way to distinguish between periods that end
238 sentences and those that indicate abbreviations.  For convenient and
239 reliable editing, we therefore recommend you follow the two-space
240 convention.  The variable @code{sentence-end-double-space} also
241 affects filling (@pxref{Fill Commands}).
243 @vindex sentence-end
244   The variable @code{sentence-end} controls how to recognize the end
245 of a sentence.  If non-@code{nil}, its value should be a regular
246 expression, which is used to match the last few characters of a
247 sentence, together with the whitespace following the sentence
248 (@pxref{Regexps}).  If the value is @code{nil}, the default, then
249 Emacs computes sentence ends according to various criteria such as the
250 value of @code{sentence-end-double-space}.
252 @vindex sentence-end-without-period
253   Some languages, such as Thai, do not use periods to indicate the end
254 of a sentence.  Set the variable @code{sentence-end-without-period} to
255 @code{t} in such cases.
257 @node Paragraphs
258 @section Paragraphs
259 @cindex paragraphs
260 @cindex manipulating paragraphs
262   The Emacs commands for manipulating paragraphs are also on Meta keys.
264 @table @kbd
265 @item M-@{
266 Move back to previous paragraph beginning (@code{backward-paragraph}).
267 @item M-@}
268 Move forward to next paragraph end (@code{forward-paragraph}).
269 @item M-h
270 Put point and mark around this or next paragraph (@code{mark-paragraph}).
271 @end table
273 @kindex M-@{
274 @kindex M-@}
275 @findex backward-paragraph
276 @findex forward-paragraph
277   @kbd{M-@{} (@code{backward-paragraph}) moves to the beginning of the
278 current or previous paragraph (see below for the definition of a
279 paragraph).  @kbd{M-@}} (@code{forward-paragraph}) moves to the end of
280 the current or next paragraph.  If there is a blank line before the
281 paragraph, @kbd{M-@{} moves to the blank line.
283 @kindex M-h
284 @findex mark-paragraph
285   When you wish to operate on a paragraph, type @kbd{M-h}
286 (@code{mark-paragraph}) to set the region around it.  For example,
287 @kbd{M-h C-w} kills the paragraph around or after point.  @kbd{M-h}
288 puts point at the beginning and mark at the end of the paragraph point
289 was in.  If point is between paragraphs (in a run of blank lines, or
290 at a boundary), @kbd{M-h} sets the region around the paragraph
291 following point.  If there are blank lines preceding the first line of
292 the paragraph, one of these blank lines is included in the region.  If
293 the region is already active, the command sets the mark without
294 changing point, and each subsequent @kbd{M-h} further advances the
295 mark by one paragraph.
297   The definition of a paragraph depends on the major mode.  In
298 Fundamental mode, as well as Text mode and related modes, a paragraph
299 is separated from neighboring paragraphs by one or more
300 @dfn{blank lines}---lines that are either empty, or consist solely of
301 space, tab and/or formfeed characters.  In programming language modes,
302 paragraphs are usually defined in a similar way, so that you can use
303 the paragraph commands even though there are no paragraphs as such in
304 a program.
306   Note that an indented line is @emph{not} itself a paragraph break in
307 Text mode.  If you want indented lines to separate paragraphs, use
308 Paragraph-Indent Text mode instead.  @xref{Text Mode}.
310   If you set a fill prefix, then paragraphs are delimited by all lines
311 which don't start with the fill prefix.  @xref{Filling}.
313 @vindex paragraph-start
314 @vindex paragraph-separate
315   The precise definition of a paragraph boundary is controlled by the
316 variables @code{paragraph-separate} and @code{paragraph-start}.  The
317 value of @code{paragraph-start} is a regular expression that should
318 match lines that either start or separate paragraphs
319 (@pxref{Regexps}).  The value of @code{paragraph-separate} is another
320 regular expression that should match lines that separate paragraphs
321 without being part of any paragraph (for example, blank lines).  Lines
322 that start a new paragraph and are contained in it must match only
323 @code{paragraph-start}, not @code{paragraph-separate}.  For example,
324 in Fundamental mode, @code{paragraph-start} is @w{@code{"\f\\|[
325 \t]*$"}}, and @code{paragraph-separate} is @w{@code{"[ \t\f]*$"}}.
327 @node Pages
328 @section Pages
330 @cindex pages
331 @cindex formfeed character
332   Within some text files, text is divided into @dfn{pages} delimited
333 by the @dfn{formfeed character} (@acronym{ASCII} code 12, also denoted
334 as @samp{control-L}), which is displayed in Emacs as the escape
335 sequence @samp{^L} (@pxref{Text Display}).  Traditionally, when such
336 text files are printed to hardcopy, each formfeed character forces a
337 page break.  Most Emacs commands treat it just like any other
338 character, so you can insert it with @kbd{C-q C-l}, delete it with
339 @key{DEL}, etc.  In addition, Emacs provides commands to move over
340 pages and operate on them.
342 @table @kbd
343 @item M-x what-page
344 Display the page number of point, and the line number within that page.
345 @item C-x [
346 Move point to previous page boundary (@code{backward-page}).
347 @item C-x ]
348 Move point to next page boundary (@code{forward-page}).
349 @item C-x C-p
350 Put point and mark around this page (or another page) (@code{mark-page}).
351 @item C-x l
352 Count the lines in this page (@code{count-lines-page}).
353 @end table
355 @findex what-page
356   @kbd{M-x what-page} counts pages from the beginning of the file, and
357 counts lines within the page, showing both numbers in the echo area.
359 @kindex C-x [
360 @kindex C-x ]
361 @findex forward-page
362 @findex backward-page
363   The @kbd{C-x [} (@code{backward-page}) command moves point to immediately
364 after the previous page delimiter.  If point is already right after a page
365 delimiter, it skips that one and stops at the previous one.  A numeric
366 argument serves as a repeat count.  The @kbd{C-x ]} (@code{forward-page})
367 command moves forward past the next page delimiter.
369 @kindex C-x C-p
370 @findex mark-page
371   The @kbd{C-x C-p} command (@code{mark-page}) puts point at the
372 beginning of the current page (after that page delimiter at the
373 front), and the mark at the end of the page (after the page delimiter
374 at the end).
376   @kbd{C-x C-p C-w} is a handy way to kill a page to move it
377 elsewhere.  If you move to another page delimiter with @kbd{C-x [} and
378 @kbd{C-x ]}, then yank the killed page, all the pages will be properly
379 delimited once again.  The reason @kbd{C-x C-p} includes only the
380 following page delimiter in the region is to ensure that.
382   A numeric argument to @kbd{C-x C-p} specifies which page to go to,
383 relative to the current one.  Zero means the current page, one
384 the next page, and @minus{}1 the previous one.
386 @kindex C-x l
387 @findex count-lines-page
388   The @kbd{C-x l} command (@code{count-lines-page}) is good for deciding
389 where to break a page in two.  It displays in the echo area the total number
390 of lines in the current page, and then divides it up into those preceding
391 the current line and those following, as in
393 @example
394 Page has 96 (72+25) lines
395 @end example
397 @noindent
398   Notice that the sum is off by one; this is correct if point is not at the
399 beginning of a line.
401 @vindex page-delimiter
402   The variable @code{page-delimiter} controls where pages begin.  Its
403 value is a regular expression that matches the beginning of a line
404 that separates pages (@pxref{Regexps}).  The normal value of this
405 variable is @code{"^\f"}, which matches a formfeed character at the
406 beginning of a line.
408 @node Quotation Marks
409 @section Quotation Marks
410 @cindex Quotation marks
411 @cindex Electric Quote mode
412 @cindex mode, Electric Quote
413 @cindex curly quotes
414 @cindex curved quotes
415 @cindex guillemets
416 @findex electric-quote-mode
417   One common way to quote is the typewriter convention, which quotes
418 using straight apostrophes @t{'like this'} or double-quotes @t{"like
419 this"}.  Another common way is the curved quote convention, which uses
420 left and right single or double quotation marks @t{‘like this’} or
421 @t{“like this”}.  In text files, typewriter quotes are simple and
422 portable; curved quotes are less ambiguous and typically look nicer.
424 @vindex electric-quote-chars
425   Electric Quote mode makes it easier to type curved quotes.  As you
426 type characters it optionally converts @t{`} to @t{‘}, @t{'} to @t{’},
427 @t{``} to @t{“}, and @t{''} to @t{”}.  It's possible to change the
428 default quotes listed above, by customizing the variable
429 @code{electric-quote-chars}, a list of four characters, where the
430 items correspond to the left single quote, the right single quote, the
431 left double quote and the right double quote, respectively, whose
432 default value is @code{'(?‘ ?’ ?“ ?”)}.
434 @vindex electric-quote-paragraph
435 @vindex electric-quote-comment
436 @vindex electric-quote-string
437   You can customize the behavior of Electric Quote mode by customizing
438 variables that control where it is active.  It is active in text
439 paragraphs if @code{electric-quote-paragraph} is non-@code{nil}, in
440 programming-language comments if @code{electric-quote-comment} is
441 non-@code{nil}, and in programming-language strings if
442 @code{electric-quote-string} is non-@code{nil}.  The default is
443 @code{nil} for @code{electric-quote-string} and @code{t} for the other
444 variables.
446 @vindex electric-quote-replace-double
447   You can also set the option @code{electric-quote-replace-double} to
448 a non-@code{nil} value.  Then, typing @t{"} insert an appropriate
449 curved double quote depending on context: @t{“} at the beginning of
450 the buffer or after a line break, whitespace, opening parenthesis, or
451 quote character, and @t{”} otherwise.
453   Electric Quote mode is disabled by default.  To toggle it, type
454 @kbd{M-x electric-quote-mode}.  To toggle it in a single buffer, use
455 @kbd{M-x electric-quote-local-mode}.  To suppress it for a single use,
456 type @kbd{C-q `} or @kbd{C-q '} instead of @kbd{`} or @kbd{'}.  To
457 insert a curved quote even when Electric Quote is disabled or
458 inactive, you can type @kbd{C-x 8 [} for @t{‘}, @kbd{C-x 8 ]} for
459 @t{’}, @kbd{C-x 8 @{} for @t{“}, and @kbd{C-x 8 @}} for @t{”}.
460 @xref{Inserting Text}.  Note that the value of
461 @code{electric-quote-chars} does not affect these keybindings, they
462 are not keybindings of @code{electric-quote-mode} but bound in
463 @code{global-map}.
465 @node Filling
466 @section Filling Text
467 @cindex filling text
469   @dfn{Filling} text means breaking it up into lines that fit a
470 specified width.  Emacs does filling in two ways.  In Auto Fill mode,
471 inserting text with self-inserting characters also automatically fills
472 it.  There are also explicit fill commands that you can use when editing
473 text.
475 @menu
476 * Auto Fill::      Auto Fill mode breaks long lines automatically.
477 * Fill Commands::  Commands to refill paragraphs and center lines.
478 * Fill Prefix::    Filling paragraphs that are indented or in a comment, etc.
479 * Adaptive Fill::  How Emacs can determine the fill prefix automatically.
480 @end menu
482 @node Auto Fill
483 @subsection Auto Fill Mode
484 @cindex Auto Fill mode
485 @cindex mode, Auto Fill
487   @dfn{Auto Fill} mode is a buffer-local minor mode (@pxref{Minor
488 Modes}) in which lines are broken automatically when they become too
489 wide.  Breaking happens only when you type a @key{SPC} or @key{RET}.
491 @table @kbd
492 @item M-x auto-fill-mode
493 Enable or disable Auto Fill mode.
494 @item @key{SPC}
495 @itemx @key{RET}
496 In Auto Fill mode, break lines when appropriate.
497 @end table
499 @findex auto-fill-mode
500   The mode command @kbd{M-x auto-fill-mode} toggles Auto Fill mode in
501 the current buffer.  With a positive numeric argument, it enables Auto
502 Fill mode, and with a negative argument it disables it.  If
503 @code{auto-fill-mode} is called from Lisp with an omitted or
504 @code{nil} argument, it enables Auto Fill mode.  To enable Auto Fill
505 mode automatically in certain major modes, add @code{auto-fill-mode}
506 to the mode hooks (@pxref{Major Modes}).  When Auto Fill mode is
507 enabled, the mode indicator @samp{Fill} appears in the mode line
508 (@pxref{Mode Line}).
510   Auto Fill mode breaks lines automatically at spaces whenever they
511 get longer than the desired width.  This line breaking occurs only
512 when you type @key{SPC} or @key{RET}.  If you wish to insert a space
513 or newline without permitting line-breaking, type @kbd{C-q @key{SPC}}
514 or @kbd{C-q C-j} respectively.  Also, @kbd{C-o} inserts a newline
515 without line breaking.
517   When Auto Fill mode breaks a line, it tries to obey the
518 @dfn{adaptive fill prefix}: if a fill prefix can be deduced from the
519 first and/or second line of the current paragraph, it is inserted into
520 the new line (@pxref{Adaptive Fill}).  Otherwise the new line is
521 indented, as though you had typed @key{TAB} on it
522 (@pxref{Indentation}).  In a programming language mode, if a line is
523 broken in the middle of a comment, the comment is split by inserting
524 new comment delimiters as appropriate.
526   Auto Fill mode does not refill entire paragraphs; it breaks lines
527 but does not merge lines.  Therefore, editing in the middle of a
528 paragraph can result in a paragraph that is not correctly filled.  To
529 fill it, call the explicit fill commands
530 @iftex
531 described in the next section.
532 @end iftex
533 @ifnottex
534 (@pxref{Fill Commands}).
535 @end ifnottex
537 @node Fill Commands
538 @subsection Explicit Fill Commands
540 @table @kbd
541 @item M-q
542 Fill current paragraph (@code{fill-paragraph}).
543 @item C-x f
544 Set the fill column (@code{set-fill-column}).
545 @item M-x fill-region
546 Fill each paragraph in the region (@code{fill-region}).
547 @item M-x fill-region-as-paragraph
548 Fill the region, considering it as one paragraph.
549 @item M-o M-s
550 Center a line.
551 @end table
553 @kindex M-q
554 @findex fill-paragraph
555   The command @kbd{M-q} (@code{fill-paragraph}) @dfn{fills} the
556 current paragraph.  It redistributes the line breaks within the
557 paragraph, and deletes any excess space and tab characters occurring
558 within the paragraph, in such a way that the lines end up fitting
559 within a certain maximum width.
561 @findex fill-region
562   Normally, @kbd{M-q} acts on the paragraph where point is, but if
563 point is between paragraphs, it acts on the paragraph after point.  If
564 the region is active, it acts instead on the text in the region.  You
565 can also call @kbd{M-x fill-region} to specifically fill the text in
566 the region.
568 @findex fill-region-as-paragraph
569   @kbd{M-q} and @code{fill-region} use the usual Emacs criteria for
570 finding paragraph boundaries (@pxref{Paragraphs}).  For more control,
571 you can use @kbd{M-x fill-region-as-paragraph}, which refills
572 everything between point and mark as a single paragraph.  This command
573 deletes any blank lines within the region, so separate blocks of text
574 end up combined into one block.
576 @cindex justification
577   A numeric argument to @kbd{M-q} tells it to @dfn{justify} the text
578 as well as filling it.  This means that extra spaces are inserted to
579 make the right margin line up exactly at the fill column.  To remove
580 the extra spaces, use @kbd{M-q} with no argument.  (Likewise for
581 @code{fill-region}.)
583 @vindex fill-column
584 @kindex C-x f
585 @findex set-fill-column
586   The maximum line width for filling is specified by the buffer-local
587 variable @code{fill-column}.  The default value (@pxref{Locals}) is
588 70.  The easiest way to set @code{fill-column} in the current buffer
589 is to use the command @kbd{C-x f} (@code{set-fill-column}).  With a
590 numeric argument, it uses that as the new fill column.  With just
591 @kbd{C-u} as argument, it sets @code{fill-column} to the current
592 horizontal position of point.
594 @kindex M-o M-s @r{(Text mode)}
595 @cindex centering
596 @findex center-line
597   The command @kbd{M-o M-s} (@code{center-line}) centers the current line
598 within the current fill column.  With an argument @var{n}, it centers
599 @var{n} lines individually and moves past them.  This binding is
600 made by Text mode and is available only in that and related modes
601 (@pxref{Text Mode}).
603   By default, Emacs considers a period followed by two spaces or by a
604 newline as the end of a sentence; a period followed by just one space
605 indicates an abbreviation, not the end of a sentence.  Accordingly,
606 the fill commands will not break a line after a period followed by
607 just one space.  If you set the variable
608 @code{sentence-end-double-space} to @code{nil}, the fill commands will
609 break a line after a period followed by one space, and put just one
610 space after each period.  @xref{Sentences}, for other effects and
611 possible drawbacks of this.
613 @vindex colon-double-space
614   If the variable @code{colon-double-space} is non-@code{nil}, the
615 fill commands put two spaces after a colon.
617 @vindex fill-nobreak-predicate
618   To specify additional conditions where line-breaking is not allowed,
619 customize the abnormal hook variable @code{fill-nobreak-predicate}
620 (@pxref{Hooks}).  Each function in this hook is called with no
621 arguments, with point positioned where Emacs is considering breaking a
622 line.  If a function returns a non-@code{nil} value, Emacs will not
623 break the line there.  Functions you can use there include:
624 @code{fill-single-word-nobreak-p} (don't break after the first word of
625 a sentence or before the last); @code{fill-single-char-nobreak-p}
626 (don't break after a one-letter word); and @code{fill-french-nobreak-p}
627 (don't break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}).
629 @node Fill Prefix
630 @subsection The Fill Prefix
632 @cindex fill prefix
633   The @dfn{fill prefix} feature allows paragraphs to be filled so that
634 each line starts with a special string of characters (such as a
635 sequence of spaces, giving an indented paragraph).  You can specify a
636 fill prefix explicitly; otherwise, Emacs tries to deduce one
637 automatically (@pxref{Adaptive Fill}).
639 @table @kbd
640 @item C-x .
641 Set the fill prefix (@code{set-fill-prefix}).
642 @item M-q
643 Fill a paragraph using current fill prefix (@code{fill-paragraph}).
644 @item M-x fill-individual-paragraphs
645 Fill the region, considering each change of indentation as starting a
646 new paragraph.
647 @item M-x fill-nonuniform-paragraphs
648 Fill the region, considering only paragraph-separator lines as starting
649 a new paragraph.
650 @end table
652 @kindex C-x .
653 @findex set-fill-prefix
654   To specify a fill prefix for the current buffer, move to a line that
655 starts with the desired prefix, put point at the end of the prefix,
656 and type @w{@kbd{C-x .}}@: (@code{set-fill-prefix}).  (That's a period
657 after the @kbd{C-x}.)  To turn off the fill prefix, specify an empty
658 prefix: type @w{@kbd{C-x .}}@: with point at the beginning of a line.
660   When a fill prefix is in effect, the fill commands remove the fill
661 prefix from each line of the paragraph before filling, and insert it
662 on each line after filling.  (The beginning of the first line of the
663 paragraph is left unchanged, since often that is intentionally
664 different.)  Auto Fill mode also inserts the fill prefix automatically
665 when it makes a new line (@pxref{Auto Fill}).  The @kbd{C-o} command
666 inserts the fill prefix on new lines it creates, when you use it at
667 the beginning of a line (@pxref{Blank Lines}).  Conversely, the
668 command @kbd{M-^} deletes the prefix (if it occurs) after the newline
669 that it deletes (@pxref{Indentation}).
671   For example, if @code{fill-column} is 40 and you set the fill prefix
672 to @samp{;; }, then @kbd{M-q} in the following text
674 @example
675 ;; This is an
676 ;; example of a paragraph
677 ;; inside a Lisp-style comment.
678 @end example
680 @noindent
681 produces this:
683 @example
684 ;; This is an example of a paragraph
685 ;; inside a Lisp-style comment.
686 @end example
688   Lines that do not start with the fill prefix are considered to start
689 paragraphs, both in @kbd{M-q} and the paragraph commands; this gives
690 good results for paragraphs with hanging indentation (every line
691 indented except the first one).  Lines which are blank or indented once
692 the prefix is removed also separate or start paragraphs; this is what
693 you want if you are writing multi-paragraph comments with a comment
694 delimiter on each line.
696 @findex fill-individual-paragraphs
697   You can use @kbd{M-x fill-individual-paragraphs} to set the fill
698 prefix for each paragraph automatically.  This command divides the
699 region into paragraphs, treating every change in the amount of
700 indentation as the start of a new paragraph, and fills each of these
701 paragraphs.  Thus, all the lines in one paragraph have the same
702 amount of indentation.  That indentation serves as the fill prefix for
703 that paragraph.
705 @findex fill-nonuniform-paragraphs
706   @kbd{M-x fill-nonuniform-paragraphs} is a similar command that divides
707 the region into paragraphs in a different way.  It considers only
708 paragraph-separating lines (as defined by @code{paragraph-separate}) as
709 starting a new paragraph.  Since this means that the lines of one
710 paragraph may have different amounts of indentation, the fill prefix
711 used is the smallest amount of indentation of any of the lines of the
712 paragraph.  This gives good results with styles that indent a paragraph's
713 first line more or less that the rest of the paragraph.
715 @vindex fill-prefix
716   The fill prefix is stored in the variable @code{fill-prefix}.  Its value
717 is a string, or @code{nil} when there is no fill prefix.  This is a
718 per-buffer variable; altering the variable affects only the current buffer,
719 but there is a default value which you can change as well.  @xref{Locals}.
721   The @code{indentation} text property provides another way to control
722 the amount of indentation paragraphs receive.  @xref{Enriched
723 Indentation}.
725 @node Adaptive Fill
726 @subsection Adaptive Filling
728 @cindex adaptive filling
729   The fill commands can deduce the proper fill prefix for a paragraph
730 automatically in certain cases: either whitespace or certain punctuation
731 characters at the beginning of a line are propagated to all lines of the
732 paragraph.
734   If the paragraph has two or more lines, the fill prefix is taken from
735 the paragraph's second line, but only if it appears on the first line as
736 well.
738   If a paragraph has just one line, fill commands @emph{may} take a
739 prefix from that line.  The decision is complicated because there are
740 three reasonable things to do in such a case:
742 @itemize @bullet
743 @item
744 Use the first line's prefix on all the lines of the paragraph.
746 @item
747 Indent subsequent lines with whitespace, so that they line up under the
748 text that follows the prefix on the first line, but don't actually copy
749 the prefix from the first line.
751 @item
752 Don't do anything special with the second and following lines.
753 @end itemize
755   All three of these styles of formatting are commonly used.  So the
756 fill commands try to determine what you would like, based on the prefix
757 that appears and on the major mode.  Here is how.
759 @vindex adaptive-fill-first-line-regexp
760   If the prefix found on the first line matches
761 @code{adaptive-fill-first-line-regexp}, or if it appears to be a
762 comment-starting sequence (this depends on the major mode), then the
763 prefix found is used for filling the paragraph, provided it would not
764 act as a paragraph starter on subsequent lines.
766   Otherwise, the prefix found is converted to an equivalent number of
767 spaces, and those spaces are used as the fill prefix for the rest of the
768 lines, provided they would not act as a paragraph starter on subsequent
769 lines.
771   In Text mode, and other modes where only blank lines and page
772 delimiters separate paragraphs, the prefix chosen by adaptive filling
773 never acts as a paragraph starter, so it can always be used for filling.
775 @vindex adaptive-fill-mode
776 @vindex adaptive-fill-regexp
777   The variable @code{adaptive-fill-regexp} determines what kinds of line
778 beginnings can serve as a fill prefix: any characters at the start of
779 the line that match this regular expression are used.  If you set the
780 variable @code{adaptive-fill-mode} to @code{nil}, the fill prefix is
781 never chosen automatically.
783 @vindex adaptive-fill-function
784   You can specify more complex ways of choosing a fill prefix
785 automatically by setting the variable @code{adaptive-fill-function} to a
786 function.  This function is called with point after the left margin of a
787 line, and it should return the appropriate fill prefix based on that
788 line.  If it returns @code{nil}, @code{adaptive-fill-regexp} gets
789 a chance to find a prefix.
791 @node Case
792 @section Case Conversion Commands
793 @cindex case conversion
795   Emacs has commands for converting either a single word or any arbitrary
796 range of text to upper case or to lower case.
798 @table @kbd
799 @item M-l
800 Convert following word to lower case (@code{downcase-word}).
801 @item M-u
802 Convert following word to upper case (@code{upcase-word}).
803 @item M-c
804 Capitalize the following word (@code{capitalize-word}).
805 @item C-x C-l
806 Convert region to lower case (@code{downcase-region}).
807 @item C-x C-u
808 Convert region to upper case (@code{upcase-region}).
809 @end table
811 @kindex M-l
812 @kindex M-u
813 @kindex M-c
814 @cindex words, case conversion
815 @cindex converting text to upper or lower case
816 @cindex capitalizing words
817 @findex downcase-word
818 @findex upcase-word
819 @findex capitalize-word
820   @kbd{M-l} (@code{downcase-word}) converts the word after point to
821 lower case, moving past it.  Thus, repeating @kbd{M-l} converts
822 successive words.  @kbd{M-u} (@code{upcase-word}) converts to all
823 capitals instead, while @kbd{M-c} (@code{capitalize-word}) puts the
824 first letter of the word into upper case and the rest into lower case.
825 All these commands convert several words at once if given an argument.
826 They are especially convenient for converting a large amount of text
827 from all upper case to mixed case, because you can move through the
828 text using @kbd{M-l}, @kbd{M-u} or @kbd{M-c} on each word as
829 appropriate, occasionally using @kbd{M-f} instead to skip a word.
831   When given a negative argument, the word case conversion commands apply
832 to the appropriate number of words before point, but do not move point.
833 This is convenient when you have just typed a word in the wrong case: you
834 can give the case conversion command and continue typing.
836   If a word case conversion command is given in the middle of a word,
837 it applies only to the part of the word which follows point.  (This is
838 comparable to what @kbd{M-d} (@code{kill-word}) does.)  With a
839 negative argument, case conversion applies only to the part of the
840 word before point.
842 @kindex C-x C-l
843 @kindex C-x C-u
844 @findex downcase-region
845 @findex upcase-region
846   The other case conversion commands are @kbd{C-x C-u}
847 (@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which
848 convert everything between point and mark to the specified case.  Point and
849 mark do not move.
851   The region case conversion commands @code{upcase-region} and
852 @code{downcase-region} are normally disabled.  This means that they ask
853 for confirmation if you try to use them.  When you confirm, you may
854 enable the command, which means it will not ask for confirmation again.
855 @xref{Disabling}.
857 @node Text Mode
858 @section Text Mode
859 @cindex Text mode
860 @cindex mode, Text
861 @findex text-mode
863   Text mode is a major mode for editing files of text in a human
864 language.  Files which have names ending in the extension @file{.txt}
865 are usually opened in Text mode (@pxref{Choosing Modes}).  To
866 explicitly switch to Text mode, type @kbd{M-x text-mode}.
868   In Text mode, only blank lines and page delimiters separate
869 paragraphs.  As a result, paragraphs can be indented, and adaptive
870 filling determines what indentation to use when filling a paragraph.
871 @xref{Adaptive Fill}.
873 @kindex TAB @r{(Text mode)}
874   In Text mode, the @key{TAB} (@code{indent-for-tab-command}) command
875 usually inserts whitespace up to the next tab stop, instead of
876 indenting the current line.  @xref{Indentation}, for details.
878   Text mode turns off the features concerned with comments except when
879 you explicitly invoke them.  It changes the syntax table so that
880 apostrophes are considered part of words (e.g., @samp{don't} is
881 considered one word).  However, if a word starts with an apostrophe,
882 it is treated as a prefix for the purposes of capitalization
883 (e.g., @kbd{M-c} converts @samp{'hello'} into @samp{'Hello'}, as
884 expected).
886 @cindex Paragraph-Indent Text mode
887 @cindex mode, Paragraph-Indent Text
888 @findex paragraph-indent-text-mode
889 @findex paragraph-indent-minor-mode
890   If you indent the first lines of paragraphs, then you should use
891 Paragraph-Indent Text mode (@kbd{M-x paragraph-indent-text-mode})
892 rather than Text mode.  In that mode, you do not need to have blank
893 lines between paragraphs, because the first-line indentation is
894 sufficient to start a paragraph; however paragraphs in which every
895 line is indented are not supported.  Use @kbd{M-x
896 paragraph-indent-minor-mode} to enable an equivalent minor mode for
897 situations where you shouldn't change the major mode---in mail
898 composition, for instance.
900 @kindex M-TAB @r{(Text mode)}
901   Text mode binds @kbd{M-@key{TAB}} to @code{ispell-complete-word}.
902 This command performs completion of the partial word in the buffer
903 before point, using the spelling dictionary as the space of possible
904 words.  @xref{Spelling}.  If your window manager defines
905 @kbd{M-@key{TAB}} to switch windows, you can type @kbd{@key{ESC}
906 @key{TAB}} or @kbd{C-M-i} instead.
908 @vindex text-mode-hook
909   Entering Text mode runs the mode hook @code{text-mode-hook}
910 (@pxref{Major Modes}).
912   The following sections describe several major modes that are
913 @dfn{derived} from Text mode.  These derivatives share most of the
914 features of Text mode described above.  In particular, derivatives of
915 Text mode run @code{text-mode-hook} prior to running their own mode
916 hooks.
918 @node Outline Mode
919 @section Outline Mode
920 @cindex Outline mode
921 @cindex mode, Outline
922 @cindex invisible lines
924 @findex outline-mode
925 @findex outline-minor-mode
926 @vindex outline-minor-mode-prefix
927 @vindex outline-mode-hook
928   Outline mode is a major mode derived from Text mode, which is
929 specialized for editing outlines.  It provides commands to navigate
930 between entries in the outline structure, and commands to make parts
931 of a buffer temporarily invisible, so that the outline structure may
932 be more easily viewed.  Type @kbd{M-x outline-mode} to switch to
933 Outline mode.  Entering Outline mode runs the hook
934 @code{text-mode-hook} followed by the hook @code{outline-mode-hook}
935 (@pxref{Hooks}).
937   When you use an Outline mode command to make a line invisible
938 (@pxref{Outline Visibility}), the line disappears from the screen.  An
939 ellipsis (three periods in a row) is displayed at the end of the
940 previous visible line, to indicate the hidden text.  Multiple
941 consecutive invisible lines produce just one ellipsis.
943   Editing commands that operate on lines, such as @kbd{C-n} and
944 @kbd{C-p}, treat the text of the invisible line as part of the
945 previous visible line.  Killing the ellipsis at the end of a visible
946 line really kills all the following invisible text associated with the
947 ellipsis.
949   Outline minor mode is a buffer-local minor mode which provides the
950 same commands as the major mode, Outline mode, but can be used in
951 conjunction with other major modes.  You can type @kbd{M-x
952 outline-minor-mode} to toggle Outline minor mode in the current
953 buffer, or use a file-local variable setting to enable it in a
954 specific file (@pxref{File Variables}).
956 @kindex C-c @@ @r{(Outline minor mode)}
957   The major mode, Outline mode, provides special key bindings on the
958 @kbd{C-c} prefix.  Outline minor mode provides similar bindings with
959 @kbd{C-c @@} as the prefix; this is to reduce the conflicts with the
960 major mode's special commands.  (The variable
961 @code{outline-minor-mode-prefix} controls the prefix used.)
963 @menu
964 * Outline Format::      What the text of an outline looks like.
965 * Outline Motion::      Special commands for moving through outlines.
966 * Outline Visibility::  Commands to control what is visible.
967 * Outline Views::       Outlines and multiple views.
968 * Foldout::             Folding means zooming in on outlines.
969 @end menu
971 @node Outline Format
972 @subsection Format of Outlines
974 @cindex heading lines (Outline mode)
975 @cindex body lines (Outline mode)
976   Outline mode assumes that the lines in the buffer are of two types:
977 @dfn{heading lines} and @dfn{body lines}.  A heading line represents a
978 topic in the outline.  Heading lines start with one or more asterisk
979 (@samp{*}) characters; the number of asterisks determines the depth of
980 the heading in the outline structure.  Thus, a heading line with one
981 @samp{*} is a major topic; all the heading lines with two @samp{*}s
982 between it and the next one-@samp{*} heading are its subtopics; and so
983 on.  Any line that is not a heading line is a body line.  Body lines
984 belong with the preceding heading line.  Here is an example:
986 @example
987 * Food
988 This is the body,
989 which says something about the topic of food.
991 ** Delicious Food
992 This is the body of the second-level header.
994 ** Distasteful Food
995 This could have
996 a body too, with
997 several lines.
999 *** Dormitory Food
1001 * Shelter
1002 Another first-level topic with its header line.
1003 @end example
1005   A heading line together with all following body lines is called
1006 collectively an @dfn{entry}.  A heading line together with all following
1007 deeper heading lines and their body lines is called a @dfn{subtree}.
1009 @vindex outline-regexp
1010   You can customize the criterion for distinguishing heading lines by
1011 setting the variable @code{outline-regexp}.  (The recommended ways to
1012 do this are in a major mode function or with a file local variable.)
1013 Any line whose beginning has a match for this regexp is considered a
1014 heading line.  Matches that start within a line (not at the left
1015 margin) do not count.
1017   The length of the matching text determines the level of the heading;
1018 longer matches make a more deeply nested level.  Thus, for example, if
1019 a text formatter has commands @samp{@@chapter}, @samp{@@section} and
1020 @samp{@@subsection} to divide the document into chapters and sections,
1021 you could make those lines count as heading lines by setting
1022 @code{outline-regexp} to @samp{"@@chap\\|@@\\(sub\\)*section"}.  Note
1023 the trick: the two words @samp{chapter} and @samp{section} are equally
1024 long, but by defining the regexp to match only @samp{chap} we ensure
1025 that the length of the text matched on a chapter heading is shorter,
1026 so that Outline mode will know that sections are contained in
1027 chapters.  This works as long as no other command starts with
1028 @samp{@@chap}.
1030 @vindex outline-level
1031   You can explicitly specify a rule for calculating the level of a
1032 heading line by setting the variable @code{outline-level}.  The value
1033 of @code{outline-level} should be a function that takes no arguments
1034 and returns the level of the current heading.  The recommended ways to
1035 set this variable are in a major mode command or with a file local
1036 variable.
1038 @node Outline Motion
1039 @subsection Outline Motion Commands
1041   Outline mode provides special motion commands that move backward and
1042 forward to heading lines.
1044 @table @kbd
1045 @item C-c C-n
1046 Move point to the next visible heading line
1047 (@code{outline-next-visible-heading}).
1048 @item C-c C-p
1049 Move point to the previous visible heading line
1050 (@code{outline-previous-visible-heading}).
1051 @item C-c C-f
1052 Move point to the next visible heading line at the same level
1053 as the one point is on (@code{outline-forward-same-level}).
1054 @item C-c C-b
1055 Move point to the previous visible heading line at the same level
1056 (@code{outline-backward-same-level}).
1057 @item C-c C-u
1058 Move point up to a lower-level (more inclusive) visible heading line
1059 (@code{outline-up-heading}).
1060 @end table
1062 @findex outline-next-visible-heading
1063 @findex outline-previous-visible-heading
1064 @kindex C-c C-n @r{(Outline mode)}
1065 @kindex C-c C-p @r{(Outline mode)}
1066   @kbd{C-c C-n} (@code{outline-next-visible-heading}) moves down to
1067 the next heading line.  @kbd{C-c C-p}
1068 (@code{outline-previous-visible-heading}) moves similarly backward.
1069 Both accept numeric arguments as repeat counts.
1071 @findex outline-up-heading
1072 @findex outline-forward-same-level
1073 @findex outline-backward-same-level
1074 @kindex C-c C-f @r{(Outline mode)}
1075 @kindex C-c C-b @r{(Outline mode)}
1076 @kindex C-c C-u @r{(Outline mode)}
1077   @kbd{C-c C-f} (@code{outline-forward-same-level}) and @kbd{C-c C-b}
1078 (@code{outline-backward-same-level}) move from one heading line to
1079 another visible heading at the same depth in the outline.  @kbd{C-c
1080 C-u} (@code{outline-up-heading}) moves backward to another heading
1081 that is less deeply nested.
1083 @node Outline Visibility
1084 @subsection Outline Visibility Commands
1086   Outline mode provides several commands for temporarily hiding or
1087 revealing parts of the buffer, based on the outline structure.  These
1088 commands are not undoable; their effects are simply not recorded by
1089 the undo mechanism, so you can undo right past them (@pxref{Undo}).
1091   Many of these commands act on the current heading line.  If
1092 point is on a heading line, that is the current heading line; if point
1093 is on a body line, the current heading line is the nearest preceding
1094 header line.
1096 @table @kbd
1097 @item C-c C-c
1098 Make the current heading line's body invisible
1099 (@code{outline-hide-entry}).
1100 @item C-c C-e
1101 Make the current heading line's body visible
1102 (@code{outline-show-entry}).
1103 @item C-c C-d
1104 Make everything under the current heading invisible, not including the
1105 heading itself (@code{outline-hide-subtree}).
1106 @item C-c C-s
1107 Make everything under the current heading visible, including body,
1108 subheadings, and their bodies (@code{outline-show-subtree}).
1109 @item C-c C-l
1110 Make the body of the current heading line, and of all its subheadings,
1111 invisible (@code{outline-hide-leaves}).
1112 @item C-c C-k
1113 Make all subheadings of the current heading line, at all levels,
1114 visible (@code{outline-show-branches}).
1115 @item C-c C-i
1116 Make immediate subheadings (one level down) of the current heading
1117 line visible (@code{outline-show-children}).
1118 @item C-c C-t
1119 Make all body lines in the buffer invisible
1120 (@code{outline-hide-body}).
1121 @item C-c C-a
1122 Make all lines in the buffer visible (@code{outline-show-all}).
1123 @item C-c C-q
1124 Hide everything except the top @var{n} levels of heading lines
1125 (@code{outline-hide-sublevels}).
1126 @item C-c C-o
1127 Hide everything except for the heading or body that point is in, plus
1128 the headings leading up from there to the top level of the outline
1129 (@code{outline-hide-other}).
1130 @end table
1132 @findex outline-hide-entry
1133 @findex outline-show-entry
1134 @kindex C-c C-c @r{(Outline mode)}
1135 @kindex C-c C-e @r{(Outline mode)}
1136   The simplest of these commands are @kbd{C-c C-c}
1137 (@code{outline-hide-entry}), which hides the body lines directly
1138 following the current heading line, and @kbd{C-c C-e}
1139 (@code{outline-show-entry}), which reveals them.  Subheadings and
1140 their bodies are not affected.
1142 @findex outline-hide-subtree
1143 @findex outline-show-subtree
1144 @kindex C-c C-s @r{(Outline mode)}
1145 @kindex C-c C-d @r{(Outline mode)}
1146 @cindex subtree (Outline mode)
1147   The commands @kbd{C-c C-d} (@code{outline-hide-subtree}) and
1148 @kbd{C-c C-s} (@code{outline-show-subtree}) are more powerful.  They
1149 apply to the current heading line's @dfn{subtree}: its body, all of
1150 its subheadings, both direct and indirect, and all of their bodies.
1152 @findex outline-hide-leaves
1153 @findex outline-show-branches
1154 @findex outline-show-children
1155 @kindex C-c C-l @r{(Outline mode)}
1156 @kindex C-c C-k @r{(Outline mode)}
1157 @kindex C-c C-i @r{(Outline mode)}
1158   The command @kbd{C-c C-l} (@code{outline-hide-leaves}) hides the
1159 body of the current heading line as well as all the bodies in its
1160 subtree; the subheadings themselves are left visible.  The command
1161 @kbd{C-c C-k} (@code{outline-show-branches}) reveals the subheadings,
1162 if they had previously been hidden (e.g., by @kbd{C-c C-d}).  The
1163 command @kbd{C-c C-i} (@code{outline-show-children}) is a weaker
1164 version of this; it reveals just the direct subheadings, i.e., those
1165 one level down.
1167 @findex outline-hide-other
1168 @kindex C-c C-o @r{(Outline mode)}
1169   The command @kbd{C-c C-o} (@code{outline-hide-other}) hides
1170 everything except the entry that point is in, plus its parents (the
1171 headers leading up from there to top level in the outline) and the top
1172 level headings.  It also reveals body lines preceding the first
1173 heading in the buffer.
1175 @findex outline-hide-body
1176 @findex outline-show-all
1177 @kindex C-c C-t @r{(Outline mode)}
1178 @kindex C-c C-a @r{(Outline mode)}
1179 @findex hide-sublevels
1180 @kindex C-c C-q @r{(Outline mode)}
1181   The remaining commands affect the whole buffer.  @kbd{C-c C-t}
1182 (@code{outline-hide-body}) makes all body lines invisible, so that you
1183 see just the outline structure (as a special exception, it will not
1184 hide lines at the top of the file, preceding the first header line,
1185 even though these are technically body lines).  @kbd{C-c C-a}
1186 (@code{outline-show-all}) makes all lines visible.  @kbd{C-c C-q}
1187 (@code{outline-hide-sublevels}) hides all but the top level headings
1188 at and above the level of the current heading line (defaulting to 1 if
1189 point is not on a heading); with a numeric argument @var{n}, it hides
1190 everything except the top @var{n} levels of heading lines.  Note that
1191 it completely reveals all the @var{n} top levels and the body lines
1192 before the first heading.
1194 @anchor{Outline Search}
1195 @findex reveal-mode
1196 @vindex search-invisible
1197   When incremental search finds text that is hidden by Outline mode,
1198 it makes that part of the buffer visible.  If you exit the search at
1199 that position, the text remains visible.  To toggle whether or not
1200 an active incremental search can match hidden text, type @kbd{M-s i}.
1201 To change the default for future searches, customize the option
1202 @code{search-invisible}.  (This option also affects how @code{query-replace}
1203 and related functions treat hidden text, @pxref{Query Replace}.)
1204 You can also automatically make text visible as you navigate in it by
1205 using Reveal mode (@kbd{M-x reveal-mode}), a buffer-local minor mode.
1207 @node Outline Views
1208 @subsection Viewing One Outline in Multiple Views
1210 @cindex multiple views of outline
1211 @cindex views of an outline
1212 @cindex outline with multiple views
1213 @cindex indirect buffers and outlines
1214   You can display two views of a single outline at the same time, in
1215 different windows.  To do this, you must create an indirect buffer using
1216 @kbd{M-x make-indirect-buffer}.  The first argument of this command is
1217 the existing outline buffer name, and its second argument is the name to
1218 use for the new indirect buffer.  @xref{Indirect Buffers}.
1220   Once the indirect buffer exists, you can display it in a window in the
1221 normal fashion, with @kbd{C-x 4 b} or other Emacs commands.  The Outline
1222 mode commands to show and hide parts of the text operate on each buffer
1223 independently; as a result, each buffer can have its own view.  If you
1224 want more than two views on the same outline, create additional indirect
1225 buffers.
1227 @node Foldout
1228 @subsection Folding Editing
1230 @cindex folding editing
1231   The Foldout package extends Outline mode and Outline minor mode with
1232 folding commands.  The idea of folding is that you zoom in on a
1233 nested portion of the outline, while hiding its relatives at higher
1234 levels.
1236   Consider an Outline mode buffer with all the text and subheadings under
1237 level-1 headings hidden.  To look at what is hidden under one of these
1238 headings, you could use @kbd{C-c C-e} (@kbd{M-x outline-show-entry})
1239 to expose the body, or @kbd{C-c C-i} to expose the child (level-2)
1240 headings.
1242 @kindex C-c C-z
1243 @findex foldout-zoom-subtree
1244   With Foldout, you use @kbd{C-c C-z} (@kbd{M-x foldout-zoom-subtree}).
1245 This exposes the body and child subheadings, and narrows the buffer so
1246 that only the @w{level-1} heading, the body and the level-2 headings are
1247 visible.  Now to look under one of the level-2 headings, position the
1248 cursor on it and use @kbd{C-c C-z} again.  This exposes the level-2 body
1249 and its level-3 child subheadings and narrows the buffer again.  Zooming
1250 in on successive subheadings can be done as much as you like.  A string
1251 in the mode line shows how deep you've gone.
1253   When zooming in on a heading, to see only the child subheadings specify
1254 a numeric argument: @kbd{C-u C-c C-z}.  The number of levels of children
1255 can be specified too (compare @kbd{M-x outline-show-children}), e.g.,
1256 @w{@kbd{M-2 C-c C-z}} exposes two levels of child subheadings.
1257 Alternatively, the body can be specified with a negative argument:
1258 @w{@kbd{M-- C-c C-z}}.  The whole subtree can be expanded, similarly to
1259 @kbd{C-c C-s} (@kbd{M-x outline-show-subtree}), by specifying a zero
1260 argument: @w{@kbd{M-0 C-c C-z}}.
1262   While you're zoomed in, you can still use Outline mode's exposure and
1263 hiding functions without disturbing Foldout.  Also, since the buffer is
1264 narrowed, global editing actions will only affect text under the
1265 zoomed-in heading.  This is useful for restricting changes to a
1266 particular chapter or section of your document.
1268 @kindex C-c C-x
1269 @findex foldout-exit-fold
1270   To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}).
1271 This hides all the text and subheadings under the top-level heading and
1272 returns you to the previous view of the buffer.  Specifying a numeric
1273 argument exits that many levels of folds.  Specifying a zero argument
1274 exits all folds.
1276   To cancel the narrowing of a fold without hiding the text and
1277 subheadings, specify a negative argument.  For example, @w{@kbd{M--2 C-c
1278 C-x}} exits two folds and leaves the text and subheadings exposed.
1280   Foldout mode also provides mouse commands for entering and exiting
1281 folds, and for showing and hiding text:
1283 @table @asis
1284 @item @kbd{C-M-mouse-1} zooms in on the heading clicked on
1285 @itemize @w{}
1286 @item
1287 single click: expose body.
1288 @item
1289 double click: expose subheadings.
1290 @item
1291 triple click: expose body and subheadings.
1292 @item
1293 quad click: expose entire subtree.
1294 @end itemize
1295 @item @kbd{C-M-mouse-2} exposes text under the heading clicked on
1296 @itemize @w{}
1297 @item
1298 single click: expose body.
1299 @item
1300 double click: expose subheadings.
1301 @item
1302 triple click: expose body and subheadings.
1303 @item
1304 quad click: expose entire subtree.
1305 @end itemize
1306 @item @kbd{C-M-mouse-3} hides text under the heading clicked on or exits fold
1307 @itemize @w{}
1308 @item
1309 single click: hide subtree.
1310 @item
1311 double click: exit fold and hide text.
1312 @item
1313 triple click: exit fold without hiding text.
1314 @item
1315 quad click: exit all folds and hide text.
1316 @end itemize
1317 @end table
1319 @c FIXME not marked as a user variable
1320 @vindex foldout-mouse-modifiers
1321   You can specify different modifier keys (instead of
1322 @kbd{@key{Ctrl}-@key{META}-}) by setting @code{foldout-mouse-modifiers}; but if
1323 you have already loaded the @file{foldout.el} library, you must reload
1324 it in order for this to take effect.
1326   To use the Foldout package, you can type @kbd{M-x load-library
1327 @key{RET} foldout @key{RET}}; or you can arrange for to do that
1328 automatically by putting the following in your init file:
1330 @example
1331 (with-eval-after-load "outline"
1332   (require 'foldout))
1333 @end example
1335 @node Org Mode
1336 @section Org Mode
1337 @cindex organizer
1338 @cindex planner
1339 @findex Org mode
1340 @findex mode, Org
1342 @findex org-mode
1343   Org mode is a variant of Outline mode for using Emacs as an
1344 organizer and/or authoring system.  Files with names ending in the
1345 extension @file{.org} are opened in Org mode (@pxref{Choosing Modes}).
1346 To explicitly switch to Org mode, type @kbd{M-x org-mode}.
1348   In Org mode, as in Outline mode, each entry has a heading line that
1349 starts with one or more @samp{*} characters.  @xref{Outline Format}.
1350 In addition, any line that begins with the @samp{#} character is
1351 treated as a comment.
1353 @kindex TAB @r{(Org Mode)}
1354 @findex org-cycle
1355   Org mode provides commands for easily viewing and manipulating the
1356 outline structure.  The simplest of these commands is @key{TAB}
1357 (@code{org-cycle}).  If invoked on a heading line, it cycles through
1358 the different visibility states of the subtree: (i) showing only that
1359 heading line, (ii) showing only the heading line and the heading lines
1360 of its direct children, if any, and (iii) showing the entire subtree.
1361 If invoked in a body line, the global binding for @key{TAB} is
1362 executed.
1364 @kindex S-TAB @r{(Org Mode)}
1365 @findex org-shifttab
1366   Typing @kbd{S-@key{TAB}} (@code{org-shifttab}) anywhere in an Org mode
1367 buffer cycles the visibility of the entire outline structure, between
1368 (i) showing only top-level heading lines, (ii) showing all heading
1369 lines but no body lines, and (iii) showing everything.
1371 @kindex M-<up> @r{(Org Mode)}
1372 @kindex M-<down> @r{(Org Mode)}
1373 @kindex M-<left> @r{(Org Mode)}
1374 @kindex M-<right> @r{(Org Mode)}
1375 @findex org-metaup
1376 @findex org-metadown
1377 @findex org-metaleft
1378 @findex org-metaright
1379   You can move an entire entry up or down in the buffer, including its
1380 body lines and subtree (if any), by typing @kbd{M-<up>}
1381 (@code{org-metaup}) or @kbd{M-<down>} (@code{org-metadown}) on the
1382 heading line.  Similarly, you can promote or demote a heading line
1383 with @kbd{M-<left>} (@code{org-metaleft}) and @kbd{M-<right>}
1384 (@code{org-metaright}).  These commands execute their global bindings
1385 if invoked on a body line.
1387   The following subsections give basic instructions for using Org mode
1388 as an organizer and as an authoring system.  For details, @pxref{Top,
1389 The Org Mode Manual, Introduction, org, The Org Manual}.
1391 @menu
1392 * Org Organizer::   Managing TODO lists and agendas.
1393 * Org Authoring::   Exporting Org buffers to various formats.
1394 @end menu
1396 @node Org Organizer
1397 @subsection Org as an organizer
1398 @cindex TODO item
1399 @cindex Org agenda
1401 @kindex C-c C-t @r{(Org Mode)}
1402 @findex org-todo
1403 @vindex org-todo-keywords
1404   You can tag an Org entry as a @dfn{TODO} item by typing @kbd{C-c
1405 C-t} (@code{org-todo}) anywhere in the entry.  This adds the keyword
1406 @samp{TODO} to the heading line.  Typing @kbd{C-c C-t} again switches
1407 the keyword to @samp{DONE}; another @kbd{C-c C-t} removes the keyword
1408 entirely, and so forth.  You can customize the keywords used by
1409 @kbd{C-c C-t} via the variable @code{org-todo-keywords}.
1411 @kindex C-c C-s @r{(Org Mode)}
1412 @kindex C-c C-d @r{(Org Mode)}
1413 @findex org-schedule
1414 @findex org-deadline
1415   Apart from marking an entry as TODO, you can attach a date to it, by
1416 typing @kbd{C-c C-s} (@code{org-schedule}) in the entry.  This prompts
1417 for a date by popping up the Emacs Calendar (@pxref{Calendar/Diary}),
1418 and then adds the tag @samp{SCHEDULED}, together with the selected
1419 date, beneath the heading line.  The command @kbd{C-c C-d}
1420 (@code{org-deadline}) has the same effect, except that it uses the tag
1421 @code{DEADLINE}.
1423 @kindex C-c [ @r{(Org Mode)}
1424 @findex org-agenda-file-to-front
1425 @vindex org-agenda-files
1426   Once you have some TODO items planned in an Org file, you can add
1427 that file to the list of @dfn{agenda files} by typing @kbd{C-c [}
1428 (@code{org-agenda-file-to-front}).  Org mode is designed to let you
1429 easily maintain multiple agenda files, e.g., for organizing different
1430 aspects of your life.  The list of agenda files is stored in the
1431 variable @code{org-agenda-files}.
1433 @findex org-agenda
1434   To view items coming from your agenda files, type @kbd{M-x
1435 org-agenda}.  This command prompts for what you want to see: a list of
1436 things to do this week, a list of TODO items with specific keywords,
1437 etc.
1438 @ifnottex
1439 @xref{Agenda views,,,org, The Org Manual}, for details.
1440 @end ifnottex
1442 @node Org Authoring
1443 @subsection Org as an authoring system
1444 @cindex Org exporting
1446 @findex org-export
1447 @kindex C-c C-e @r{(Org mode)}
1448   You may want to format your Org notes nicely and to prepare them for
1449 export and publication.  To export the current buffer, type @kbd{C-c
1450 C-e} (@code{org-export}) anywhere in an Org buffer.  This command
1451 prompts for an export format; currently supported formats include
1452 HTML, @LaTeX{}, OpenDocument (@file{.odt}), and PDF@.  Some formats,
1453 such as PDF, require certain system tools to be installed.
1455 @vindex org-publish-project-alist
1456   To export several files at once to a specific directory, either
1457 locally or over the network, you must define a list of projects
1458 through the variable @code{org-publish-project-alist}.  See its
1459 documentation for details.
1461   Org supports a simple markup scheme for applying text formatting to
1462 exported documents:
1464 @example
1465 - This text is /emphasized/
1466 - This text is *in bold*
1467 - This text is _underlined_
1468 - This text uses =a teletype font=
1470 #+begin_quote
1471 ``This is a quote.''
1472 #+end_quote
1474 #+begin_example
1475 This is an example.
1476 #+end_example
1477 @end example
1479   For further details, @ref{Exporting,,,org, The Org Manual}, and
1480 @ref{Publishing,,,org, The Org Manual}.
1482 @node TeX Mode
1483 @section @TeX{} Mode
1484 @cindex @TeX{} mode
1485 @cindex @LaTeX{} mode
1486 @cindex Sli@TeX{} mode
1487 @cindex Doc@TeX{} mode
1488 @cindex mode, @TeX{}
1489 @cindex mode, @LaTeX{}
1490 @cindex mode, Sli@TeX{}
1491 @cindex mode, Doc@TeX{}
1492 @findex tex-mode
1493 @findex plain-tex-mode
1494 @findex latex-mode
1495 @findex slitex-mode
1496 @findex doctex-mode
1497 @findex bibtex-mode
1499   Emacs provides special major modes for editing files written in
1500 @TeX{} and its related formats.  @TeX{} is a powerful text formatter
1501 written by Donald Knuth; like GNU Emacs, it is free software.
1502 @LaTeX{} is a simplified input format for @TeX{}, implemented using
1503 @TeX{} macros.  Doc@TeX{} is a special file format in which the
1504 @LaTeX{} sources are written, combining sources with documentation.
1505 Sli@TeX{} is an obsolete special form of @LaTeX{}.@footnote{It has
1506 been replaced by the @samp{slides} document class, which comes with
1507 @LaTeX{}.}
1509 @vindex tex-default-mode
1510   @TeX{} mode has four variants: Plain @TeX{} mode, @LaTeX{} mode,
1511 Doc@TeX{} mode, and Sli@TeX{} mode.  These distinct major modes differ
1512 only slightly, and are designed for editing the four different
1513 formats.  Emacs selects the appropriate mode by looking at the
1514 contents of the buffer.  (This is done by the @code{tex-mode} command,
1515 which is normally called automatically when you visit a @TeX{}-like
1516 file.  @xref{Choosing Modes}.)  If the contents are insufficient to
1517 determine this, Emacs chooses the mode specified by the variable
1518 @code{tex-default-mode}; its default value is @code{latex-mode}.  If
1519 Emacs does not guess right, you can select the correct variant of
1520 @TeX{} mode using the command @kbd{M-x plain-tex-mode}, @kbd{M-x
1521 latex-mode}, @kbd{M-x slitex-mode}, or @kbd{doctex-mode}.
1523   The following sections document the features of @TeX{} mode and its
1524 variants.  There are several other @TeX{}-related Emacs packages,
1525 which are not documented in this manual:
1527 @itemize @bullet
1528 @item
1529 Bib@TeX{} mode is a major mode for Bib@TeX{} files, which are commonly
1530 used for keeping bibliographic references for @LaTeX{} documents.  For
1531 more information, see the documentation string for the command
1532 @code{bibtex-mode}.
1534 @item
1535 The Ref@TeX{} package provides a minor mode which can be used with
1536 @LaTeX{} mode to manage bibliographic references.
1537 @ifinfo
1538 @xref{Top,The Ref@TeX{} Manual,,reftex}.
1539 @end ifinfo
1540 @ifnotinfo
1541 For more information, see the Ref@TeX{} Info manual, which is
1542 distributed with Emacs.
1543 @end ifnotinfo
1545 @item
1546 The AUC@TeX{} package provides more advanced features for editing
1547 @TeX{} and its related formats, including the ability to preview
1548 @TeX{} equations within Emacs buffers.  Unlike Bib@TeX{} mode and the
1549 Ref@TeX{} package, AUC@TeX{} is not distributed with Emacs by default.
1550 It can be downloaded via the Package Menu (@pxref{Packages}); once
1551 installed, see
1552 @ifinfo
1553 @ref{Top,The AUC@TeX{} Manual,,auctex}.
1554 @end ifinfo
1555 @ifnotinfo
1556 the AUC@TeX{} manual, which is included with the package.
1557 @end ifnotinfo
1558 @end itemize
1560 @menu
1561 * TeX Editing::   Special commands for editing in TeX mode.
1562 * LaTeX Editing:: Additional commands for LaTeX input files.
1563 * TeX Print::     Commands for printing part of a file with TeX.
1564 * TeX Misc::      Customization of TeX mode, and related features.
1565 @end menu
1567 @node TeX Editing
1568 @subsection @TeX{} Editing Commands
1570 @table @kbd
1571 @item "
1572 Insert, according to context, either @samp{``} or @samp{"} or
1573 @samp{''} (@code{tex-insert-quote}).
1574 @item C-j
1575 Insert a paragraph break (two newlines) and check the previous
1576 paragraph for unbalanced braces or dollar signs
1577 (@code{tex-terminate-paragraph}).
1578 @item M-x tex-validate-region
1579 Check each paragraph in the region for unbalanced braces or dollar signs.
1580 @item C-c @{
1581 Insert @samp{@{@}} and position point between them (@code{tex-insert-braces}).
1582 @item C-c @}
1583 Move forward past the next unmatched close brace (@code{up-list}).
1584 @end table
1586 @findex tex-insert-quote
1587 @kindex " @r{(@TeX{} mode)}
1588   In @TeX{}, the character @samp{"} is not normally used; instead,
1589 quotations begin with @samp{``} and end with @samp{''}.  @TeX{} mode
1590 therefore binds the @kbd{"} key to the @code{tex-insert-quote}
1591 command.  This inserts @samp{``} after whitespace or an open brace,
1592 @samp{"} after a backslash, and @samp{''} after any other character.
1594   As a special exception, if you type @kbd{"} when the text before
1595 point is either @samp{``} or @samp{''}, Emacs replaces that preceding
1596 text with a single @samp{"} character.  You can therefore type
1597 @kbd{""} to insert @samp{"}, should you ever need to do so.  (You can
1598 also use @kbd{C-q "} to insert this character.)
1600   In @TeX{} mode, @samp{$} has a special syntax code which attempts to
1601 understand the way @TeX{} math mode delimiters match.  When you insert a
1602 @samp{$} that is meant to exit math mode, the position of the matching
1603 @samp{$} that entered math mode is displayed for a second.  This is the
1604 same feature that displays the open brace that matches a close brace that
1605 is inserted.  However, there is no way to tell whether a @samp{$} enters
1606 math mode or leaves it; so when you insert a @samp{$} that enters math
1607 mode, the previous @samp{$} position is shown as if it were a match, even
1608 though they are actually unrelated.
1610 @findex tex-insert-braces
1611 @kindex C-c @{ @r{(@TeX{} mode)}
1612 @findex up-list
1613 @kindex C-c @} @r{(@TeX{} mode)}
1614   @TeX{} uses braces as delimiters that must match.  Some users prefer
1615 to keep braces balanced at all times, rather than inserting them
1616 singly.  Use @kbd{C-c @{} (@code{tex-insert-braces}) to insert a pair of
1617 braces.  It leaves point between the two braces so you can insert the
1618 text that belongs inside.  Afterward, use the command @kbd{C-c @}}
1619 (@code{up-list}) to move forward past the close brace.
1621 @findex tex-validate-region
1622 @findex tex-terminate-paragraph
1623 @kindex C-j @r{(@TeX{} mode)}
1624   There are two commands for checking the matching of braces.
1625 @kbd{C-j} (@code{tex-terminate-paragraph}) checks the paragraph before
1626 point, and inserts two newlines to start a new paragraph.  It outputs
1627 a message in the echo area if any mismatch is found.  @kbd{M-x
1628 tex-validate-region} checks a region, paragraph by paragraph.  The
1629 errors are listed in an @file{*Occur*} buffer; you can use the usual
1630 Occur mode commands in that buffer, such as @kbd{C-c C-c}, to visit a
1631 particular mismatch (@pxref{Other Repeating Search}).
1633   Note that Emacs commands count square brackets and parentheses in
1634 @TeX{} mode, not just braces.  This is not strictly correct for the
1635 purpose of checking @TeX{} syntax.  However, parentheses and square
1636 brackets are likely to be used in text as matching delimiters, and it
1637 is useful for the various motion commands and automatic match display
1638 to work with them.
1640 @node LaTeX Editing
1641 @subsection @LaTeX{} Editing Commands
1643   @LaTeX{} mode provides a few extra features not applicable to plain
1644 @TeX{}:
1646 @table @kbd
1647 @item C-c C-o
1648 Insert @samp{\begin} and @samp{\end} for @LaTeX{} block and position
1649 point on a line between them (@code{tex-latex-block}).
1650 @item C-c C-e
1651 Close the innermost @LaTeX{} block not yet closed
1652 (@code{tex-close-latex-block}).
1653 @end table
1655 @findex tex-latex-block
1656 @kindex C-c C-o @r{(@LaTeX{} mode)}
1657   In @LaTeX{} input, @samp{\begin} and @samp{\end} tags are used to
1658 group blocks of text.  To insert a block, type @kbd{C-c C-o}
1659 (@code{tex-latex-block}).  This prompts for a block type, and inserts
1660 the appropriate matching @samp{\begin} and @samp{\end} tags, leaving a
1661 blank line between the two and moving point there.
1663 @vindex latex-block-names
1664   When entering the block type argument to @kbd{C-c C-o}, you can use
1665 the usual completion commands (@pxref{Completion}).  The default
1666 completion list contains the standard @LaTeX{} block types.  If you
1667 want additional block types for completion, customize the list
1668 variable @code{latex-block-names}.
1670 @findex tex-close-latex-block
1671 @kindex C-c C-e @r{(@LaTeX{} mode)}
1672 @findex latex-electric-env-pair-mode
1673   In @LaTeX{} input, @samp{\begin} and @samp{\end} tags must balance.
1674 You can use @kbd{C-c C-e} (@code{tex-close-latex-block}) to insert an
1675 @samp{\end} tag which matches the last unmatched @samp{\begin}.  It
1676 also indents the @samp{\end} to match the corresponding @samp{\begin},
1677 and inserts a newline after the @samp{\end} tag if point is at the
1678 beginning of a line.  The minor mode @code{latex-electric-env-pair-mode}
1679 automatically inserts an @samp{\end} or @samp{\begin} tag for you
1680 when you type the corresponding one.
1682 @node TeX Print
1683 @subsection @TeX{} Printing Commands
1685   You can invoke @TeX{} as an subprocess of Emacs, supplying either
1686 the entire contents of the buffer or just part of it (e.g., one
1687 chapter of a larger document).
1689 @table @kbd
1690 @item C-c C-b
1691 Invoke @TeX{} on the entire current buffer (@code{tex-buffer}).
1692 @item C-c C-r
1693 Invoke @TeX{} on the current region, together with the buffer's header
1694 (@code{tex-region}).
1695 @item C-c C-f
1696 Invoke @TeX{} on the current file (@code{tex-file}).
1698 @item C-c C-v
1699 Preview the output from the last @kbd{C-c C-r}, @kbd{C-c C-b}, or @kbd{C-c
1700 C-f} command (@code{tex-view}).
1702 @item C-c C-p
1703 Print the output from the last @kbd{C-c C-b}, @kbd{C-c C-r}, or
1704 @kbd{C-c C-f} command (@code{tex-print}).
1706 @item C-c @key{TAB}
1707 Invoke Bib@TeX{} on the current file (@code{tex-bibtex-file}).
1708 @item C-c C-l
1709 Recenter the window showing output from @TeX{} so that the last line
1710 can be seen (@code{tex-recenter-output-buffer}).
1711 @item C-c C-k
1712 Kill the @TeX{} subprocess (@code{tex-kill-job}).
1713 @item C-c C-c
1714 Invoke some other compilation command on the entire current buffer
1715 (@code{tex-compile}).
1716 @end table
1718 @findex tex-buffer
1719 @kindex C-c C-b @r{(@TeX{} mode)}
1720 @findex tex-view
1721 @kindex C-c C-v @r{(@TeX{} mode)}
1722 @findex tex-print
1723 @kindex C-c C-p @r{(@TeX{} mode)}
1724   To pass the current buffer through @TeX{}, type @kbd{C-c C-b}
1725 (@code{tex-buffer}).  The formatted output goes in a temporary file,
1726 normally a @file{.dvi} file.  Afterwards, you can type @kbd{C-c C-v}
1727 (@code{tex-view}) to launch an external program, such as
1728 @command{xdvi}, to view this output file.  You can also type @kbd{C-c
1729 C-p} (@code{tex-print}) to print a hardcopy of the output file.
1731 @cindex @env{TEXINPUTS} environment variable
1732 @vindex tex-directory
1733   By default, @kbd{C-c C-b} runs @TeX{} in the current directory.  The
1734 output of @TeX{} also goes in this directory.  To run @TeX{} in a
1735 different directory, change the variable @code{tex-directory} to
1736 the desired directory.  If your environment variable @env{TEXINPUTS}
1737 contains relative names, or if your files contains
1738 @samp{\input} commands with relative file names, then
1739 @code{tex-directory} @emph{must} be @code{"."} or you will get the
1740 wrong results.  Otherwise, it is safe to specify some other directory,
1741 such as @code{"/tmp"}.
1743 @vindex tex-run-command
1744 @vindex latex-run-command
1745 @vindex tex-dvi-view-command
1746 @vindex tex-dvi-print-command
1747 @vindex tex-print-file-extension
1748   The buffer's @TeX{} variant determines what shell command @kbd{C-c
1749 C-b} actually runs.  In Plain @TeX{} mode, it is specified by the
1750 variable @code{tex-run-command}, which defaults to @code{"tex"}.  In
1751 @LaTeX{} mode, it is specified by @code{latex-run-command}, which
1752 defaults to @code{"latex"}.  The shell command that @kbd{C-c C-v} runs
1753 to view the @file{.dvi} output is determined by the variable
1754 @code{tex-dvi-view-command}, regardless of the @TeX{} variant.  The
1755 shell command that @kbd{C-c C-p} runs to print the output is
1756 determined by the variable @code{tex-dvi-print-command}.  The variable
1757 @code{tex-print-file-extension} can be set to the required file
1758 extension for viewing and printing @TeX{}-compiled files.  For
1759 example, you can set it to @file{.pdf}, and update
1760 @code{tex-dvi-view-command} and @code{tex-dvi-print-command}
1761 accordingly.
1763   Normally, Emacs automatically appends the output file name to the
1764 shell command strings described in the preceding paragraph.  For
1765 example, if @code{tex-dvi-view-command} is @code{"xdvi"}, @kbd{C-c
1766 C-v} runs @command{xdvi @var{output-file-name}}.  In some cases,
1767 however, the file name needs to be embedded in the command, e.g., if
1768 you need to provide the file name as an argument to one command whose
1769 output is piped to another.  You can specify where to put the file
1770 name with @samp{*} in the command string.  For example,
1772 @example
1773 (setq tex-dvi-print-command "dvips -f * | lpr")
1774 @end example
1776 @findex tex-kill-job
1777 @kindex C-c C-k @r{(@TeX{} mode)}
1778 @findex tex-recenter-output-buffer
1779 @kindex C-c C-l @r{(@TeX{} mode)}
1780   The terminal output from @TeX{}, including any error messages,
1781 appears in a buffer called @file{*tex-shell*}.  If @TeX{} gets an
1782 error, you can switch to this buffer and feed it input (this works as
1783 in Shell mode; @pxref{Interactive Shell}).  Without switching to this
1784 buffer you can scroll it so that its last line is visible by typing
1785 @kbd{C-c C-l}.
1787   Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if
1788 you see that its output is no longer useful.  Using @kbd{C-c C-b} or
1789 @kbd{C-c C-r} also kills any @TeX{} process still running.
1791 @findex tex-region
1792 @kindex C-c C-r @r{(@TeX{} mode)}
1793   You can also pass an arbitrary region through @TeX{} by typing
1794 @kbd{C-c C-r} (@code{tex-region}).  This is tricky, however, because
1795 most files of @TeX{} input contain commands at the beginning to set
1796 parameters and define macros, without which no later part of the file
1797 will format correctly.  To solve this problem, @kbd{C-c C-r} allows
1798 you to designate a part of the file as containing essential commands;
1799 it is included before the specified region as part of the input to
1800 @TeX{}.  The designated part of the file is called the @dfn{header}.
1802 @cindex header (@TeX{} mode)
1803   To indicate the bounds of the header in Plain @TeX{} mode, you insert two
1804 special strings in the file.  Insert @samp{%**start of header} before the
1805 header, and @samp{%**end of header} after it.  Each string must appear
1806 entirely on one line, but there may be other text on the line before or
1807 after.  The lines containing the two strings are included in the header.
1808 If @samp{%**start of header} does not appear within the first 100 lines of
1809 the buffer, @kbd{C-c C-r} assumes that there is no header.
1811   In @LaTeX{} mode, the header begins with @samp{\documentclass} or
1812 @samp{\documentstyle} and ends with @samp{\begin@{document@}}.  These
1813 are commands that @LaTeX{} requires you to use in any case, so nothing
1814 special needs to be done to identify the header.
1816 @findex tex-file
1817 @kindex C-c C-f @r{(@TeX{} mode)}
1818   The commands (@code{tex-buffer}) and (@code{tex-region}) do all of their
1819 work in a temporary directory, and do not have available any of the auxiliary
1820 files needed by @TeX{} for cross-references; these commands are generally
1821 not suitable for running the final copy in which all of the cross-references
1822 need to be correct.
1824   When you want the auxiliary files for cross references, use @kbd{C-c
1825 C-f} (@code{tex-file}) which runs @TeX{} on the current buffer's file,
1826 in that file's directory.  Before running @TeX{}, it offers to save any
1827 modified buffers.  Generally, you need to use (@code{tex-file}) twice to
1828 get the cross-references right.
1830 @vindex tex-start-options
1831   The value of the variable @code{tex-start-options} specifies
1832 options for the @TeX{} run.
1834 @vindex tex-start-commands
1835   The value of the variable @code{tex-start-commands} specifies @TeX{}
1836 commands for starting @TeX{}.  The default value causes @TeX{} to run
1837 in nonstop mode.  To run @TeX{} interactively, set the variable to
1838 @code{""}.
1840 @vindex tex-main-file
1841   Large @TeX{} documents are often split into several files---one main
1842 file, plus subfiles.  Running @TeX{} on a subfile typically does not
1843 work; you have to run it on the main file.  In order to make
1844 @code{tex-file} useful when you are editing a subfile, you can set the
1845 variable @code{tex-main-file} to the name of the main file.  Then
1846 @code{tex-file} runs @TeX{} on that file.
1848   The most convenient way to use @code{tex-main-file} is to specify it
1849 in a local variable list in each of the subfiles.  @xref{File
1850 Variables}.
1852 @findex tex-bibtex-file
1853 @kindex C-c TAB @r{(@TeX{} mode)}
1854 @vindex tex-bibtex-command
1855   For @LaTeX{} files, you can use Bib@TeX{} to process the auxiliary
1856 file for the current buffer's file.  Bib@TeX{} looks up bibliographic
1857 citations in a data base and prepares the cited references for the
1858 bibliography section.  The command @kbd{C-c @key{TAB}}
1859 (@code{tex-bibtex-file}) runs the shell command
1860 (@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the
1861 current buffer's file.  Generally, you need to do @kbd{C-c C-f}
1862 (@code{tex-file}) once to generate the @samp{.aux} file, then do
1863 @kbd{C-c @key{TAB}} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
1864 (@code{tex-file}) twice more to get the cross-references correct.
1866 @findex tex-compile
1867 @kindex C-c C-c @r{(@TeX{} mode)}
1868   To invoke some other compilation program on the current @TeX{}
1869 buffer, type @kbd{C-c C-c} (@code{tex-compile}).  This command knows
1870 how to pass arguments to many common programs, including
1871 @file{pdflatex}, @file{yap}, @file{xdvi}, and @file{dvips}.  You can
1872 select your desired compilation program using the standard completion
1873 keys (@pxref{Completion}).
1875 @node TeX Misc
1876 @subsection @TeX{} Mode Miscellany
1878 @vindex tex-shell-hook
1879 @vindex tex-mode-hook
1880 @vindex latex-mode-hook
1881 @vindex slitex-mode-hook
1882 @vindex plain-tex-mode-hook
1883   Entering any variant of @TeX{} mode runs the hooks
1884 @code{text-mode-hook} and @code{tex-mode-hook}.  Then it runs either
1885 @code{plain-tex-mode-hook}, @code{latex-mode-hook}, or
1886 @code{slitex-mode-hook}, whichever is appropriate.  Starting the
1887 @TeX{} shell runs the hook @code{tex-shell-hook}.  @xref{Hooks}.
1889 @findex iso-iso2tex
1890 @findex iso-tex2iso
1891 @findex iso-iso2gtex
1892 @findex iso-gtex2iso
1893 @cindex Latin-1 @TeX{} encoding
1894 @cindex @TeX{} encoding
1895   The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
1896 iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert
1897 between Latin-1 encoded files and @TeX{}-encoded equivalents.
1899 @node HTML Mode
1900 @section SGML and HTML Modes
1901 @cindex SGML mode
1902 @cindex HTML mode
1903 @cindex mode, SGML
1904 @cindex mode, HTML
1905 @findex sgml-mode
1906 @findex html-mode
1908   The major modes for SGML and HTML provide indentation support and
1909 commands for operating on tags.
1911   HTML consists of two modes---one, a basic mode called
1912 @code{html-mode} is a slightly customized variant of SGML mode.  The
1913 other, which is used by default for HTML files, is called
1914 @code{mhtml-mode}, and attempts to properly handle Javascript enclosed
1915 in a @code{<script>} element and CSS embedded in a @code{<style>}
1916 element.
1918 @table @kbd
1919 @item C-c C-n
1920 @kindex C-c C-n @r{(SGML mode)}
1921 @findex sgml-name-char
1922 Interactively specify a special character and insert the SGML
1923 @samp{&}-command for that character (@code{sgml-name-char}).
1925 @item C-c C-t
1926 @kindex C-c C-t @r{(SGML mode)}
1927 @findex sgml-tag
1928 Interactively specify a tag and its attributes (@code{sgml-tag}).
1929 This command asks you for a tag name and for the attribute values,
1930 then inserts both the opening tag and the closing tag, leaving point
1931 between them.
1933 With a prefix argument @var{n}, the command puts the tag around the
1934 @var{n} words already present in the buffer after point.  Whenever a
1935 region is active, it puts the tag around the region (when Transient
1936 Mark mode is off, it does this when a numeric argument of @minus{}1 is
1937 supplied.)
1939 @item C-c C-a
1940 @kindex C-c C-a @r{(SGML mode)}
1941 @findex sgml-attributes
1942 Interactively insert attribute values for the current tag
1943 (@code{sgml-attributes}).
1945 @item C-c C-f
1946 @kindex C-c C-f @r{(SGML mode)}
1947 @findex sgml-skip-tag-forward
1948 Skip across a balanced tag group (which extends from an opening tag
1949 through its corresponding closing tag) (@code{sgml-skip-tag-forward}).
1950 A numeric argument acts as a repeat count.
1952 @item C-c C-b
1953 @kindex C-c C-b @r{(SGML mode)}
1954 @findex sgml-skip-tag-backward
1955 Skip backward across a balanced tag group (which extends from an
1956 opening tag through its corresponding closing tag)
1957 (@code{sgml-skip-tag-backward}).  A numeric argument acts as a repeat
1958 count.
1960 @item C-c C-d
1961 @kindex C-c C-d @r{(SGML mode)}
1962 @findex sgml-delete-tag
1963 Delete the tag at or after point, and delete the matching tag too
1964 (@code{sgml-delete-tag}).  If the tag at or after point is an opening
1965 tag, delete the closing tag too; if it is a closing tag, delete the
1966 opening tag too.
1968 @item C-c ? @var{tag} @key{RET}
1969 @kindex C-c ? @r{(SGML mode)}
1970 @findex sgml-tag-help
1971 Display a description of the meaning of tag @var{tag}
1972 (@code{sgml-tag-help}).  If the argument @var{tag} is empty, describe
1973 the tag at point.
1975 @item C-c /
1976 @kindex C-c / @r{(SGML mode)}
1977 @findex sgml-close-tag
1978 Insert a close tag for the innermost unterminated tag
1979 (@code{sgml-close-tag}).  If called within a tag or a comment,
1980 close it instead of inserting a close tag.
1982 @item C-c 8
1983 @kindex C-c 8 @r{(SGML mode)}
1984 @findex sgml-name-8bit-mode
1985 Toggle a minor mode in which Latin-1 characters insert the
1986 corresponding SGML commands that stand for them, instead of the
1987 characters themselves (@code{sgml-name-8bit-mode}).
1989 @item C-c C-v
1990 @kindex C-c C-v @r{(SGML mode)}
1991 @findex sgml-validate
1992 Run a shell command (which you must specify) to validate the current
1993 buffer as SGML (@code{sgml-validate}).
1995 @item C-c @key{TAB}
1996 @kindex C-c TAB @r{(SGML mode)}
1997 @findex sgml-tags-invisible
1998 Toggle the visibility of existing tags in the buffer.  This can be
1999 used as a cheap preview (@code{sgml-tags-invisible}).
2000 @end table
2002 @cindex nXML mode
2003 @cindex mode, nXML
2004 @findex nxml-mode
2005 @cindex XML schema
2006   The major mode for editing XML documents is called nXML mode.  This
2007 is a powerful major mode that can recognize many existing XML schema
2008 and use them to provide completion of XML elements via
2009 @kbd{M-@key{TAB}}, as well as on-the-fly XML
2010 validation with error highlighting.  To enable nXML mode in an
2011 existing buffer, type @kbd{M-x nxml-mode}, or, equivalently, @kbd{M-x
2012 xml-mode}.  Emacs uses nXML mode for files which have the extension
2013 @file{.xml}.  For XHTML files, which have the extension @file{.xhtml},
2014 Emacs uses HTML mode by default; you can make it use nXML mode by
2015 customizing the variable @code{auto-mode-alist} (@pxref{Choosing
2016 Modes}).
2017 @ifinfo
2018 nXML mode is described in its own manual: @xref{Top, nXML
2019 Mode,,nxml-mode, nXML Mode}.
2020 @end ifinfo
2021 @ifnotinfo
2022 nXML mode is described in an Info manual, which is distributed with
2023 Emacs.
2024 @end ifnotinfo
2026 @vindex sgml-xml-mode
2027   You may choose to use the less powerful SGML mode for editing XML,
2028 since XML is a strict subset of SGML@.  To enable SGML mode in an
2029 existing buffer, type @kbd{M-x sgml-mode}.  On enabling SGML mode,
2030 Emacs examines the buffer to determine whether it is XML; if so, it
2031 sets the variable @code{sgml-xml-mode} to a non-@code{nil} value.
2032 This causes SGML mode's tag insertion commands, described above, to
2033 always insert explicit closing tags as well.
2035 @node Nroff Mode
2036 @section Nroff Mode
2038 @cindex nroff
2039 @findex nroff-mode
2040 @vindex nroff-mode-hook
2041   Nroff mode, a major mode derived from Text mode, is
2042 specialized for editing nroff files (e.g., Unix man pages).  Type
2043 @kbd{M-x nroff-mode} to enter this mode.  Entering Nroff mode runs the
2044 hook @code{text-mode-hook}, then @code{nroff-mode-hook}
2045 (@pxref{Hooks}).
2047   In Nroff mode, nroff command lines are treated as paragraph
2048 separators, pages are separated by @samp{.bp} commands, and comments
2049 start with backslash-doublequote.  It also defines these commands:
2051 @findex forward-text-line
2052 @findex backward-text-line
2053 @findex count-text-lines
2054 @kindex M-n @r{(Nroff mode)}
2055 @kindex M-p @r{(Nroff mode)}
2056 @kindex M-? @r{(Nroff mode)}
2057 @table @kbd
2058 @item M-n
2059 Move to the beginning of the next line that isn't an nroff command
2060 (@code{forward-text-line}).  An argument is a repeat count.
2061 @item M-p
2062 Like @kbd{M-n} but move up (@code{backward-text-line}).
2063 @item M-?
2064 Displays in the echo area the number of text lines (lines that are not
2065 nroff commands) in the region (@code{count-text-lines}).
2066 @end table
2068 @findex electric-nroff-mode
2069   Electric Nroff mode is a buffer-local minor mode that can be used
2070 with Nroff mode.  To toggle this minor mode, type @kbd{M-x
2071 electric-nroff-mode} (@pxref{Minor Modes}).  When the mode is on, each
2072 time you type @key{RET} to end a line containing an nroff command that
2073 opens a kind of grouping, the nroff command to close that grouping is
2074 automatically inserted on the following line.
2076   If you use Outline minor mode with Nroff mode (@pxref{Outline
2077 Mode}), heading lines are lines of the form @samp{.H} followed by a
2078 number (the header level).
2080 @node Enriched Text
2081 @section Enriched Text
2082 @cindex Enriched mode
2083 @cindex mode, Enriched
2084 @cindex enriched text
2085 @cindex WYSIWYG
2086 @cindex word processing
2087 @cindex text/enriched MIME format
2089   Enriched mode is a minor mode for editing formatted text files in a
2090 WYSIWYG (What You See Is What You Get) fashion.  When Enriched
2091 mode is enabled, you can apply various formatting properties to the
2092 text in the buffer, such as fonts and colors; upon saving the buffer,
2093 those properties are saved together with the text, using the MIME
2094 @samp{text/enriched} file format.
2096   Enriched mode is typically used with Text mode (@pxref{Text Mode}).
2097 It is @emph{not} compatible with Font Lock mode, which is used by many
2098 major modes, including most programming language modes, for syntax
2099 highlighting (@pxref{Font Lock}).  Unlike Enriched mode, Font Lock
2100 mode assigns text properties automatically, based on the current
2101 buffer contents; those properties are not saved to disk.
2103   The file @file{enriched.txt} in Emacs's @code{data-directory}
2104 serves as an example of the features of Enriched mode.
2106 @menu
2107 * Enriched Mode::           Entering and exiting Enriched mode.
2108 * Hard and Soft Newlines::  There are two different kinds of newlines.
2109 * Editing Format Info::     How to edit text properties.
2110 * Enriched Faces::          Bold, italic, underline, etc.
2111 * Enriched Indentation::    Changing the left and right margins.
2112 * Enriched Justification::  Centering, setting text flush with the
2113                               left or right margin, etc.
2114 * Enriched Properties::     The ``special text properties'' submenu.
2115 @end menu
2117 @node Enriched Mode
2118 @subsection Enriched Mode
2120   Enriched mode is a buffer-local minor mode (@pxref{Minor Modes}).
2121 When you visit a file that has been saved in the @samp{text/enriched}
2122 format, Emacs automatically enables Enriched mode, and applies the
2123 formatting information in the file to the buffer text.  When you save
2124 a buffer with Enriched mode enabled, it is saved using the
2125 @samp{text/enriched} format, including the formatting information.
2127 @findex enriched-mode
2128   To create a new file of formatted text, visit the nonexistent file
2129 and type @kbd{M-x enriched-mode}.  This command actually toggles
2130 Enriched mode.  With a prefix argument, it enables Enriched mode if
2131 the argument is positive, and disables Enriched mode otherwise.  If
2132 you disable Enriched mode, Emacs no longer saves the buffer using the
2133 @samp{text/enriched} format; any formatting properties that have been
2134 added to the buffer remain in the buffer, but they are not saved to
2135 disk.
2137 @vindex enriched-translations
2138   Enriched mode does not save all Emacs text properties, only those
2139 specified in the variable @code{enriched-translations}.  These include
2140 properties for fonts, colors, indentation, and justification.
2142 @findex format-decode-buffer
2143   If you visit a file and Emacs fails to recognize that it is in the
2144 @samp{text/enriched} format, type @kbd{M-x format-decode-buffer}.
2145 This command prompts for a file format, and re-reads the file in that
2146 format.  Specifying the @samp{text/enriched} format automatically
2147 enables Enriched mode.
2149   To view a @samp{text/enriched} file in raw form (as plain text with
2150 markup tags rather than formatted text), use @kbd{M-x
2151 find-file-literally} (@pxref{Visiting}).
2153   @xref{Format Conversion,, Format Conversion, elisp, the Emacs Lisp
2154 Reference Manual}, for details of how Emacs recognizes and converts
2155 file formats like @samp{text/enriched}.  @xref{Text Properties,,,
2156 elisp, the Emacs Lisp Reference Manual}, for more information about
2157 text properties.
2159 @node Hard and Soft Newlines
2160 @subsection Hard and Soft Newlines
2161 @cindex hard newline
2162 @cindex soft newline
2163 @cindex newlines, hard and soft
2165 @cindex use-hard-newlines
2166   In Enriched mode, Emacs distinguishes between two different kinds of
2167 newlines, @dfn{hard} newlines and @dfn{soft} newlines.  You can also
2168 enable or disable this feature in other buffers, by typing @kbd{M-x
2169 use-hard-newlines}.
2171   Hard newlines are used to separate paragraphs, or anywhere there
2172 needs to be a line break regardless of how the text is filled; soft
2173 newlines are used for filling.  The @key{RET} (@code{newline}) and
2174 @kbd{C-o} (@code{open-line}) commands insert hard newlines.  The fill
2175 commands, including Auto Fill (@pxref{Auto Fill}), insert only soft
2176 newlines and delete only soft newlines, leaving hard newlines alone.
2178 @c FIXME: I don't see 'unfilled' in that node.  --xfq
2179   Thus, when editing with Enriched mode, you should not use @key{RET}
2180 or @kbd{C-o} to break lines in the middle of filled paragraphs.  Use
2181 Auto Fill mode or explicit fill commands (@pxref{Fill Commands})
2182 instead.  Use @key{RET} or @kbd{C-o} where line breaks should always
2183 remain, such as in tables and lists.  For such lines, you may also
2184 want to set the justification style to @code{unfilled}
2185 (@pxref{Enriched Justification}).
2187 @node Editing Format Info
2188 @subsection Editing Format Information
2190   The easiest way to alter properties is with the @samp{Text
2191 Properties} menu.  You can get to this menu from the @samp{Edit} menu
2192 in the menu bar (@pxref{Menu Bar}), or with @kbd{C-mouse-2}
2193 (@pxref{Menu Mouse Clicks}).  Some of the commands in the @samp{Text
2194 Properties} menu are listed below (you can also invoke them with
2195 @kbd{M-x}):
2197 @table @code
2198 @findex facemenu-remove-face-props
2199 @item Remove Face Properties
2200 Remove face properties from the region
2201 (@code{facemenu-remove-face-props}).
2203 @findex facemenu-remove-all
2204 @item Remove Text Properties
2205 Remove all text properties from the region, including face properties
2206 (@code{facemenu-remove-all}).
2208 @findex describe-text-properties
2209 @cindex text properties of characters
2210 @cindex overlays at character position
2211 @cindex widgets at buffer position
2212 @cindex buttons at buffer position
2213 @item Describe Properties
2214 List all text properties and other information about the character
2215 following point (@code{describe-text-properties}).
2217 @item Display Faces
2218 Display a list of defined faces (@code{list-faces-display}).
2219 @xref{Faces}.
2221 @item Display Colors
2222 Display a list of defined colors (@code{list-colors-display}).
2223 @xref{Colors}.
2224 @end table
2226 @noindent
2227 The other menu entries are described in the following sections.
2229 @node Enriched Faces
2230 @subsection Faces in Enriched Text
2232   The following commands can be used to add or remove faces
2233 (@pxref{Faces}).  Each applies to the text in the region if the mark
2234 is active, and to the next self-inserting character if the mark is
2235 inactive.  With a prefix argument, each command applies to the next
2236 self-inserting character even if the region is active.
2238 @table @kbd
2239 @kindex M-o d @r{(Enriched mode)}
2240 @findex facemenu-set-default
2241 @item M-o d
2242 Remove all @code{face} properties (@code{facemenu-set-default}).
2244 @kindex M-o b @r{(Enriched mode)}
2245 @findex facemenu-set-bold
2246 @item M-o b
2247 Apply the @code{bold} face (@code{facemenu-set-bold}).
2249 @kindex M-o i @r{(Enriched mode)}
2250 @findex facemenu-set-italic
2251 @item M-o i
2252 Apply the @code{italic} face (@code{facemenu-set-italic}).
2254 @kindex M-o l @r{(Enriched mode)}
2255 @findex facemenu-set-bold-italic
2256 @item M-o l
2257 Apply the @code{bold-italic} face (@code{facemenu-set-bold-italic}).
2259 @kindex M-o u @r{(Enriched mode)}
2260 @findex facemenu-set-underline
2261 @item M-o u
2262 Apply the @code{underline} face (@code{facemenu-set-underline}).
2264 @kindex M-o o @r{(Enriched mode)}
2265 @findex facemenu-set-face
2266 @item M-o o @var{face} @key{RET}
2267 Apply the face @var{face} (@code{facemenu-set-face}).
2269 @findex facemenu-set-foreground
2270 @item M-x facemenu-set-foreground
2271 Prompt for a color (@pxref{Colors}), and apply it as a foreground
2272 color.
2274 @findex facemenu-set-background
2275 @item M-x facemenu-set-background
2276 Prompt for a color, and apply it as a background color.
2277 @end table
2279 @noindent
2280 These command are also available via the Text Properties menu.
2282   A self-inserting character normally inherits the face properties
2283 (and most other text properties) from the preceding character in the
2284 buffer.  If you use one of the above commands to specify the face for
2285 the next self-inserting character, that character will not inherit the
2286 faces properties from the preceding character, but it will still
2287 inherit other text properties.
2289   Enriched mode defines two additional faces: @code{excerpt} and
2290 @code{fixed}.  These correspond to codes used in the text/enriched
2291 file format.  The @code{excerpt} face is intended for quotations; by
2292 default, it appears the same as @code{italic}.  The @code{fixed} face
2293 specifies fixed-width text; by default, it appears the same as
2294 @code{bold}.
2296 @node Enriched Indentation
2297 @subsection Indentation in Enriched Text
2299   In Enriched mode, you can specify different amounts of indentation
2300 for the right or left margin of a paragraph or a part of a paragraph.
2301 These margins also affect fill commands such as @kbd{M-q}
2302 (@pxref{Filling}).
2304   The Indentation submenu of Text Properties offers commands
2305 for specifying indentation:
2307 @table @code
2308 @kindex C-x TAB @r{(Enriched mode)}
2309 @findex increase-left-margin
2310 @item Indent More
2311 Indent the region by 4 columns (@code{increase-left-margin}).  In
2312 Enriched mode, this command is also available on @kbd{C-x @key{TAB}}; if
2313 you supply a numeric argument, that says how many columns to add to the
2314 margin (a negative argument reduces the number of columns).
2316 @item Indent Less
2317 Remove 4 columns of indentation from the region.
2319 @item Indent Right More
2320 Make the text narrower by indenting 4 columns at the right margin.
2322 @item Indent Right Less
2323 Remove 4 columns of indentation from the right margin.
2324 @end table
2326 @vindex standard-indent
2327   The variable @code{standard-indent} specifies how many columns these
2328 commands should add to or subtract from the indentation.  The default
2329 value is 4.  The default right margin for Enriched mode is controlled
2330 by the variable @code{fill-column}, as usual.
2332 @kindex C-c [ @r{(Enriched mode)}
2333 @kindex C-c ] @r{(Enriched mode)}
2334 @findex set-left-margin
2335 @findex set-right-margin
2336   You can also type @kbd{C-c [} (@code{set-left-margin}) and @kbd{C-c
2337 ]} (@code{set-right-margin}) to set the left and right margins.  You
2338 can specify the margin width with a numeric argument; otherwise these
2339 commands prompt for a value via the minibuffer.
2341   The fill prefix, if any, works in addition to the specified paragraph
2342 indentation: @kbd{C-x .} does not include the specified indentation's
2343 whitespace in the new value for the fill prefix, and the fill commands
2344 look for the fill prefix after the indentation on each line.  @xref{Fill
2345 Prefix}.
2347 @node Enriched Justification
2348 @subsection Justification in Enriched Text
2349 @cindex justification style
2351   In Enriched mode, you can use the following commands to specify
2352 various @dfn{justification styles} for filling.  These commands apply
2353 to the paragraph containing point, or, if the region is active, to all
2354 paragraphs overlapping the region.
2356 @table @kbd
2357 @kindex M-j l @r{(Enriched mode)}
2358 @findex set-justification-left
2359 @item M-j l
2360 Align lines to the left margin (@code{set-justification-left}).
2362 @kindex M-j r @r{(Enriched mode)}
2363 @findex set-justification-right
2364 @item M-j r
2365 Align lines to the right margin (@code{set-justification-right}).
2367 @kindex M-j b @r{(Enriched mode)}
2368 @findex set-justification-full
2369 @item M-j b
2370 Align lines to both margins, inserting spaces in the middle of the
2371 line to achieve this (@code{set-justification-full}).
2373 @kindex M-j c @r{(Enriched mode)}
2374 @kindex M-S @r{(Enriched mode)}
2375 @findex set-justification-center
2376 @item M-j c
2377 @itemx M-S
2378 Center lines between the margins (@code{set-justification-center}).
2380 @kindex M-j u @r{(Enriched mode)}
2381 @findex set-justification-none
2382 @item M-j u
2383 Turn off filling entirely (@code{set-justification-none}).  The fill
2384 commands do nothing on text with this setting.  You can, however,
2385 still indent the left margin.
2386 @end table
2388 @vindex default-justification
2389   You can also specify justification styles using the Justification
2390 submenu in the Text Properties menu.  The default justification style
2391 is specified by the per-buffer variable @code{default-justification}.
2392 Its value should be one of the symbols @code{left}, @code{right},
2393 @code{full}, @code{center}, or @code{none}; their meanings correspond
2394 to the commands above.
2396 @node Enriched Properties
2397 @subsection Setting Other Text Properties
2399   The Special Properties submenu of Text Properties has entries for
2400 adding or removing three other text properties: @code{read-only},
2401 (which disallows alteration of the text), @code{invisible} (which
2402 hides text), and @code{intangible} (which disallows moving point
2403 within the text).  The @samp{Remove Special} menu item removes all of
2404 these special properties from the text in the region.
2406   The @code{invisible} and @code{intangible} properties are not saved.
2408 @vindex enriched-allow-eval-in-display-props
2409 @cindex security, when displaying enriched text
2410   Enriched mode also supports saving and restoring @code{display}
2411 properties (@pxref{Display Property,,,elisp, the Emacs Lisp Reference
2412 Manual}), which affect how text is displayed on the screen, and also
2413 allow displaying images and strings that come from sources other than
2414 buffer text.  The @code{display} properties also support execution of
2415 arbitrary Lisp forms as part of processing the property for display,
2416 thus providing a means to dynamically tailor the display to some
2417 conditions that can only be known at display time.  Since execution of
2418 arbitrary Lisp opens Emacs to potential attacks, especially when the
2419 source of enriched text is outside of Emacs or even outside of your
2420 system (e.g., if it was received in an email message), such execution
2421 is by default disabled in Enriched mode.  You can enable it by
2422 customizing the variable @code{enriched-allow-eval-in-display-props}
2423 to a non-@code{nil} value.
2425 @node Text Based Tables
2426 @section Editing Text-based Tables
2427 @cindex table mode
2428 @cindex text-based tables
2430   The @code{table} package provides commands to easily edit text-based
2431 tables.  Here is an example of what such a table looks like:
2433 @smallexample
2434 @group
2435 +-----------------+--------------------------------+-----------------+
2436 |     Command     |          Description           |   Key Binding   |
2437 +-----------------+--------------------------------+-----------------+
2438 |  forward-char   |Move point right N characters   |       C-f       |
2439 |                 |(left if N is negative).        |                 |
2440 |                 |                                |                 |
2441 +-----------------+--------------------------------+-----------------+
2442 |  backward-char  |Move point left N characters    |       C-b       |
2443 |                 |(right if N is negative).       |                 |
2444 |                 |                                |                 |
2445 +-----------------+--------------------------------+-----------------+
2446 @end group
2447 @end smallexample
2449   When Emacs recognizes such a stretch of text as a table
2450 (@pxref{Table Recognition}), editing the contents of each table cell
2451 will automatically resize the table, whenever the contents become too
2452 large to fit in the cell.  You can use the commands defined in the
2453 following sections for navigating and editing the table layout.
2455 @findex table-fixed-width-mode
2456   Type @kbd{M-x table-fixed-width-mode} to toggle the automatic table
2457 resizing feature.
2459 @menu
2460 * Table Definition::          What is a text based table.
2461 * Table Creation::            How to create a table.
2462 * Table Recognition::         How to activate and deactivate tables.
2463 * Cell Commands::             Cell-oriented commands in a table.
2464 * Cell Justification::        Justifying cell contents.
2465 * Table Rows and Columns::    Inserting and deleting rows and columns.
2466 * Table Conversion::          Converting between plain text and tables.
2467 * Table Misc::                Table miscellany.
2468 @end menu
2470 @node Table Definition
2471 @subsection What is a Text-based Table?
2472 @cindex cells, for text-based tables
2474   A @dfn{table} consists of a rectangular text area which is divided
2475 into @dfn{cells}.  Each cell must be at least one character wide and
2476 one character high, not counting its border lines.  A cell can be
2477 subdivided into more cells, but they cannot overlap.
2479   Cell border lines are drawn with three special characters, specified
2480 by the following variables:
2482 @table @code
2483 @vindex table-cell-vertical-char
2484 @item table-cell-vertical-char
2485 The character used for vertical lines.  The default is @samp{|}.
2487 @vindex table-cell-horizontal-chars
2488 @item table-cell-horizontal-chars
2489 The characters used for horizontal lines.  The default is @samp{"-="}.
2491 @vindex table-cell-intersection-char
2492 @item table-cell-intersection-char
2493 The character used for the intersection of horizontal and vertical
2494 lines.  The default is @samp{+}.
2495 @end table
2497 @noindent
2498 The following are examples of @emph{invalid} tables:
2500 @example
2501    +-----+       +--+    +-++--+
2502    |     |       |  |    | ||  |
2503    |     |       |  |    | ||  |
2504    +--+  |    +--+--+    +-++--+
2505    |  |  |    |  |  |    +-++--+
2506    |  |  |    |  |  |    | ||  |
2507    +--+--+    +--+--+    +-++--+
2508       a          b          c
2509 @end example
2511 @noindent
2512 From left to right:
2514 @enumerate a
2515 @item
2516 Overlapped cells or non-rectangular cells are not allowed.
2517 @item
2518 The border must be rectangular.
2519 @item
2520 Cells must have a minimum width/height of one character.
2521 @end enumerate
2523 @node Table Creation
2524 @subsection Creating a Table
2525 @cindex create a text-based table
2526 @cindex table creation
2528 @findex table-insert
2529   To create a text-based table from scratch, type @kbd{M-x
2530 table-insert}.  This command prompts for the number of table columns,
2531 the number of table rows, cell width and cell height.  The cell width
2532 and cell height do not include the cell borders; each can be specified
2533 as a single integer (which means each cell is given the same
2534 width/height), or as a sequence of integers separated by spaces or
2535 commas (which specify the width/height of the individual table
2536 columns/rows, counting from left to right for table columns and from
2537 top to bottom for table rows).  The specified table is then inserted
2538 at point.
2540   The table inserted by @kbd{M-x table-insert} contains special text
2541 properties, which tell Emacs to treat it specially as a text-based
2542 table.  If you save the buffer to a file and visit it again later,
2543 those properties are lost, and the table appears to Emacs as an
2544 ordinary piece of text.  See the next section, for how to convert it
2545 back into a table.
2547 @node Table Recognition
2548 @subsection Table Recognition
2549 @cindex table recognition
2551 @findex table-recognize
2552 @findex table-unrecognize
2553   Existing text-based tables in a buffer, which lack the special text
2554 properties applied by @kbd{M-x table-insert}, are not treated
2555 specially as tables.  To apply those text properties, type @kbd{M-x
2556 table-recognize}.  This command scans the current buffer,
2557 @dfn{recognizes} valid table cells, and applies the relevant text
2558 properties.  Conversely, type @kbd{M-x table-unrecognize} to
2559 @dfn{unrecognize} all tables in the current buffer, removing the
2560 special text properties and converting tables back to plain text.
2562   You can also use the following commands to selectively recognize or
2563 unrecognize tables:
2565 @table @kbd
2566 @findex table-recognize-region
2567 @item M-x table-recognize-region
2568 Recognize tables within the current region.
2570 @findex table-unrecognize-region
2571 @item M-x table-unrecognize-region
2572 Unrecognize tables within the current region.
2574 @findex table-recognize-table
2575 @item M-x table-recognize-table
2576 Recognize the table at point and activate it.
2578 @findex table-unrecognize-table
2579 @item M-x table-unrecognize-table
2580 Deactivate the table at point.
2582 @findex table-recognize-cell
2583 @item M-x table-recognize-cell
2584 Recognize the cell at point and activate it.
2586 @findex table-unrecognize-cell
2587 @item M-x table-unrecognize-cell
2588 Deactivate the cell at point.
2589 @end table
2591   @xref{Table Conversion}, for another way to recognize a table.
2593 @node Cell Commands
2594 @subsection Commands for Table Cells
2596 @findex table-forward-cell
2597 @findex table-backward-cell
2598   The commands @kbd{M-x table-forward-cell} and @kbd{M-x
2599 table-backward-cell} move point from the current cell to an adjacent
2600 cell.  The order is cyclic: when point is in the last cell of a table,
2601 @kbd{M-x table-forward-cell} moves to the first cell.  Likewise, when
2602 point is on the first cell, @kbd{M-x table-backward-cell} moves to the
2603 last cell.
2605 @findex table-span-cell
2606   @kbd{M-x table-span-cell} prompts for a direction---right, left,
2607 above, or below---and merges the current cell with the adjacent cell
2608 in that direction.  This command signals an error if the merge would
2609 result in an illegitimate cell layout.
2611 @findex table-split-cell
2612 @findex table-split-cell-vertically
2613 @findex table-split-cell-horizontally
2614 @cindex text-based tables, splitting cells
2615 @cindex splitting table cells
2616   @kbd{M-x table-split-cell} splits the current cell vertically or
2617 horizontally, prompting for the direction with the minibuffer.  To
2618 split in a specific direction, use @kbd{M-x
2619 table-split-cell-vertically} and @kbd{M-x
2620 table-split-cell-horizontally}.  When splitting vertically, the old
2621 cell contents are automatically split between the two new cells.  When
2622 splitting horizontally, you are prompted for how to divide the cell
2623 contents, if the cell is non-empty; the options are @samp{split}
2624 (divide the contents at point), @samp{left} (put all the contents in
2625 the left cell), and @samp{right} (put all the contents in the right
2626 cell).
2628   The following commands enlarge or shrink a cell.  By default, they
2629 resize by one row or column; if a numeric argument is supplied, that
2630 specifies the number of rows or columns to resize by.
2632 @table @kbd
2633 @findex table-heighten-cell
2634 @item M-x table-heighten-cell
2635 Enlarge the current cell vertically.
2637 @findex table-shorten-cell
2638 @item M-x table-shorten-cell
2639 Shrink the current cell vertically.
2641 @findex table-widen-cell
2642 @item M-x table-widen-cell
2643 Enlarge the current cell horizontally.
2645 @findex table-narrow-cell
2646 @item M-x table-narrow-cell
2647 Shrink the current cell horizontally.
2648 @end table
2650 @node Cell Justification
2651 @subsection Cell Justification
2652 @cindex justification in text-based tables
2654   The command @kbd{M-x table-justify} imposes @dfn{justification} on
2655 one or more cells in a text-based table.  Justification determines how
2656 the text in the cell is aligned, relative to the edges of the cell.
2657 Each cell in a table can be separately justified.
2659 @findex table-justify
2660   @kbd{M-x table-justify} first prompts for what to justify; the
2661 options are @samp{cell} (just the current cell), @samp{column} (all
2662 cells in the current table column) and @samp{row} (all cells in the
2663 current table row).  The command then prompts for the justification
2664 style; the options are @code{left}, @code{center}, @code{right},
2665 @code{top}, @code{middle}, @code{bottom}, or @code{none} (meaning no
2666 vertical justification).
2668   Horizontal and vertical justification styles are specified
2669 independently, and both types can be in effect simultaneously; for
2670 instance, you can call @kbd{M-x table-justify} twice, once to specify
2671 @code{right} justification and once to specify @code{bottom}
2672 justification, to align the contents of a cell to the bottom right.
2674 @vindex table-detect-cell-alignment
2675   The justification style is stored in the buffer as a text property,
2676 and is lost when you kill the buffer or exit Emacs.  However, the
2677 table recognition commands, such as @kbd{M-x table-recognize}
2678 (@pxref{Table Recognition}), attempt to determine and re-apply each
2679 cell's justification style, by examining its contents.  To disable
2680 this feature, change the variable @code{table-detect-cell-alignment}
2681 to @code{nil}.
2683 @node Table Rows and Columns
2684 @subsection Table Rows and Columns
2685 @cindex inserting rows and columns in text-based tables
2687 @findex table-insert-row
2688   @kbd{M-x table-insert-row} inserts a row of cells before the current
2689 table row.  The current row, together with point, is pushed down past
2690 the new row.  To insert a row after the last row at the bottom of a
2691 table, invoke this command with point below the table, just below the
2692 bottom edge.  You can insert more than one row at a time by using a
2693 numeric prefix argument.
2695 @c A numeric prefix argument specifies the number of rows to insert.
2697 @findex table-insert-column
2698   Similarly, @kbd{M-x table-insert-column} inserts a column of cells
2699 to the left of the current table column.  To insert a column to the
2700 right side of the rightmost column, invoke this command with point to
2701 the right of the rightmost column, outside the table.  A numeric
2702 prefix argument specifies the number of columns to insert.
2704 @cindex deleting rows and column in text-based tables
2705   @kbd{M-x table-delete-column} deletes the column of cells at point.
2706 Similarly, @kbd{M-x table-delete-row} deletes the row of cells at
2707 point.  A numeric prefix argument to either command specifies the
2708 number of columns or rows to delete.
2710 @node Table Conversion
2711 @subsection Converting Between Plain Text and Tables
2712 @cindex text to table
2713 @cindex table to text
2715 @findex table-capture
2716   The command @kbd{M-x table-capture} captures plain text in a region
2717 and turns it into a table.  Unlike @kbd{M-x table-recognize}
2718 (@pxref{Table Recognition}), the original text does not need to have a
2719 table appearance; it only needs to have a logical table-like
2720 structure.
2722   For example, suppose we have the following numbers, which are
2723 divided into three lines and separated horizontally by commas:
2725 @example
2726 1, 2, 3, 4
2727 5, 6, 7, 8
2728 , 9, 10
2729 @end example
2731 @noindent
2732 Invoking @kbd{M-x table-capture} on that text produces this table:
2734 @example
2735 +-----+-----+-----+-----+
2736 |1    |2    |3    |4    |
2737 +-----+-----+-----+-----+
2738 |5    |6    |7    |8    |
2739 +-----+-----+-----+-----+
2740 |     |9    |10   |     |
2741 +-----+-----+-----+-----+
2742 @end example
2744 @findex table-release
2745   @kbd{M-x table-release} does the opposite: it converts a table back
2746 to plain text, removing its cell borders.
2748   One application of this pair of commands is to edit a text in
2749 layout.  Look at the following three paragraphs (the latter two are
2750 indented with header lines):
2752 @example
2753 table-capture is a powerful command.
2754 Here are some things it can do:
2756 Parse Cell Items   Using row and column delimiter regexps,
2757                    it parses the specified text area and
2758                    extracts cell items into a table.
2759 @end example
2761 @noindent
2762 Applying @code{table-capture} to a region containing the above text,
2763 with empty strings for the column and row delimiter regexps, creates a
2764 table with a single cell like the following one.
2766 @smallexample
2767 @group
2768 +----------------------------------------------------------+
2769 |table-capture is a powerful command.                      |
2770 |Here are some things it can do:                           |
2771 |                                                          |
2772 |Parse Cell Items   Using row and column delimiter regexps,|
2773 |                   it parses the specified text area and  |
2774 |                   extracts cell items into a table.      |
2775 +----------------------------------------------------------+
2776 @end group
2777 @end smallexample
2779 @noindent
2780 We can then use the cell splitting commands (@pxref{Cell Commands}) to
2781 subdivide the table so that each paragraph occupies a cell:
2783 @smallexample
2784 +----------------------------------------------------------+
2785 |table-capture is a powerful command.                      |
2786 |Here are some things it can do:                           |
2787 +-----------------+----------------------------------------+
2788 |Parse Cell Items | Using row and column delimiter regexps,|
2789 |                 | it parses the specified text area and  |
2790 |                 | extracts cell items into a table.      |
2791 +-----------------+----------------------------------------+
2792 @end smallexample
2794 @noindent
2795 Each cell can now be edited independently without affecting the layout
2796 of other cells.  When finished, we can invoke @kbd{M-x table-release}
2797 to convert the table back to plain text.
2799 @node Table Misc
2800 @subsection Table Miscellany
2802 @cindex table dimensions
2803 @findex table-query-dimension
2804   The command @code{table-query-dimension} reports the layout of the
2805 table and table cell at point.  Here is an example of its output:
2807 @smallexample
2808 Cell: (21w, 6h), Table: (67w, 16h), Dim: (2c, 3r), Total Cells: 5
2809 @end smallexample
2811 @noindent
2812 This indicates that the current cell is 21 characters wide and 6 lines
2813 high, the table is 67 characters wide and 16 lines high with 2 columns
2814 and 3 rows, and a total of 5 cells.
2816 @findex table-insert-sequence
2817   @kbd{M-x table-insert-sequence} traverses the cells of a table
2818 inserting a sequence of text strings into each cell as it goes.  It
2819 asks for the base string of the sequence, and then produces the
2820 sequence by ``incrementing'' the base string, either numerically (if
2821 the base string ends in numerical characters) or in the
2822 @acronym{ASCII} order.  In addition to the base string, the command
2823 prompts for the number of elements in the sequence, the increment, the
2824 cell interval, and the justification of the text in each cell.
2826 @cindex table for HTML and LaTeX
2827 @findex table-generate-source
2828   @kbd{M-x table-generate-source} generates a table formatted for a
2829 specific markup language.  It asks for a language (which must be one
2830 of @code{html}, @code{latex}, or @code{cals}), a destination buffer in
2831 which to put the result, and a table caption, and then inserts the
2832 generated table into the specified buffer.  The default destination
2833 buffer is @code{table.@var{lang}}, where @var{lang} is the language
2834 you specified.
2836 @node Two-Column
2837 @section Two-Column Editing
2838 @cindex two-column editing
2839 @cindex splitting columns
2840 @cindex columns, splitting
2842   Two-column mode lets you conveniently edit two side-by-side columns
2843 of text.  It uses two side-by-side windows, each showing its own
2844 buffer.  There are three ways to enter two-column mode:
2846 @table @asis
2847 @item @kbd{@key{F2} 2} or @kbd{C-x 6 2}
2848 @kindex F2 2
2849 @kindex C-x 6 2
2850 @findex 2C-two-columns
2851 Enter two-column mode with the current buffer on the left, and on the
2852 right, a buffer whose name is based on the current buffer's name
2853 (@code{2C-two-columns}).  If the right-hand buffer doesn't already
2854 exist, it starts out empty; the current buffer's contents are not
2855 changed.
2857 This command is appropriate when the current buffer is empty or contains
2858 just one column and you want to add another column.
2860 @item @kbd{@key{F2} s} or @kbd{C-x 6 s}
2861 @kindex F2 s
2862 @kindex C-x 6 s
2863 @findex 2C-split
2864 Split the current buffer, which contains two-column text, into two
2865 buffers, and display them side by side (@code{2C-split}).  The current
2866 buffer becomes the left-hand buffer, but the text in the right-hand
2867 column is moved into the right-hand buffer.  The current column
2868 specifies the split point.  Splitting starts with the current line and
2869 continues to the end of the buffer.
2871 This command is appropriate when you have a buffer that already contains
2872 two-column text, and you wish to separate the columns temporarily.
2874 @item @kbd{@key{F2} b @var{buffer} @key{RET}}
2875 @itemx @kbd{C-x 6 b @var{buffer} @key{RET}}
2876 @kindex F2 b
2877 @kindex C-x 6 b
2878 @findex 2C-associate-buffer
2879 Enter two-column mode using the current buffer as the left-hand buffer,
2880 and using buffer @var{buffer} as the right-hand buffer
2881 (@code{2C-associate-buffer}).
2882 @end table
2884   @kbd{@key{F2} s} or @kbd{C-x 6 s} looks for a column separator, which
2885 is a string that appears on each line between the two columns.  You can
2886 specify the width of the separator with a numeric argument to
2887 @kbd{@key{F2} s}; that many characters, before point, constitute the
2888 separator string.  By default, the width is 1, so the column separator
2889 is the character before point.
2891   When a line has the separator at the proper place, @kbd{@key{F2} s}
2892 puts the text after the separator into the right-hand buffer, and
2893 deletes the separator.  Lines that don't have the column separator at
2894 the proper place remain unsplit; they stay in the left-hand buffer, and
2895 the right-hand buffer gets an empty line to correspond.  (This is the
2896 way to write a line that spans both columns while in two-column
2897 mode: write it in the left-hand buffer, and put an empty line in the
2898 right-hand buffer.)
2900 @kindex F2 RET
2901 @kindex C-x 6 RET
2902 @findex 2C-newline
2903   The command @kbd{C-x 6 @key{RET}} or @kbd{@key{F2} @key{RET}}
2904 (@code{2C-newline}) inserts a newline in each of the two buffers at
2905 corresponding positions.  This is the easiest way to add a new line to
2906 the two-column text while editing it in split buffers.
2908 @kindex F2 1
2909 @kindex C-x 6 1
2910 @findex 2C-merge
2911   When you have edited both buffers as you wish, merge them with
2912 @kbd{@key{F2} 1} or @kbd{C-x 6 1} (@code{2C-merge}).  This copies the
2913 text from the right-hand buffer as a second column in the other buffer.
2914 To go back to two-column editing, use @kbd{@key{F2} s}.
2916 @kindex F2 d
2917 @kindex C-x 6 d
2918 @findex 2C-dissociate
2919   Use @kbd{@key{F2} d} or @kbd{C-x 6 d} to dissociate the two buffers,
2920 leaving each as it stands (@code{2C-dissociate}).  If the other buffer,
2921 the one not current when you type @kbd{@key{F2} d}, is empty,
2922 @kbd{@key{F2} d} kills it.