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