]> code.delx.au - gnu-emacs/blob - man/text.texi
Trailing whitespace deleted.
[gnu-emacs] / man / text.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002
3 @c Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Text, Programs, Indentation, Top
6 @chapter Commands for Human Languages
7 @cindex text
8 @cindex manipulating text
9
10 The term @dfn{text} has two widespread meanings in our area of the
11 computer field. One is data that is a sequence of characters. Any file
12 that you edit with Emacs is text, in this sense of the word. The other
13 meaning is more restrictive: a sequence of characters in a human language
14 for humans to read (possibly after processing by a text formatter), as
15 opposed to a program or commands for a program.
16
17 Human languages have syntactic/stylistic conventions that can be
18 supported or used to advantage by editor commands: conventions involving
19 words, sentences, paragraphs, and capital letters. This chapter
20 describes Emacs commands for all of these things. There are also
21 commands for @dfn{filling}, which means rearranging the lines of a
22 paragraph to be approximately equal in length. The commands for moving
23 over and killing words, sentences and paragraphs, while intended
24 primarily for editing text, are also often useful for editing programs.
25
26 Emacs has several major modes for editing human-language text. If the
27 file contains text pure and simple, use Text mode, which customizes
28 Emacs in small ways for the syntactic conventions of text. Outline mode
29 provides special commands for operating on text with an outline
30 structure.
31 @iftex
32 @xref{Outline Mode}.
33 @end iftex
34
35 For text which contains embedded commands for text formatters, Emacs
36 has other major modes, each for a particular text formatter. Thus, for
37 input to @TeX{}, you would use @TeX{}
38 @iftex
39 mode (@pxref{TeX Mode}).
40 @end iftex
41 @ifinfo
42 mode.
43 @end ifinfo
44 For input to nroff, use Nroff mode.
45
46 Instead of using a text formatter, you can edit formatted text in
47 WYSIWYG style (``what you see is what you get''), with Enriched mode.
48 Then the formatting appears on the screen in Emacs while you edit.
49 @iftex
50 @xref{Formatted Text}.
51 @end iftex
52
53 @cindex skeletons
54 @cindex templates
55 @cindex autotyping
56 @cindex automatic typing
57 The ``automatic typing'' features may be useful when writing text.
58 @xref{Top,, Autotyping, autotype, Features for Automatic Typing}.
59
60 @menu
61 * Words:: Moving over and killing words.
62 * Sentences:: Moving over and killing sentences.
63 * Paragraphs:: Moving over paragraphs.
64 * Pages:: Moving over pages.
65 * Filling:: Filling or justifying text.
66 * Case:: Changing the case of text.
67 * Text Mode:: The major modes for editing text files.
68 * Outline Mode:: Editing outlines.
69 * TeX Mode:: Editing input to the formatter TeX.
70 * HTML Mode:: Editing HTML, SGML, and XML files.
71 * Nroff Mode:: Editing input to the formatter nroff.
72 * Formatted Text:: Editing formatted text directly in WYSIWYG fashion.
73 @end menu
74
75 @node Words
76 @section Words
77 @cindex words
78 @cindex Meta commands and words
79
80 Emacs has commands for moving over or operating on words. By convention,
81 the keys for them are all Meta characters.
82
83 @table @kbd
84 @item M-f
85 Move forward over a word (@code{forward-word}).
86 @item M-b
87 Move backward over a word (@code{backward-word}).
88 @item M-d
89 Kill up to the end of a word (@code{kill-word}).
90 @item M-@key{DEL}
91 Kill back to the beginning of a word (@code{backward-kill-word}).
92 @item M-@@
93 Mark the end of the next word (@code{mark-word}).
94 @item M-t
95 Transpose two words or drag a word across other words
96 (@code{transpose-words}).
97 @end table
98
99 Notice how these keys form a series that parallels the character-based
100 @kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @key{DEL} and @kbd{C-t}. @kbd{M-@@} is
101 cognate to @kbd{C-@@}, which is an alias for @kbd{C-@key{SPC}}.
102
103 @kindex M-f
104 @kindex M-b
105 @findex forward-word
106 @findex backward-word
107 The commands @kbd{M-f} (@code{forward-word}) and @kbd{M-b}
108 (@code{backward-word}) move forward and backward over words. These
109 Meta characters are thus analogous to the corresponding control
110 characters, @kbd{C-f} and @kbd{C-b}, which move over single characters
111 in the text. The analogy extends to numeric arguments, which serve as
112 repeat counts. @kbd{M-f} with a negative argument moves backward, and
113 @kbd{M-b} with a negative argument moves forward. Forward motion
114 stops right after the last letter of the word, while backward motion
115 stops right before the first letter.@refill
116
117 @kindex M-d
118 @findex kill-word
119 @kbd{M-d} (@code{kill-word}) kills the word after point. To be
120 precise, it kills everything from point to the place @kbd{M-f} would
121 move to. Thus, if point is in the middle of a word, @kbd{M-d} kills
122 just the part after point. If some punctuation comes between point and the
123 next word, it is killed along with the word. (If you wish to kill only the
124 next word but not the punctuation before it, simply do @kbd{M-f} to get
125 the end, and kill the word backwards with @kbd{M-@key{DEL}}.)
126 @kbd{M-d} takes arguments just like @kbd{M-f}.
127
128 @findex backward-kill-word
129 @kindex M-DEL
130 @kbd{M-@key{DEL}} (@code{backward-kill-word}) kills the word before
131 point. It kills everything from point back to where @kbd{M-b} would
132 move to. If point is after the space in @w{@samp{FOO, BAR}}, then
133 @w{@samp{FOO, }} is killed. (If you wish to kill just @samp{FOO}, and
134 not the comma and the space, use @kbd{M-b M-d} instead of
135 @kbd{M-@key{DEL}}.)
136
137 @c Don't index M-t and transpose-words here, they are indexed in
138 @c fixit.texi, in the node "Transpose".
139 @c @kindex M-t
140 @c @findex transpose-words
141 @kbd{M-t} (@code{transpose-words}) exchanges the word before or
142 containing point with the following word. The delimiter characters between
143 the words do not move. For example, @w{@samp{FOO, BAR}} transposes into
144 @w{@samp{BAR, FOO}} rather than @samp{@w{BAR FOO,}}. @xref{Transpose}, for
145 more on transposition and on arguments to transposition commands.
146
147 @kindex M-@@
148 @findex mark-word
149 To operate on the next @var{n} words with an operation which applies
150 between point and mark, you can either set the mark at point and then move
151 over the words, or you can use the command @kbd{M-@@} (@code{mark-word})
152 which does not move point, but sets the mark where @kbd{M-f} would move
153 to. @kbd{M-@@} accepts a numeric argument that says how many words to
154 scan for the place to put the mark. In Transient Mark mode, this command
155 activates the mark.
156
157 The word commands' understanding of syntax is completely controlled by
158 the syntax table. Any character can, for example, be declared to be a word
159 delimiter. @xref{Syntax}.
160
161 @node Sentences
162 @section Sentences
163 @cindex sentences
164 @cindex manipulating sentences
165
166 The Emacs commands for manipulating sentences and paragraphs are mostly
167 on Meta keys, so as to be like the word-handling commands.
168
169 @table @kbd
170 @item M-a
171 Move back to the beginning of the sentence (@code{backward-sentence}).
172 @item M-e
173 Move forward to the end of the sentence (@code{forward-sentence}).
174 @item M-k
175 Kill forward to the end of the sentence (@code{kill-sentence}).
176 @item C-x @key{DEL}
177 Kill back to the beginning of the sentence (@code{backward-kill-sentence}).
178 @end table
179
180 @kindex M-a
181 @kindex M-e
182 @findex backward-sentence
183 @findex forward-sentence
184 The commands @kbd{M-a} and @kbd{M-e} (@code{backward-sentence} and
185 @code{forward-sentence}) move to the beginning and end of the current
186 sentence, respectively. They were chosen to resemble @kbd{C-a} and
187 @kbd{C-e}, which move to the beginning and end of a line. Unlike them,
188 @kbd{M-a} and @kbd{M-e} if repeated or given numeric arguments move over
189 successive sentences.
190
191 Moving backward over a sentence places point just before the first
192 character of the sentence; moving forward places point right after the
193 punctuation that ends the sentence. Neither one moves over the
194 whitespace at the sentence boundary.
195
196 @kindex M-k
197 @kindex C-x DEL
198 @findex kill-sentence
199 @findex backward-kill-sentence
200 Just as @kbd{C-a} and @kbd{C-e} have a kill command, @kbd{C-k}, to go
201 with them, so @kbd{M-a} and @kbd{M-e} have a corresponding kill command
202 @kbd{M-k} (@code{kill-sentence}) which kills from point to the end of
203 the sentence. With minus one as an argument it kills back to the
204 beginning of the sentence. Larger arguments serve as a repeat count.
205 There is also a command, @kbd{C-x @key{DEL}}
206 (@code{backward-kill-sentence}), for killing back to the beginning of a
207 sentence. This command is useful when you change your mind in the
208 middle of composing text.@refill
209
210 The sentence commands assume that you follow the American typist's
211 convention of putting two spaces at the end of a sentence; they consider
212 a sentence to end wherever there is a @samp{.}, @samp{?} or @samp{!}
213 followed by the end of a line or two spaces, with any number of
214 @samp{)}, @samp{]}, @samp{'}, or @samp{"} characters allowed in between.
215 A sentence also begins or ends wherever a paragraph begins or ends.
216
217 @vindex sentence-end
218 The variable @code{sentence-end} controls recognition of the end of a
219 sentence. It is a regexp that matches the last few characters of a
220 sentence, together with the whitespace following the sentence. Its
221 normal value is
222
223 @example
224 "[.?!][]\"')]*\\($\\| $\\|\t\\| \\)[ \t\n]*"
225 @end example
226
227 @noindent
228 This example is explained in the section on regexps. @xref{Regexps}.
229
230 If you want to use just one space between sentences, you should
231 set @code{sentence-end} to this value:
232
233 @example
234 "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*"
235 @end example
236
237 @noindent
238 You should also set the variable @code{sentence-end-double-space} to
239 @code{nil} so that the fill commands expect and leave just one space at
240 the end of a sentence. Note that this makes it impossible to
241 distinguish between periods that end sentences and those that indicate
242 abbreviations.
243
244 @node Paragraphs
245 @section Paragraphs
246 @cindex paragraphs
247 @cindex manipulating paragraphs
248 @kindex M-@{
249 @kindex M-@}
250 @findex backward-paragraph
251 @findex forward-paragraph
252
253 The Emacs commands for manipulating paragraphs are also Meta keys.
254
255 @table @kbd
256 @item M-@{
257 Move back to previous paragraph beginning (@code{backward-paragraph}).
258 @item M-@}
259 Move forward to next paragraph end (@code{forward-paragraph}).
260 @item M-h
261 Put point and mark around this or next paragraph (@code{mark-paragraph}).
262 @end table
263
264 @kbd{M-@{} moves to the beginning of the current or previous
265 paragraph, while @kbd{M-@}} moves to the end of the current or next
266 paragraph. Blank lines and text-formatter command lines separate
267 paragraphs and are not considered part of any paragraph. In Fundamental
268 mode, but not in Text mode, an indented line also starts a new
269 paragraph. (If a paragraph is preceded by a blank line, these commands
270 treat that blank line as the beginning of the paragraph.)
271
272 In major modes for programs, paragraphs begin and end only at blank
273 lines. This makes the paragraph commands continue to be useful even
274 though there are no paragraphs per se.
275
276 When there is a fill prefix, then paragraphs are delimited by all lines
277 which don't start with the fill prefix. @xref{Filling}.
278
279 @kindex M-h
280 @findex mark-paragraph
281 When you wish to operate on a paragraph, you can use the command
282 @kbd{M-h} (@code{mark-paragraph}) to set the region around it. Thus,
283 for example, @kbd{M-h C-w} kills the paragraph around or after point.
284 The @kbd{M-h} command puts point at the beginning and mark at the end of
285 the paragraph point was in. In Transient Mark mode, it activates the
286 mark. If point is between paragraphs (in a run of blank lines, or at a
287 boundary), the paragraph following point is surrounded by point and
288 mark. If there are blank lines preceding the first line of the
289 paragraph, one of these blank lines is included in the region.
290
291 @vindex paragraph-start
292 @vindex paragraph-separate
293 The precise definition of a paragraph boundary is controlled by the
294 variables @code{paragraph-separate} and @code{paragraph-start}. The
295 value of @code{paragraph-start} is a regexp that should match any line
296 that either starts or separates paragraphs. The value of
297 @code{paragraph-separate} is another regexp that should match only lines
298 that separate paragraphs without being part of any paragraph (for
299 example, blank lines). Lines that start a new paragraph and are
300 contained in it must match only @code{paragraph-start}, not
301 @code{paragraph-separate}. For example, in Fundamental mode,
302 @code{paragraph-start} is @w{@code{"[ \t\n\f]"}}, and
303 @code{paragraph-separate} is @w{@code{"[ \t\f]*$"}}.
304
305 Normally it is desirable for page boundaries to separate paragraphs.
306 The default values of these variables recognize the usual separator for
307 pages.
308
309 @node Pages
310 @section Pages
311
312 @cindex pages
313 @cindex formfeed
314 Files are often thought of as divided into @dfn{pages} by the
315 @dfn{formfeed} character (ASCII control-L, octal code 014). When you
316 print hardcopy for a file, this character forces a page break; thus,
317 each page of the file goes on a separate page on paper. Most Emacs
318 commands treat the page-separator character just like any other
319 character: you can insert it with @kbd{C-q C-l}, and delete it with
320 @key{DEL}. Thus, you are free to paginate your file or not. However,
321 since pages are often meaningful divisions of the file, Emacs provides
322 commands to move over them and operate on them.
323
324 @table @kbd
325 @item C-x [
326 Move point to previous page boundary (@code{backward-page}).
327 @item C-x ]
328 Move point to next page boundary (@code{forward-page}).
329 @item C-x C-p
330 Put point and mark around this page (or another page) (@code{mark-page}).
331 @item C-x l
332 Count the lines in this page (@code{count-lines-page}).
333 @end table
334
335 @kindex C-x [
336 @kindex C-x ]
337 @findex forward-page
338 @findex backward-page
339 The @kbd{C-x [} (@code{backward-page}) command moves point to immediately
340 after the previous page delimiter. If point is already right after a page
341 delimiter, it skips that one and stops at the previous one. A numeric
342 argument serves as a repeat count. The @kbd{C-x ]} (@code{forward-page})
343 command moves forward past the next page delimiter.
344
345 @kindex C-x C-p
346 @findex mark-page
347 The @kbd{C-x C-p} command (@code{mark-page}) puts point at the
348 beginning of the current page and the mark at the end. The page
349 delimiter at the end is included (the mark follows it). The page
350 delimiter at the front is excluded (point follows it). In Transient
351 Mark mode, this command activates the mark.
352
353 @kbd{C-x C-p C-w} is a handy way to kill a page to move it
354 elsewhere. If you move to another page delimiter with @kbd{C-x [} and
355 @kbd{C-x ]}, then yank the killed page, all the pages will be properly
356 delimited once again. The reason @kbd{C-x C-p} includes only the
357 following page delimiter in the region is to ensure that.
358
359 A numeric argument to @kbd{C-x C-p} is used to specify which page to go
360 to, relative to the current one. Zero means the current page. One means
361 the next page, and @minus{}1 means the previous one.
362
363 @kindex C-x l
364 @findex count-lines-page
365 The @kbd{C-x l} command (@code{count-lines-page}) is good for deciding
366 where to break a page in two. It displays in the echo area the total number
367 of lines in the current page, and then divides it up into those preceding
368 the current line and those following, as in
369
370 @example
371 Page has 96 (72+25) lines
372 @end example
373
374 @noindent
375 Notice that the sum is off by one; this is correct if point is not at the
376 beginning of a line.
377
378 @vindex page-delimiter
379 The variable @code{page-delimiter} controls where pages begin. Its
380 value is a regexp that matches the beginning of a line that separates
381 pages. The normal value of this variable is @code{"^\f"}, which
382 matches a formfeed character at the beginning of a line.
383
384 @node Filling
385 @section Filling Text
386 @cindex filling text
387
388 @dfn{Filling} text means breaking it up into lines that fit a
389 specified width. Emacs does filling in two ways. In Auto Fill mode,
390 inserting text with self-inserting characters also automatically fills
391 it. There are also explicit fill commands that you can use when editing
392 text leaves it unfilled. When you edit formatted text, you can specify
393 a style of filling for each portion of the text (@pxref{Formatted
394 Text}).
395
396 @menu
397 * Auto Fill:: Auto Fill mode breaks long lines automatically.
398 * Refill:: Keeping paragraphs filled.
399 * Fill Commands:: Commands to refill paragraphs and center lines.
400 * Fill Prefix:: Filling paragraphs that are indented
401 or in a comment, etc.
402 * Adaptive Fill:: How Emacs can determine the fill prefix automatically.
403 @end menu
404
405 @node Auto Fill
406 @subsection Auto Fill Mode
407 @cindex Auto Fill mode
408 @cindex mode, Auto Fill
409 @cindex word wrap
410
411 @dfn{Auto Fill} mode is a minor mode in which lines are broken
412 automatically when they become too wide. Breaking happens only when
413 you type a @key{SPC} or @key{RET}.
414
415 @table @kbd
416 @item M-x auto-fill-mode
417 Enable or disable Auto Fill mode.
418 @item @key{SPC}
419 @itemx @key{RET}
420 In Auto Fill mode, break lines when appropriate.
421 @end table
422
423 @findex auto-fill-mode
424 @kbd{M-x auto-fill-mode} turns Auto Fill mode on if it was off, or off
425 if it was on. With a positive numeric argument it always turns Auto
426 Fill mode on, and with a negative argument always turns it off. You can
427 see when Auto Fill mode is in effect by the presence of the word
428 @samp{Fill} in the mode line, inside the parentheses. Auto Fill mode is
429 a minor mode which is enabled or disabled for each buffer individually.
430 @xref{Minor Modes}.
431
432 In Auto Fill mode, lines are broken automatically at spaces when they
433 get longer than the desired width. Line breaking and rearrangement
434 takes place only when you type @key{SPC} or @key{RET}. If you wish to
435 insert a space or newline without permitting line-breaking, type
436 @kbd{C-q @key{SPC}} or @kbd{C-q C-j} (recall that a newline is really a
437 control-J). Also, @kbd{C-o} inserts a newline without line breaking.
438
439 Auto Fill mode works well with programming-language modes, because it
440 indents new lines with @key{TAB}. If a line ending in a comment gets
441 too long, the text of the comment is split into two comment lines.
442 Optionally, new comment delimiters are inserted at the end of the first
443 line and the beginning of the second so that each line is a separate
444 comment; the variable @code{comment-multi-line} controls the choice
445 (@pxref{Comments}).
446
447 Adaptive filling (@pxref{Adaptive Fill}) works for Auto Filling as
448 well as for explicit fill commands. It takes a fill prefix
449 automatically from the second or first line of a paragraph.
450
451 Auto Fill mode does not refill entire paragraphs; it can break lines but
452 cannot merge lines. So editing in the middle of a paragraph can result in
453 a paragraph that is not correctly filled. The easiest way to make the
454 paragraph properly filled again is usually with the explicit fill commands.
455 @ifinfo
456 @xref{Fill Commands}.
457 @end ifinfo
458
459 Many users like Auto Fill mode and want to use it in all text files.
460 The section on init files says how to arrange this permanently for yourself.
461 @xref{Init File}.
462
463 @node Refill
464 @subsection Refill Mode
465 @cindex refilling text, word processor style
466 @cindex modes, Refill
467 @cindex Refill minor mode
468
469 Refill minor mode provides support for keeping paragraphs filled as
470 you type or modify them in other ways. It provides an effect similar
471 to typical word processor behavior. This works by running a
472 paragraph-filling command at suitable times.
473
474 When you are typing text, only characters which normally trigger
475 auto filling, like the space character, will trigger refilling. This
476 is to avoid making it too slow. Apart from self-inserting characters,
477 other commands which modify the text cause refilling.
478
479 The current implementation is preliminary and probably not robust.
480 We expect to improve on it.
481
482 To toggle the use of Refill mode in the current buffer, type
483 @kbd{M-x refill-mode}.
484
485 @node Fill Commands
486 @subsection Explicit Fill Commands
487
488 @table @kbd
489 @item M-q
490 Fill current paragraph (@code{fill-paragraph}).
491 @item C-x f
492 Set the fill column (@code{set-fill-column}).
493 @item M-x fill-region
494 Fill each paragraph in the region (@code{fill-region}).
495 @item M-x fill-region-as-paragraph
496 Fill the region, considering it as one paragraph.
497 @item M-s
498 Center a line.
499 @end table
500
501 @kindex M-q
502 @findex fill-paragraph
503 To refill a paragraph, use the command @kbd{M-q}
504 (@code{fill-paragraph}). This operates on the paragraph that point is
505 inside, or the one after point if point is between paragraphs.
506 Refilling works by removing all the line-breaks, then inserting new ones
507 where necessary.
508
509 @findex fill-region
510 To refill many paragraphs, use @kbd{M-x fill-region}, which
511 divides the region into paragraphs and fills each of them.
512
513 @findex fill-region-as-paragraph
514 @kbd{M-q} and @code{fill-region} use the same criteria as @kbd{M-h}
515 for finding paragraph boundaries (@pxref{Paragraphs}). For more
516 control, you can use @kbd{M-x fill-region-as-paragraph}, which refills
517 everything between point and mark. This command deletes any blank lines
518 within the region, so separate blocks of text end up combined into one
519 block.@refill
520
521 @cindex justification
522 A numeric argument to @kbd{M-q} causes it to @dfn{justify} the text as
523 well as filling it. This means that extra spaces are inserted to make
524 the right margin line up exactly at the fill column. To remove the
525 extra spaces, use @kbd{M-q} with no argument. (Likewise for
526 @code{fill-region}.) Another way to control justification, and choose
527 other styles of filling, is with the @code{justification} text property;
528 see @ref{Format Justification}.
529
530 @kindex M-s @r{(Text mode)}
531 @cindex centering
532 @findex center-line
533 The command @kbd{M-s} (@code{center-line}) centers the current line
534 within the current fill column. With an argument @var{n}, it centers
535 @var{n} lines individually and moves past them.
536
537 @vindex fill-column
538 @kindex C-x f
539 @findex set-fill-column
540 The maximum line width for filling is in the variable
541 @code{fill-column}. Altering the value of @code{fill-column} makes it
542 local to the current buffer; until that time, the default value is in
543 effect. The default is initially 70. @xref{Locals}. The easiest way
544 to set @code{fill-column} is to use the command @kbd{C-x f}
545 (@code{set-fill-column}). With a numeric argument, it uses that as the
546 new fill column. With just @kbd{C-u} as argument, it sets
547 @code{fill-column} to the current horizontal position of point.
548
549 Emacs commands normally consider a period followed by two spaces or by
550 a newline as the end of a sentence; a period followed by just one space
551 indicates an abbreviation and not the end of a sentence. To preserve
552 the distinction between these two ways of using a period, the fill
553 commands do not break a line after a period followed by just one space.
554
555 @vindex sentence-end-double-space
556 If the variable @code{sentence-end-double-space} is @code{nil}, the
557 fill commands expect and leave just one space at the end of a sentence.
558 Ordinarily this variable is @code{t}, so the fill commands insist on
559 two spaces for the end of a sentence, as explained above. @xref{Sentences}.
560
561 @vindex colon-double-space
562 If the variable @code{colon-double-space} is non-@code{nil}, the
563 fill commands put two spaces after a colon.
564
565 @vindex sentence-end-without-period
566 Some languages do not use period to indicate end of sentence. For
567 example, a sentence in Thai text ends with double space but without a
568 period. Set the variable @code{sentence-end-without-period} to
569 @code{t} to tell the sentence commands that a period is not necessary.
570
571 @vindex fill-nobreak-predicate
572 The variable @code{fill-nobreak-predicate} specifies additional
573 conditions for where line-breaking is allowed. Its value is either
574 @code{nil} or a Lisp function; the function is called with no
575 arguments, and if it returns a non-@code{nil} value, then point is not
576 a good place to break the line. The standard functions you can use
577 @code{fill-single-word-nobreak-p} (don't break after the first word of
578 a sentence or before the last) and @code{fill-french-nobreak-p} (don't
579 break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}).
580
581 @node Fill Prefix
582 @subsection The Fill Prefix
583
584 @cindex fill prefix
585 To fill a paragraph in which each line starts with a special marker
586 (which might be a few spaces, giving an indented paragraph), you can use
587 the @dfn{fill prefix} feature. The fill prefix is a string that Emacs
588 expects every line to start with, and which is not included in filling.
589 You can specify a fill prefix explicitly; Emacs can also deduce the
590 fill prefix automatically (@pxref{Adaptive Fill}).
591
592 @table @kbd
593 @item C-x .
594 Set the fill prefix (@code{set-fill-prefix}).
595 @item M-q
596 Fill a paragraph using current fill prefix (@code{fill-paragraph}).
597 @item M-x fill-individual-paragraphs
598 Fill the region, considering each change of indentation as starting a
599 new paragraph.
600 @item M-x fill-nonuniform-paragraphs
601 Fill the region, considering only paragraph-separator lines as starting
602 a new paragraph.
603 @end table
604
605 @kindex C-x .
606 @findex set-fill-prefix
607 To specify a fill prefix, move to a line that starts with the desired
608 prefix, put point at the end of the prefix, and give the command
609 @w{@kbd{C-x .}}@: (@code{set-fill-prefix}). That's a period after the
610 @kbd{C-x}. To turn off the fill prefix, specify an empty prefix: type
611 @w{@kbd{C-x .}}@: with point at the beginning of a line.@refill
612
613 When a fill prefix is in effect, the fill commands remove the fill
614 prefix from each line before filling and insert it on each line after
615 filling. Auto Fill mode also inserts the fill prefix automatically when
616 it makes a new line. The @kbd{C-o} command inserts the fill prefix on
617 new lines it creates, when you use it at the beginning of a line
618 (@pxref{Blank Lines}). Conversely, the command @kbd{M-^} deletes the
619 prefix (if it occurs) after the newline that it deletes
620 (@pxref{Indentation}).
621
622 For example, if @code{fill-column} is 40 and you set the fill prefix
623 to @samp{;; }, then @kbd{M-q} in the following text
624
625 @example
626 ;; This is an
627 ;; example of a paragraph
628 ;; inside a Lisp-style comment.
629 @end example
630
631 @noindent
632 produces this:
633
634 @example
635 ;; This is an example of a paragraph
636 ;; inside a Lisp-style comment.
637 @end example
638
639 Lines that do not start with the fill prefix are considered to start
640 paragraphs, both in @kbd{M-q} and the paragraph commands; this gives
641 good results for paragraphs with hanging indentation (every line
642 indented except the first one). Lines which are blank or indented once
643 the prefix is removed also separate or start paragraphs; this is what
644 you want if you are writing multi-paragraph comments with a comment
645 delimiter on each line.
646
647 @findex fill-individual-paragraphs
648 You can use @kbd{M-x fill-individual-paragraphs} to set the fill
649 prefix for each paragraph automatically. This command divides the
650 region into paragraphs, treating every change in the amount of
651 indentation as the start of a new paragraph, and fills each of these
652 paragraphs. Thus, all the lines in one ``paragraph'' have the same
653 amount of indentation. That indentation serves as the fill prefix for
654 that paragraph.
655
656 @findex fill-nonuniform-paragraphs
657 @kbd{M-x fill-nonuniform-paragraphs} is a similar command that divides
658 the region into paragraphs in a different way. It considers only
659 paragraph-separating lines (as defined by @code{paragraph-separate}) as
660 starting a new paragraph. Since this means that the lines of one
661 paragraph may have different amounts of indentation, the fill prefix
662 used is the smallest amount of indentation of any of the lines of the
663 paragraph. This gives good results with styles that indent a paragraph's
664 first line more or less that the rest of the paragraph.
665
666 @vindex fill-prefix
667 The fill prefix is stored in the variable @code{fill-prefix}. Its value
668 is a string, or @code{nil} when there is no fill prefix. This is a
669 per-buffer variable; altering the variable affects only the current buffer,
670 but there is a default value which you can change as well. @xref{Locals}.
671
672 The @code{indentation} text property provides another way to control
673 the amount of indentation paragraphs receive. @xref{Format Indentation}.
674
675 @node Adaptive Fill
676 @subsection Adaptive Filling
677
678 @cindex adaptive filling
679 The fill commands can deduce the proper fill prefix for a paragraph
680 automatically in certain cases: either whitespace or certain punctuation
681 characters at the beginning of a line are propagated to all lines of the
682 paragraph.
683
684 If the paragraph has two or more lines, the fill prefix is taken from
685 the paragraph's second line, but only if it appears on the first line as
686 well.
687
688 If a paragraph has just one line, fill commands @emph{may} take a
689 prefix from that line. The decision is complicated because there are
690 three reasonable things to do in such a case:
691
692 @itemize @bullet
693 @item
694 Use the first line's prefix on all the lines of the paragraph.
695
696 @item
697 Indent subsequent lines with whitespace, so that they line up under the
698 text that follows the prefix on the first line, but don't actually copy
699 the prefix from the first line.
700
701 @item
702 Don't do anything special with the second and following lines.
703 @end itemize
704
705 All three of these styles of formatting are commonly used. So the
706 fill commands try to determine what you would like, based on the prefix
707 that appears and on the major mode. Here is how.
708
709 @vindex adaptive-fill-first-line-regexp
710 If the prefix found on the first line matches
711 @code{adaptive-fill-first-line-regexp}, or if it appears to be a
712 comment-starting sequence (this depends on the major mode), then the
713 prefix found is used for filling the paragraph, provided it would not
714 act as a paragraph starter on subsequent lines.
715
716 Otherwise, the prefix found is converted to an equivalent number of
717 spaces, and those spaces are used as the fill prefix for the rest of the
718 lines, provided they would not act as a paragraph starter on subsequent
719 lines.
720
721 In Text mode, and other modes where only blank lines and page
722 delimiters separate paragraphs, the prefix chosen by adaptive filling
723 never acts as a paragraph starter, so it can always be used for filling.
724
725 @vindex adaptive-fill-mode
726 @vindex adaptive-fill-regexp
727 The variable @code{adaptive-fill-regexp} determines what kinds of line
728 beginnings can serve as a fill prefix: any characters at the start of
729 the line that match this regular expression are used. If you set the
730 variable @code{adaptive-fill-mode} to @code{nil}, the fill prefix is
731 never chosen automatically.
732
733 @vindex adaptive-fill-function
734 You can specify more complex ways of choosing a fill prefix
735 automatically by setting the variable @code{adaptive-fill-function} to a
736 function. This function is called with point after the left margin of a
737 line, and it should return the appropriate fill prefix based on that
738 line. If it returns @code{nil}, that means it sees no fill prefix in
739 that line.
740
741 @node Case
742 @section Case Conversion Commands
743 @cindex case conversion
744
745 Emacs has commands for converting either a single word or any arbitrary
746 range of text to upper case or to lower case.
747
748 @table @kbd
749 @item M-l
750 Convert following word to lower case (@code{downcase-word}).
751 @item M-u
752 Convert following word to upper case (@code{upcase-word}).
753 @item M-c
754 Capitalize the following word (@code{capitalize-word}).
755 @item C-x C-l
756 Convert region to lower case (@code{downcase-region}).
757 @item C-x C-u
758 Convert region to upper case (@code{upcase-region}).
759 @end table
760
761 @kindex M-l
762 @kindex M-u
763 @kindex M-c
764 @cindex words, case conversion
765 @cindex converting text to upper or lower case
766 @cindex capitalizing words
767 @findex downcase-word
768 @findex upcase-word
769 @findex capitalize-word
770 The word conversion commands are the most useful. @kbd{M-l}
771 (@code{downcase-word}) converts the word after point to lower case, moving
772 past it. Thus, repeating @kbd{M-l} converts successive words.
773 @kbd{M-u} (@code{upcase-word}) converts to all capitals instead, while
774 @kbd{M-c} (@code{capitalize-word}) puts the first letter of the word
775 into upper case and the rest into lower case. All these commands convert
776 several words at once if given an argument. They are especially convenient
777 for converting a large amount of text from all upper case to mixed case,
778 because you can move through the text using @kbd{M-l}, @kbd{M-u} or
779 @kbd{M-c} on each word as appropriate, occasionally using @kbd{M-f} instead
780 to skip a word.
781
782 When given a negative argument, the word case conversion commands apply
783 to the appropriate number of words before point, but do not move point.
784 This is convenient when you have just typed a word in the wrong case: you
785 can give the case conversion command and continue typing.
786
787 If a word case conversion command is given in the middle of a word, it
788 applies only to the part of the word which follows point. This is just
789 like what @kbd{M-d} (@code{kill-word}) does. With a negative argument,
790 case conversion applies only to the part of the word before point.
791
792 @kindex C-x C-l
793 @kindex C-x C-u
794 @findex downcase-region
795 @findex upcase-region
796 The other case conversion commands are @kbd{C-x C-u}
797 (@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which
798 convert everything between point and mark to the specified case. Point and
799 mark do not move.
800
801 The region case conversion commands @code{upcase-region} and
802 @code{downcase-region} are normally disabled. This means that they ask
803 for confirmation if you try to use them. When you confirm, you may
804 enable the command, which means it will not ask for confirmation again.
805 @xref{Disabling}.
806
807 @node Text Mode
808 @section Text Mode
809 @cindex Text mode
810 @cindex mode, Text
811 @findex text-mode
812
813 When you edit files of text in a human language, it's more convenient
814 to use Text mode rather than Fundamental mode. To enter Text mode, type
815 @kbd{M-x text-mode}.
816
817 In Text mode, only blank lines and page delimiters separate
818 paragraphs. As a result, paragraphs can be indented, and adaptive
819 filling determines what indentation to use when filling a paragraph.
820 @xref{Adaptive Fill}.
821
822 @kindex TAB @r{(Text mode)}
823 Text mode defines @key{TAB} to run @code{indent-relative}
824 (@pxref{Indentation}), so that you can conveniently indent a line like
825 the previous line. When the previous line is not indented,
826 @code{indent-relative} runs @code{tab-to-tab-stop}, which uses Emacs tab
827 stops that you can set (@pxref{Tab Stops}).
828
829 Text mode turns off the features concerned with comments except when
830 you explicitly invoke them. It changes the syntax table so that periods
831 are not considered part of a word, while apostrophes, backspaces and
832 underlines are considered part of words.
833
834 @cindex Paragraph-Indent Text mode
835 @cindex mode, Paragraph-Indent Text
836 @findex paragraph-indent-text-mode
837 @findex paragraph-indent-minor-mode
838 If you indent the first lines of paragraphs, then you should use
839 Paragraph-Indent Text mode rather than Text mode. In this mode, you do
840 not need to have blank lines between paragraphs, because the first-line
841 indentation is sufficient to start a paragraph; however paragraphs in
842 which every line is indented are not supported. Use @kbd{M-x
843 paragraph-indent-text-mode} to enter this mode. Use @kbd{M-x
844 paragraph-indent-minor-mode} to enter an equivalent minor mode, for
845 instance during mail composition.
846
847 @kindex M-TAB @r{(Text mode)}
848 Text mode, and all the modes based on it, define @kbd{M-@key{TAB}} as
849 the command @code{ispell-complete-word}, which performs completion of
850 the partial word in the buffer before point, using the spelling
851 dictionary as the space of possible words. @xref{Spelling}.
852
853 @vindex text-mode-hook
854 Entering Text mode runs the hook @code{text-mode-hook}. Other major
855 modes related to Text mode also run this hook, followed by hooks of
856 their own; this includes Paragraph-Indent Text mode, Nroff mode, @TeX{}
857 mode, Outline mode, and Mail mode. Hook functions on
858 @code{text-mode-hook} can look at the value of @code{major-mode} to see
859 which of these modes is actually being entered. @xref{Hooks}.
860
861 @ifinfo
862 Emacs provides two other modes for editing text that is to be passed
863 through a text formatter to produce fancy formatted printed output.
864 @xref{Nroff Mode}, for editing input to the formatter nroff.
865 @xref{TeX Mode}, for editing input to the formatter TeX.
866
867 Another mode is used for editing outlines. It allows you to view the
868 text at various levels of detail. You can view either the outline
869 headings alone or both headings and text; you can also hide some of the
870 headings at lower levels from view to make the high level structure more
871 visible. @xref{Outline Mode}.
872 @end ifinfo
873
874 @node Outline Mode
875 @section Outline Mode
876 @cindex Outline mode
877 @cindex mode, Outline
878 @cindex invisible lines
879
880 @findex outline-mode
881 @findex outline-minor-mode
882 @vindex outline-minor-mode-prefix
883 Outline mode is a major mode much like Text mode but intended for
884 editing outlines. It allows you to make parts of the text temporarily
885 invisible so that you can see the outline structure. Type @kbd{M-x
886 outline-mode} to switch to Outline mode as the major mode of the current
887 buffer.
888
889 When Outline mode makes a line invisible, the line does not appear on
890 the screen. The screen appears exactly as if the invisible line were
891 deleted, except that an ellipsis (three periods in a row) appears at the
892 end of the previous visible line (only one ellipsis no matter how many
893 invisible lines follow).
894
895 Editing commands that operate on lines, such as @kbd{C-n} and
896 @kbd{C-p}, treat the text of the invisible line as part of the previous
897 visible line. Killing an entire visible line, including its terminating
898 newline, really kills all the following invisible lines along with it.
899
900 Outline minor mode provides the same commands as the major mode,
901 Outline mode, but you can use it in conjunction with other major modes.
902 Type @kbd{M-x outline-minor-mode} to enable the Outline minor mode in
903 the current buffer. You can also specify this in the text of a file,
904 with a file local variable of the form @samp{mode: outline-minor}
905 (@pxref{File Variables}).
906
907 @kindex C-c @@ @r{(Outline minor mode)}
908 The major mode, Outline mode, provides special key bindings on the
909 @kbd{C-c} prefix. Outline minor mode provides similar bindings with
910 @kbd{C-c @@} as the prefix; this is to reduce the conflicts with the
911 major mode's special commands. (The variable
912 @code{outline-minor-mode-prefix} controls the prefix used.)
913
914 @vindex outline-mode-hook
915 Entering Outline mode runs the hook @code{text-mode-hook} followed by
916 the hook @code{outline-mode-hook} (@pxref{Hooks}).
917
918 @menu
919 * Format: Outline Format. What the text of an outline looks like.
920 * Motion: Outline Motion. Special commands for moving through
921 outlines.
922 * Visibility: Outline Visibility. Commands to control what is visible.
923 * Views: Outline Views. Outlines and multiple views.
924 * Foldout:: Folding editing.
925 @end menu
926
927 @node Outline Format
928 @subsection Format of Outlines
929
930 @cindex heading lines (Outline mode)
931 @cindex body lines (Outline mode)
932 Outline mode assumes that the lines in the buffer are of two types:
933 @dfn{heading lines} and @dfn{body lines}. A heading line represents a
934 topic in the outline. Heading lines start with one or more stars; the
935 number of stars determines the depth of the heading in the outline
936 structure. Thus, a heading line with one star is a major topic; all the
937 heading lines with two stars between it and the next one-star heading
938 are its subtopics; and so on. Any line that is not a heading line is a
939 body line. Body lines belong with the preceding heading line. Here is
940 an example:
941
942 @example
943 * Food
944 This is the body,
945 which says something about the topic of food.
946
947 ** Delicious Food
948 This is the body of the second-level header.
949
950 ** Distasteful Food
951 This could have
952 a body too, with
953 several lines.
954
955 *** Dormitory Food
956
957 * Shelter
958 Another first-level topic with its header line.
959 @end example
960
961 A heading line together with all following body lines is called
962 collectively an @dfn{entry}. A heading line together with all following
963 deeper heading lines and their body lines is called a @dfn{subtree}.
964
965 @vindex outline-regexp
966 You can customize the criterion for distinguishing heading lines
967 by setting the variable @code{outline-regexp}. Any line whose
968 beginning has a match for this regexp is considered a heading line.
969 Matches that start within a line (not at the left margin) do not count.
970 The length of the matching text determines the level of the heading;
971 longer matches make a more deeply nested level. Thus, for example,
972 if a text formatter has commands @samp{@@chapter}, @samp{@@section}
973 and @samp{@@subsection} to divide the document into chapters and
974 sections, you could make those lines count as heading lines by
975 setting @code{outline-regexp} to @samp{"@@chap\\|@@\\(sub\\)*section"}.
976 Note the trick: the two words @samp{chapter} and @samp{section} are equally
977 long, but by defining the regexp to match only @samp{chap} we ensure
978 that the length of the text matched on a chapter heading is shorter,
979 so that Outline mode will know that sections are contained in chapters.
980 This works as long as no other command starts with @samp{@@chap}.
981
982 @vindex outline-level
983 You can change the rule for calculating the level of a heading line
984 by setting the variable @code{outline-level}. The value of
985 @code{outline-level} should be a function that takes no arguments and
986 returns the level of the current heading. Some major modes such as C,
987 Nroff, and Emacs Lisp mode set this variable and @code{outline-regexp}
988 in order to work with Outline minor mode.
989
990 @node Outline Motion
991 @subsection Outline Motion Commands
992
993 Outline mode provides special motion commands that move backward and
994 forward to heading lines.
995
996 @table @kbd
997 @item C-c C-n
998 Move point to the next visible heading line
999 (@code{outline-next-visible-heading}).
1000 @item C-c C-p
1001 Move point to the previous visible heading line
1002 (@code{outline-previous-visible-heading}).
1003 @item C-c C-f
1004 Move point to the next visible heading line at the same level
1005 as the one point is on (@code{outline-forward-same-level}).
1006 @item C-c C-b
1007 Move point to the previous visible heading line at the same level
1008 (@code{outline-backward-same-level}).
1009 @item C-c C-u
1010 Move point up to a lower-level (more inclusive) visible heading line
1011 (@code{outline-up-heading}).
1012 @end table
1013
1014 @findex outline-next-visible-heading
1015 @findex outline-previous-visible-heading
1016 @kindex C-c C-n @r{(Outline mode)}
1017 @kindex C-c C-p @r{(Outline mode)}
1018 @kbd{C-c C-n} (@code{outline-next-visible-heading}) moves down to the next
1019 heading line. @kbd{C-c C-p} (@code{outline-previous-visible-heading}) moves
1020 similarly backward. Both accept numeric arguments as repeat counts. The
1021 names emphasize that invisible headings are skipped, but this is not really
1022 a special feature. All editing commands that look for lines ignore the
1023 invisible lines automatically.@refill
1024
1025 @findex outline-up-heading
1026 @findex outline-forward-same-level
1027 @findex outline-backward-same-level
1028 @kindex C-c C-f @r{(Outline mode)}
1029 @kindex C-c C-b @r{(Outline mode)}
1030 @kindex C-c C-u @r{(Outline mode)}
1031 More powerful motion commands understand the level structure of headings.
1032 @kbd{C-c C-f} (@code{outline-forward-same-level}) and
1033 @kbd{C-c C-b} (@code{outline-backward-same-level}) move from one
1034 heading line to another visible heading at the same depth in
1035 the outline. @kbd{C-c C-u} (@code{outline-up-heading}) moves
1036 backward to another heading that is less deeply nested.
1037
1038 @node Outline Visibility
1039 @subsection Outline Visibility Commands
1040
1041 The other special commands of outline mode are used to make lines visible
1042 or invisible. Their names all start with @code{hide} or @code{show}.
1043 Most of them fall into pairs of opposites. They are not undoable; instead,
1044 you can undo right past them. Making lines visible or invisible is simply
1045 not recorded by the undo mechanism.
1046
1047 @table @kbd
1048 @item C-c C-t
1049 Make all body lines in the buffer invisible (@code{hide-body}).
1050 @item C-c C-a
1051 Make all lines in the buffer visible (@code{show-all}).
1052 @item C-c C-d
1053 Make everything under this heading invisible, not including this
1054 heading itself (@code{hide-subtree}).
1055 @item C-c C-s
1056 Make everything under this heading visible, including body,
1057 subheadings, and their bodies (@code{show-subtree}).
1058 @item C-c C-l
1059 Make the body of this heading line, and of all its subheadings,
1060 invisible (@code{hide-leaves}).
1061 @item C-c C-k
1062 Make all subheadings of this heading line, at all levels, visible
1063 (@code{show-branches}).
1064 @item C-c C-i
1065 Make immediate subheadings (one level down) of this heading line
1066 visible (@code{show-children}).
1067 @item C-c C-c
1068 Make this heading line's body invisible (@code{hide-entry}).
1069 @item C-c C-e
1070 Make this heading line's body visible (@code{show-entry}).
1071 @item C-c C-q
1072 Hide everything except the top @var{n} levels of heading lines
1073 (@code{hide-sublevels}).
1074 @item C-c C-o
1075 Hide everything except for the heading or body that point is in, plus
1076 the headings leading up from there to the top level of the outline
1077 (@code{hide-other}).
1078 @end table
1079
1080 @findex hide-entry
1081 @findex show-entry
1082 @kindex C-c C-c @r{(Outline mode)}
1083 @kindex C-c C-e @r{(Outline mode)}
1084 Two commands that are exact opposites are @kbd{C-c C-c}
1085 (@code{hide-entry}) and @kbd{C-c C-e} (@code{show-entry}). They are
1086 used with point on a heading line, and apply only to the body lines of
1087 that heading. Subheadings and their bodies are not affected.
1088
1089 @findex hide-subtree
1090 @findex show-subtree
1091 @kindex C-c C-s @r{(Outline mode)}
1092 @kindex C-c C-d @r{(Outline mode)}
1093 @cindex subtree (Outline mode)
1094 Two more powerful opposites are @kbd{C-c C-d} (@code{hide-subtree}) and
1095 @kbd{C-c C-s} (@code{show-subtree}). Both expect to be used when point is
1096 on a heading line, and both apply to all the lines of that heading's
1097 @dfn{subtree}: its body, all its subheadings, both direct and indirect, and
1098 all of their bodies. In other words, the subtree contains everything
1099 following this heading line, up to and not including the next heading of
1100 the same or higher rank.@refill
1101
1102 @findex hide-leaves
1103 @findex show-branches
1104 @kindex C-c C-l @r{(Outline mode)}
1105 @kindex C-c C-k @r{(Outline mode)}
1106 Intermediate between a visible subtree and an invisible one is having
1107 all the subheadings visible but none of the body. There are two
1108 commands for doing this, depending on whether you want to hide the
1109 bodies or make the subheadings visible. They are @kbd{C-c C-l}
1110 (@code{hide-leaves}) and @kbd{C-c C-k} (@code{show-branches}).
1111
1112 @kindex C-c C-i @r{(Outline mode)}
1113 @findex show-children
1114 A little weaker than @code{show-branches} is @kbd{C-c C-i}
1115 (@code{show-children}). It makes just the direct subheadings
1116 visible---those one level down. Deeper subheadings remain invisible, if
1117 they were invisible.@refill
1118
1119 @findex hide-body
1120 @findex show-all
1121 @kindex C-c C-t @r{(Outline mode)}
1122 @kindex C-c C-a @r{(Outline mode)}
1123 Two commands have a blanket effect on the whole file. @kbd{C-c C-t}
1124 (@code{hide-body}) makes all body lines invisible, so that you see just
1125 the outline structure. @kbd{C-c C-a} (@code{show-all}) makes all lines
1126 visible. These commands can be thought of as a pair of opposites even
1127 though @kbd{C-c C-a} applies to more than just body lines.
1128
1129 @findex hide-sublevels
1130 @kindex C-c C-q @r{(Outline mode)}
1131 The command @kbd{C-c C-q} (@code{hide-sublevels}) hides all but the
1132 top level headings. With a numeric argument @var{n}, it hides everything
1133 except the top @var{n} levels of heading lines.
1134
1135 @findex hide-other
1136 @kindex C-c C-o @r{(Outline mode)}
1137 The command @kbd{C-c C-o} (@code{hide-other}) hides everything except
1138 the heading or body text that point is in, plus its parents (the headers
1139 leading up from there to top level in the outline).
1140
1141 You can turn off the use of ellipses at the ends of visible lines by
1142 setting @code{selective-display-ellipses} to @code{nil}. Then there is
1143 no visible indication of the presence of invisible lines.
1144
1145 @findex reveal-mode
1146 When incremental search finds text that is hidden by Outline mode,
1147 it makes that part of the buffer visible. If you exit the search
1148 at that position, the text remains visible. You can also
1149 automatically make text visible as you navigate in it by using
1150 @kbd{M-x reveal-mode}.
1151
1152 @node Outline Views
1153 @subsection Viewing One Outline in Multiple Views
1154
1155 @cindex multiple views of outline
1156 @cindex views of an outline
1157 @cindex outline with multiple views
1158 @cindex indirect buffers and outlines
1159 You can display two views of a single outline at the same time, in
1160 different windows. To do this, you must create an indirect buffer using
1161 @kbd{M-x make-indirect-buffer}. The first argument of this command is
1162 the existing outline buffer name, and its second argument is the name to
1163 use for the new indirect buffer. @xref{Indirect Buffers}.
1164
1165 Once the indirect buffer exists, you can display it in a window in the
1166 normal fashion, with @kbd{C-x 4 b} or other Emacs commands. The Outline
1167 mode commands to show and hide parts of the text operate on each buffer
1168 independently; as a result, each buffer can have its own view. If you
1169 want more than two views on the same outline, create additional indirect
1170 buffers.
1171
1172 @node Foldout
1173 @subsection Folding Editing
1174
1175 @cindex folding editing
1176 The Foldout package extends Outline mode and Outline minor mode with
1177 ``folding'' commands. The idea of folding is that you zoom in on a
1178 nested portion of the outline, while hiding its relatives at higher
1179 levels.
1180
1181 Consider an Outline mode buffer all the text and subheadings under
1182 level-1 headings hidden. To look at what is hidden under one of these
1183 headings, you could use @kbd{C-c C-e} (@kbd{M-x show-entry}) to expose
1184 the body, or @kbd{C-c C-i} to expose the child (level-2) headings.
1185
1186 @kindex C-c C-z
1187 @findex foldout-zoom-subtree
1188 With Foldout, you use @kbd{C-c C-z} (@kbd{M-x foldout-zoom-subtree}).
1189 This exposes the body and child subheadings, and narrows the buffer so
1190 that only the @w{level-1} heading, the body and the level-2 headings are
1191 visible. Now to look under one of the level-2 headings, position the
1192 cursor on it and use @kbd{C-c C-z} again. This exposes the level-2 body
1193 and its level-3 child subheadings and narrows the buffer again. Zooming
1194 in on successive subheadings can be done as much as you like. A string
1195 in the mode line shows how deep you've gone.
1196
1197 When zooming in on a heading, to see only the child subheadings specify
1198 a numeric argument: @kbd{C-u C-c C-z}. The number of levels of children
1199 can be specified too (compare @kbd{M-x show-children}), e.g.@: @kbd{M-2
1200 C-c C-z} exposes two levels of child subheadings. Alternatively, the
1201 body can be specified with a negative argument: @kbd{M-- C-c C-z}. The
1202 whole subtree can be expanded, similarly to @kbd{C-c C-s} (@kbd{M-x
1203 show-subtree}), by specifying a zero argument: @kbd{M-0 C-c C-z}.
1204
1205 While you're zoomed in, you can still use Outline mode's exposure and
1206 hiding functions without disturbing Foldout. Also, since the buffer is
1207 narrowed, ``global'' editing actions will only affect text under the
1208 zoomed-in heading. This is useful for restricting changes to a
1209 particular chapter or section of your document.
1210
1211 @kindex C-c C-x
1212 @findex foldout-exit-fold
1213 To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}).
1214 This hides all the text and subheadings under the top-level heading and
1215 returns you to the previous view of the buffer. Specifying a numeric
1216 argument exits that many levels of folds. Specifying a zero argument exits all
1217 folds.
1218
1219 To cancel the narrowing of a fold without hiding the text and
1220 subheadings, specify a negative argument. For example, @kbd{M--2 C-c
1221 C-x} exits two folds and leaves the text and subheadings exposed.
1222
1223 Foldout mode also provides mouse commands for entering and exiting
1224 folds, and for showing and hiding text:
1225
1226 @table @asis
1227 @item @kbd{C-M-Mouse-1} zooms in on the heading clicked on
1228 @itemize @asis
1229 @item
1230 single click: expose body.
1231 @item
1232 double click: expose subheadings.
1233 @item
1234 triple click: expose body and subheadings.
1235 @item
1236 quad click: expose entire subtree.
1237 @end itemize
1238 @item @kbd{C-M-Mouse-2} exposes text under the heading clicked on
1239 @itemize @asis
1240 @item
1241 single click: expose body.
1242 @item
1243 double click: expose subheadings.
1244 @item
1245 triple click: expose body and subheadings.
1246 @item
1247 quad click: expose entire subtree.
1248 @end itemize
1249 @item @kbd{C-M-Mouse-3} hides text under the heading clicked on or exits fold
1250 @itemize @asis
1251 @item
1252 single click: hide subtree.
1253 @item
1254 double click: exit fold and hide text.
1255 @item
1256 triple click: exit fold without hiding text.
1257 @item
1258 quad click: exit all folds and hide text.
1259 @end itemize
1260 @end table
1261
1262 @vindex foldout-mouse-modifiers
1263 You can specify different modifier keys (instead of
1264 @kbd{Control-Meta-}) by setting @code{foldout-mouse-modifiers}; but if
1265 you have already loaded the @file{foldout.el} library, you must reload
1266 it in order for this to take effect.
1267
1268 To use the Foldout package, you can type @kbd{M-x load-library
1269 @key{RET} foldout @key{RET}}; or you can arrange for to do that
1270 automatically by putting this in your @file{.emacs} file:
1271
1272 @example
1273 (eval-after-load "outline" '(require 'foldout))
1274 @end example
1275
1276 @node TeX Mode
1277 @section @TeX{} Mode
1278 @cindex @TeX{} mode
1279 @cindex La@TeX{} mode
1280 @cindex Sli@TeX{} mode
1281 @cindex mode, @TeX{}
1282 @cindex mode, La@TeX{}
1283 @cindex mode, Sli@TeX{}
1284 @findex tex-mode
1285 @findex plain-tex-mode
1286 @findex latex-mode
1287 @findex slitex-mode
1288
1289 @TeX{} is a powerful text formatter written by Donald Knuth; it is also
1290 free, like GNU Emacs. La@TeX{} is a simplified input format for @TeX{},
1291 implemented by @TeX{} macros; it comes with @TeX{}. Sli@TeX{} is a special
1292 form of La@TeX{}.@footnote{Sli@TeX{} is obsoleted by the @samp{slides}
1293 document class in recent La@TeX{} versions.}
1294
1295 Emacs has a special @TeX{} mode for editing @TeX{} input files.
1296 It provides facilities for checking the balance of delimiters and for
1297 invoking @TeX{} on all or part of the file.
1298
1299 @vindex tex-default-mode
1300 @TeX{} mode has three variants, Plain @TeX{} mode, La@TeX{} mode, and
1301 Sli@TeX{} mode (these three distinct major modes differ only slightly).
1302 They are designed for editing the three different formats. The command
1303 @kbd{M-x tex-mode} looks at the contents of the buffer to determine
1304 whether the contents appear to be either La@TeX{} input or Sli@TeX{}
1305 input; if so, it selects the appropriate mode. If the file contents do
1306 not appear to be La@TeX{} or Sli@TeX{}, it selects Plain @TeX{} mode.
1307 If the contents are insufficient to determine this, the variable
1308 @code{tex-default-mode} controls which mode is used.
1309
1310 When @kbd{M-x tex-mode} does not guess right, you can use the commands
1311 @kbd{M-x plain-tex-mode}, @kbd{M-x latex-mode}, and @kbd{M-x
1312 slitex-mode} to select explicitly the particular variants of @TeX{}
1313 mode.
1314
1315 @menu
1316 * Editing: TeX Editing. Special commands for editing in TeX mode.
1317 * LaTeX: LaTeX Editing. Additional commands for LaTeX input files.
1318 * Printing: TeX Print. Commands for printing part of a file with TeX.
1319 * Misc: TeX Misc. Customization of TeX mode, and related features.
1320 @end menu
1321
1322 @node TeX Editing
1323 @subsection @TeX{} Editing Commands
1324
1325 Here are the special commands provided in @TeX{} mode for editing the
1326 text of the file.
1327
1328 @table @kbd
1329 @item "
1330 Insert, according to context, either @samp{``} or @samp{"} or
1331 @samp{''} (@code{tex-insert-quote}).
1332 @item C-j
1333 Insert a paragraph break (two newlines) and check the previous
1334 paragraph for unbalanced braces or dollar signs
1335 (@code{tex-terminate-paragraph}).
1336 @item M-x tex-validate-region
1337 Check each paragraph in the region for unbalanced braces or dollar signs.
1338 @item C-c @{
1339 Insert @samp{@{@}} and position point between them (@code{tex-insert-braces}).
1340 @item C-c @}
1341 Move forward past the next unmatched close brace (@code{up-list}).
1342 @end table
1343
1344 @findex tex-insert-quote
1345 @kindex " @r{(@TeX{} mode)}
1346 In @TeX{}, the character @samp{"} is not normally used; we use
1347 @samp{``} to start a quotation and @samp{''} to end one. To make
1348 editing easier under this formatting convention, @TeX{} mode overrides
1349 the normal meaning of the key @kbd{"} with a command that inserts a pair
1350 of single-quotes or backquotes (@code{tex-insert-quote}). To be
1351 precise, this command inserts @samp{``} after whitespace or an open
1352 brace, @samp{"} after a backslash, and @samp{''} after any other
1353 character.
1354
1355 If you need the character @samp{"} itself in unusual contexts, use
1356 @kbd{C-q} to insert it. Also, @kbd{"} with a numeric argument always
1357 inserts that number of @samp{"} characters. You can turn off the
1358 feature of @kbd{"} expansion by eliminating that binding in the local
1359 map (@pxref{Key Bindings}).
1360
1361 In @TeX{} mode, @samp{$} has a special syntax code which attempts to
1362 understand the way @TeX{} math mode delimiters match. When you insert a
1363 @samp{$} that is meant to exit math mode, the position of the matching
1364 @samp{$} that entered math mode is displayed for a second. This is the
1365 same feature that displays the open brace that matches a close brace that
1366 is inserted. However, there is no way to tell whether a @samp{$} enters
1367 math mode or leaves it; so when you insert a @samp{$} that enters math
1368 mode, the previous @samp{$} position is shown as if it were a match, even
1369 though they are actually unrelated.
1370
1371 @findex tex-insert-braces
1372 @kindex C-c @{ @r{(@TeX{} mode)}
1373 @findex up-list
1374 @kindex C-c @} @r{(@TeX{} mode)}
1375 @TeX{} uses braces as delimiters that must match. Some users prefer
1376 to keep braces balanced at all times, rather than inserting them
1377 singly. Use @kbd{C-c @{} (@code{tex-insert-braces}) to insert a pair of
1378 braces. It leaves point between the two braces so you can insert the
1379 text that belongs inside. Afterward, use the command @kbd{C-c @}}
1380 (@code{up-list}) to move forward past the close brace.
1381
1382 @findex tex-validate-region
1383 @findex tex-terminate-paragraph
1384 @kindex C-j @r{(@TeX{} mode)}
1385 There are two commands for checking the matching of braces. @kbd{C-j}
1386 (@code{tex-terminate-paragraph}) checks the paragraph before point, and
1387 inserts two newlines to start a new paragraph. It outputs a message in
1388 the echo area if any mismatch is found. @kbd{M-x tex-validate-region}
1389 checks a region, paragraph by paragraph. The errors are listed in the
1390 @samp{*Occur*} buffer, and you can use @kbd{C-c C-c} or @kbd{Mouse-2} in
1391 that buffer to go to a particular mismatch.
1392
1393 Note that Emacs commands count square brackets and parentheses in
1394 @TeX{} mode, not just braces. This is not strictly correct for the
1395 purpose of checking @TeX{} syntax. However, parentheses and square
1396 brackets are likely to be used in text as matching delimiters and it is
1397 useful for the various motion commands and automatic match display to
1398 work with them.
1399
1400 @node LaTeX Editing
1401 @subsection La@TeX{} Editing Commands
1402
1403 La@TeX{} mode, and its variant, Sli@TeX{} mode, provide a few extra
1404 features not applicable to plain @TeX{}.
1405
1406 @table @kbd
1407 @item C-c C-o
1408 Insert @samp{\begin} and @samp{\end} for La@TeX{} block and position
1409 point on a line between them (@code{tex-latex-block}).
1410 @item C-c C-e
1411 Close the innermost La@TeX{} block not yet closed
1412 (@code{tex-close-latex-block}).
1413 @end table
1414
1415 @findex tex-latex-block
1416 @kindex C-c C-o @r{(La@TeX{} mode)}
1417 @vindex latex-block-names
1418 In La@TeX{} input, @samp{\begin} and @samp{\end} commands are used to
1419 group blocks of text. To insert a @samp{\begin} and a matching
1420 @samp{\end} (on a new line following the @samp{\begin}), use @kbd{C-c
1421 C-o} (@code{tex-latex-block}). A blank line is inserted between the
1422 two, and point is left there. You can use completion when you enter the
1423 block type; to specify additional block type names beyond the standard
1424 list, set the variable @code{latex-block-names}. For example, here's
1425 how to add @samp{theorem}, @samp{corollary}, and @samp{proof}:
1426
1427 @example
1428 (setq latex-block-names '("theorem" "corollary" "proof"))
1429 @end example
1430
1431 @findex tex-close-latex-block
1432 @kindex C-c C-e @r{(La@TeX{} mode)}
1433 In La@TeX{} input, @samp{\begin} and @samp{\end} commands must
1434 balance. You can use @kbd{C-c C-e} (@code{tex-close-latex-block}) to
1435 insert automatically a matching @samp{\end} to match the last unmatched
1436 @samp{\begin}. It indents the @samp{\end} to match the corresponding
1437 @samp{\begin}. It inserts a newline after @samp{\end} if point is at
1438 the beginning of a line.
1439
1440 @node TeX Print
1441 @subsection @TeX{} Printing Commands
1442
1443 You can invoke @TeX{} as an inferior of Emacs on either the entire
1444 contents of the buffer or just a region at a time. Running @TeX{} in
1445 this way on just one chapter is a good way to see what your changes
1446 look like without taking the time to format the entire file.
1447
1448 @table @kbd
1449 @item C-c C-r
1450 Invoke @TeX{} on the current region, together with the buffer's header
1451 (@code{tex-region}).
1452 @item C-c C-b
1453 Invoke @TeX{} on the entire current buffer (@code{tex-buffer}).
1454 @item C-c @key{TAB}
1455 Invoke Bib@TeX{} on the current file (@code{tex-bibtex-file}).
1456 @item C-c C-f
1457 Invoke @TeX{} on the current file (@code{tex-file}).
1458 @item C-c C-l
1459 Recenter the window showing output from the inferior @TeX{} so that
1460 the last line can be seen (@code{tex-recenter-output-buffer}).
1461 @item C-c C-k
1462 Kill the @TeX{} subprocess (@code{tex-kill-job}).
1463 @item C-c C-p
1464 Print the output from the last @kbd{C-c C-r}, @kbd{C-c C-b}, or @kbd{C-c
1465 C-f} command (@code{tex-print}).
1466 @item C-c C-v
1467 Preview the output from the last @kbd{C-c C-r}, @kbd{C-c C-b}, or @kbd{C-c
1468 C-f} command (@code{tex-view}).
1469 @item C-c C-q
1470 Show the printer queue (@code{tex-show-print-queue}).
1471 @end table
1472
1473 @findex tex-buffer
1474 @kindex C-c C-b @r{(@TeX{} mode)}
1475 @findex tex-print
1476 @kindex C-c C-p @r{(@TeX{} mode)}
1477 @findex tex-view
1478 @kindex C-c C-v @r{(@TeX{} mode)}
1479 @findex tex-show-print-queue
1480 @kindex C-c C-q @r{(@TeX{} mode)}
1481 You can pass the current buffer through an inferior @TeX{} by means of
1482 @kbd{C-c C-b} (@code{tex-buffer}). The formatted output appears in a
1483 temporary file; to print it, type @kbd{C-c C-p} (@code{tex-print}).
1484 Afterward, you can use @kbd{C-c C-q} (@code{tex-show-print-queue}) to
1485 view the progress of your output towards being printed. If your terminal
1486 has the ability to display @TeX{} output files, you can preview the
1487 output on the terminal with @kbd{C-c C-v} (@code{tex-view}).
1488
1489 @cindex @env{TEXINPUTS} environment variable
1490 @vindex tex-directory
1491 You can specify the directory to use for running @TeX{} by setting the
1492 variable @code{tex-directory}. @code{"."} is the default value. If
1493 your environment variable @env{TEXINPUTS} contains relative directory
1494 names, or if your files contains @samp{\input} commands with relative
1495 file names, then @code{tex-directory} @emph{must} be @code{"."} or you
1496 will get the wrong results. Otherwise, it is safe to specify some other
1497 directory, such as @code{"/tmp"}.
1498
1499 @vindex tex-run-command
1500 @vindex latex-run-command
1501 @vindex slitex-run-command
1502 @vindex tex-dvi-print-command
1503 @vindex tex-dvi-view-command
1504 @vindex tex-show-queue-command
1505 If you want to specify which shell commands are used in the inferior @TeX{},
1506 you can do so by setting the values of the variables @code{tex-run-command},
1507 @code{latex-run-command}, @code{slitex-run-command},
1508 @code{tex-dvi-print-command}, @code{tex-dvi-view-command}, and
1509 @code{tex-show-queue-command}. You @emph{must} set the value of
1510 @code{tex-dvi-view-command} for your particular terminal; this variable
1511 has no default value. The other variables have default values that may
1512 (or may not) be appropriate for your system.
1513
1514 Normally, the file name given to these commands comes at the end of
1515 the command string; for example, @samp{latex @var{filename}}. In some
1516 cases, however, the file name needs to be embedded in the command; an
1517 example is when you need to provide the file name as an argument to one
1518 command whose output is piped to another. You can specify where to put
1519 the file name with @samp{*} in the command string. For example,
1520
1521 @example
1522 (setq tex-dvi-print-command "dvips -f * | lpr")
1523 @end example
1524
1525 @findex tex-kill-job
1526 @kindex C-c C-k @r{(@TeX{} mode)}
1527 @findex tex-recenter-output-buffer
1528 @kindex C-c C-l @r{(@TeX{} mode)}
1529 The terminal output from @TeX{}, including any error messages, appears
1530 in a buffer called @samp{*tex-shell*}. If @TeX{} gets an error, you can
1531 switch to this buffer and feed it input (this works as in Shell mode;
1532 @pxref{Interactive Shell}). Without switching to this buffer you can
1533 scroll it so that its last line is visible by typing @kbd{C-c
1534 C-l}.
1535
1536 Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if
1537 you see that its output is no longer useful. Using @kbd{C-c C-b} or
1538 @kbd{C-c C-r} also kills any @TeX{} process still running.@refill
1539
1540 @findex tex-region
1541 @kindex C-c C-r @r{(@TeX{} mode)}
1542 You can also pass an arbitrary region through an inferior @TeX{} by typing
1543 @kbd{C-c C-r} (@code{tex-region}). This is tricky, however, because most files
1544 of @TeX{} input contain commands at the beginning to set parameters and
1545 define macros, without which no later part of the file will format
1546 correctly. To solve this problem, @kbd{C-c C-r} allows you to designate a
1547 part of the file as containing essential commands; it is included before
1548 the specified region as part of the input to @TeX{}. The designated part
1549 of the file is called the @dfn{header}.
1550
1551 @cindex header (@TeX{} mode)
1552 To indicate the bounds of the header in Plain @TeX{} mode, you insert two
1553 special strings in the file. Insert @samp{%**start of header} before the
1554 header, and @samp{%**end of header} after it. Each string must appear
1555 entirely on one line, but there may be other text on the line before or
1556 after. The lines containing the two strings are included in the header.
1557 If @samp{%**start of header} does not appear within the first 100 lines of
1558 the buffer, @kbd{C-c C-r} assumes that there is no header.
1559
1560 In La@TeX{} mode, the header begins with @samp{\documentclass} or
1561 @samp{\documentstyle} and ends with @samp{\begin@{document@}}. These
1562 are commands that La@TeX{} requires you to use in any case, so nothing
1563 special needs to be done to identify the header.
1564
1565 @findex tex-file
1566 @kindex C-c C-f @r{(@TeX{} mode)}
1567 The commands (@code{tex-buffer}) and (@code{tex-region}) do all of their
1568 work in a temporary directory, and do not have available any of the auxiliary
1569 files needed by @TeX{} for cross-references; these commands are generally
1570 not suitable for running the final copy in which all of the cross-references
1571 need to be correct.
1572
1573 When you want the auxiliary files for cross references, use @kbd{C-c
1574 C-f} (@code{tex-file}) which runs @TeX{} on the current buffer's file,
1575 in that file's directory. Before running @TeX{}, it offers to save any
1576 modified buffers. Generally, you need to use (@code{tex-file}) twice to
1577 get the cross-references right.
1578
1579 @vindex tex-start-options
1580 The value of the variable @code{tex-start-options} specifies
1581 options for the @TeX{} run.
1582
1583 @vindex tex-start-commands
1584 The value of the variable @code{tex-start-commands} specifies @TeX{}
1585 commands for starting @TeX{}. The default value causes @TeX{} to run
1586 in nonstop mode. To run @TeX{} interactively, set the variable to
1587 @code{""}.
1588
1589 @vindex tex-main-file
1590 Large @TeX{} documents are often split into several files---one main
1591 file, plus subfiles. Running @TeX{} on a subfile typically does not
1592 work; you have to run it on the main file. In order to make
1593 @code{tex-file} useful when you are editing a subfile, you can set the
1594 variable @code{tex-main-file} to the name of the main file. Then
1595 @code{tex-file} runs @TeX{} on that file.
1596
1597 The most convenient way to use @code{tex-main-file} is to specify it
1598 in a local variable list in each of the subfiles. @xref{File
1599 Variables}.
1600
1601 @findex tex-bibtex-file
1602 @kindex C-c TAB @r{(@TeX{} mode)}
1603 @vindex tex-bibtex-command
1604 For La@TeX{} files, you can use Bib@TeX{} to process the auxiliary
1605 file for the current buffer's file. Bib@TeX{} looks up bibliographic
1606 citations in a data base and prepares the cited references for the
1607 bibliography section. The command @kbd{C-c TAB}
1608 (@code{tex-bibtex-file}) runs the shell command
1609 (@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the
1610 current buffer's file. Generally, you need to do @kbd{C-c C-f}
1611 (@code{tex-file}) once to generate the @samp{.aux} file, then do
1612 @kbd{C-c TAB} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
1613 (@code{tex-file}) twice more to get the cross-references correct.
1614
1615 @node TeX Misc
1616 @subsection @TeX{} Mode Miscellany
1617
1618 @vindex tex-shell-hook
1619 @vindex tex-mode-hook
1620 @vindex latex-mode-hook
1621 @vindex slitex-mode-hook
1622 @vindex plain-tex-mode-hook
1623 Entering any variant of @TeX{} mode runs the hooks
1624 @code{text-mode-hook} and @code{tex-mode-hook}. Then it runs either
1625 @code{plain-tex-mode-hook}, @code{latex-mode-hook}, or
1626 @code{slitex-mode-hook}, whichever is appropriate. Starting the
1627 @TeX{} shell runs the hook @code{tex-shell-hook}. @xref{Hooks}.
1628
1629 @findex iso-iso2tex
1630 @findex iso-tex2iso
1631 @findex iso-iso2gtex
1632 @findex iso-gtex2iso
1633 @cindex Latin-1 @TeX{} encoding
1634 @TeX{} encoding
1635 The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
1636 iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert
1637 between Latin-1 encoded files and @TeX{}-encoded equivalents.
1638 @ignore
1639 @c Too cryptic to be useful, too cryptic for me to make it better -- rms.
1640 They
1641 are included by default in the @code{format-alist} variable, so they
1642 can be used with @kbd{M-x format-find-file}, for instance.
1643 @end ignore
1644
1645 @ignore @c Not worth documenting if it is only for Czech -- rms.
1646 @findex tildify-buffer
1647 @findex tildify-region
1648 @cindex ties, @TeX{}, inserting
1649 @cindex hard spaces, @TeX{}, inserting
1650 The commands @kbd{M-x tildify-buffer} and @kbd{M-x tildify-region}
1651 insert @samp{~} (@dfn{tie}) characters where they are conventionally
1652 required. This is set up for Czech---customize the group
1653 @samp{tildify} for other languages or for other sorts of markup.
1654 @end ignore
1655
1656 @cindex Ref@TeX{} package
1657 @cindex references, La@TeX{}
1658 @cindex La@TeX{} references
1659 For managing all kinds of references for La@TeX{}, you can use
1660 Ref@TeX{}. @xref{Top, , RefTeX, reftex}.
1661
1662 @node HTML Mode
1663 @section SGML, XML, and HTML Modes
1664
1665 The major modes for SGML and HTML include indentation support and
1666 commands to operate on tags. This section describes the special
1667 commands of these modes. (HTML mode is a slightly customized variant
1668 of SGML mode.)
1669
1670 @table @kbd
1671 @item C-c C-n
1672 @kindex C-c C-n @r{(SGML mode)}
1673 @findex sgml-name-char
1674 Interactively specify a special character and insert the SGML
1675 @samp{&}-command for that character.
1676
1677 @item C-c C-t
1678 @kindex C-c C-t @r{(SGML mode)}
1679 @findex sgml-tag
1680 Interactively specify a tag and its attributes (@code{sgml-tag}).
1681 This command asks you for a tag name and for the attribute values,
1682 then inserts both the opening tag and the closing tag, leaving point
1683 between them.
1684
1685 With a prefix argument @var{n}, the command puts the tag around the
1686 @var{n} words already present in the buffer after point. With
1687 @minus{}1 as argument, it puts the tag around the region. (In
1688 Transient Mark mode, it does this whenever a region is active.)
1689
1690 @item C-c C-a
1691 @kindex C-c C-a @r{(SGML mode)}
1692 @findex sgml-attributes
1693 Interactively insert attribute values for the current tag
1694 (@code{sgml-attributes}).
1695
1696 @item C-c C-f
1697 @kindex C-c C-f @r{(SGML mode)}
1698 @findex sgml-skip-tag-forward
1699 Skip across a balanced tag group (which extends from an opening tag
1700 through its corresponding closing tag) (@code{sgml-skip-tag-forward}).
1701 A numeric argument acts as a repeat count.
1702
1703 @item C-c C-b
1704 @kindex C-c C-b @r{(SGML mode)}
1705 @findex sgml-skip-tag-backward
1706 Skip backward across a balanced tag group (which extends from an
1707 opening tag through its corresponding closing tag)
1708 (@code{sgml-skip-tag-forward}). A numeric argument acts as a repeat
1709 count.
1710
1711 @item C-c C-d
1712 @kindex C-c C-d @r{(SGML mode)}
1713 @findex sgml-delete-tag
1714 Delete the tag at or after point, and delete the matching tag too
1715 (@code{sgml-delete-tag}). If the tag at or after point is an opening
1716 tag, delete the closing tag too; if it is a closing tag, delete the
1717 opening tag too.
1718
1719 @item C-c ? @var{tag} @key{RET}
1720 @kindex C-c ? @r{(SGML mode)}
1721 @findex sgml-tag-help
1722 Display a description of the meaning of tag @var{tag}
1723 (@code{sgml-tag-help}). If the argument @var{tag} is empty, describe
1724 the tag at point.
1725
1726 @item C-c /
1727 @kindex C-c / @r{(SGML mode)}
1728 @findex sgml-close-tag
1729 Insert a close tag for the innermost unterminated tag
1730 (@code{sgml-close-tag}). If called from within a tag or a comment,
1731 close this element instead of inserting a close tag.
1732
1733 @item C-c 8
1734 @kindex C-c 8 @r{(SGML mode)}
1735 @findex sgml-name-8bit-mode
1736 Toggle a minor mode in which Latin-1 characters insert the
1737 corresponding SGML commands that stand for them, instead of the
1738 characters themselves (@code{sgml-name-8bit-mode}).
1739
1740 @item C-c C-v
1741 @kindex C-c C-v @r{(SGML mode)}
1742 @findex sgml-validate
1743 Run a shell command (which you must specify) to validate the current
1744 buffer as SGML (@code{sgml-validate}).
1745
1746 @item C-x TAB
1747 @kindex C-c TAB @r{(SGML mode)}
1748 @findex sgml-tags-invisible
1749 Toggle the visibility of existing tags in the buffer. This can be
1750 used as a cheap preview.
1751 @end table
1752
1753 @vindex sgml-xml-mode
1754 SGML mode and HTML mode support XML also. In XML, every opening tag
1755 must have an explicit closing tag. When @code{sgml-xml-mode} is
1756 non-@code{nil}, SGML mode (and HTML mode) always insert explicit
1757 closing tags. When you visit a file, these modes determine from the
1758 file contents whether it is XML or not, and set @code{sgml-xml-mode}
1759 accordingly, so that they do the right thing for the file in either
1760 case.
1761
1762 @node Nroff Mode
1763 @section Nroff Mode
1764
1765 @cindex nroff
1766 @findex nroff-mode
1767 Nroff mode is a mode like Text mode but modified to handle nroff commands
1768 present in the text. Invoke @kbd{M-x nroff-mode} to enter this mode. It
1769 differs from Text mode in only a few ways. All nroff command lines are
1770 considered paragraph separators, so that filling will never garble the
1771 nroff commands. Pages are separated by @samp{.bp} commands. Comments
1772 start with backslash-doublequote. Also, three special commands are
1773 provided that are not in Text mode:
1774
1775 @findex forward-text-line
1776 @findex backward-text-line
1777 @findex count-text-lines
1778 @kindex M-n @r{(Nroff mode)}
1779 @kindex M-p @r{(Nroff mode)}
1780 @kindex M-? @r{(Nroff mode)}
1781 @table @kbd
1782 @item M-n
1783 Move to the beginning of the next line that isn't an nroff command
1784 (@code{forward-text-line}). An argument is a repeat count.
1785 @item M-p
1786 Like @kbd{M-n} but move up (@code{backward-text-line}).
1787 @item M-?
1788 Displays in the echo area the number of text lines (lines that are not
1789 nroff commands) in the region (@code{count-text-lines}).
1790 @end table
1791
1792 @findex electric-nroff-mode
1793 The other feature of Nroff mode is that you can turn on Electric Nroff
1794 mode. This is a minor mode that you can turn on or off with @kbd{M-x
1795 electric-nroff-mode} (@pxref{Minor Modes}). When the mode is on, each
1796 time you use @key{RET} to end a line that contains an nroff command that
1797 opens a kind of grouping, the matching nroff command to close that
1798 grouping is automatically inserted on the following line. For example,
1799 if you are at the beginning of a line and type @kbd{.@: ( b @key{RET}},
1800 this inserts the matching command @samp{.)b} on a new line following
1801 point.
1802
1803 If you use Outline minor mode with Nroff mode (@pxref{Outline Mode}),
1804 heading lines are lines of the form @samp{.H} followed by a number (the
1805 header level).
1806
1807 @vindex nroff-mode-hook
1808 Entering Nroff mode runs the hook @code{text-mode-hook}, followed by
1809 the hook @code{nroff-mode-hook} (@pxref{Hooks}).
1810
1811 @node Formatted Text
1812 @section Editing Formatted Text
1813
1814 @cindex Enriched mode
1815 @cindex mode, Enriched
1816 @cindex formatted text
1817 @cindex WYSIWYG
1818 @cindex word processing
1819 @dfn{Enriched mode} is a minor mode for editing files that contain
1820 formatted text in WYSIWYG fashion, as in a word processor. Currently,
1821 formatted text in Enriched mode can specify fonts, colors, underlining,
1822 margins, and types of filling and justification. In the future, we plan
1823 to implement other formatting features as well.
1824
1825 Enriched mode is a minor mode (@pxref{Minor Modes}). It is
1826 typically used in conjunction with Text mode (@pxref{Text Mode}), but
1827 you can also use it with other major modes such as Outline mode and
1828 Paragraph-Indent Text mode.
1829
1830 @cindex text/enriched MIME format
1831 Potentially, Emacs can store formatted text files in various file
1832 formats. Currently, only one format is implemented: @dfn{text/enriched}
1833 format, which is defined by the MIME protocol. @xref{Format
1834 Conversion,, Format Conversion, elisp, the Emacs Lisp Reference Manual},
1835 for details of how Emacs recognizes and converts file formats.
1836
1837 The Emacs distribution contains a formatted text file that can serve as
1838 an example. Its name is @file{etc/enriched.doc}. It contains samples
1839 illustrating all the features described in this section. It also
1840 contains a list of ideas for future enhancements.
1841
1842 @menu
1843 * Requesting Formatted Text:: Entering and exiting Enriched mode.
1844 * Hard and Soft Newlines:: There are two different kinds of newlines.
1845 * Editing Format Info:: How to edit text properties.
1846 * Faces: Format Faces. Bold, italic, underline, etc.
1847 * Color: Format Colors. Changing the color of text.
1848 * Indent: Format Indentation. Changing the left and right margins.
1849 * Justification: Format Justification.
1850 Centering, setting text flush with the
1851 left or right margin, etc.
1852 * Other: Format Properties. The "special" text properties submenu.
1853 * Forcing Enriched Mode:: How to force use of Enriched mode.
1854 @end menu
1855
1856 @node Requesting Formatted Text
1857 @subsection Requesting to Edit Formatted Text
1858
1859 Whenever you visit a file that Emacs saved in the text/enriched
1860 format, Emacs automatically converts the formatting information in the
1861 file into Emacs's own internal format (known as @dfn{text
1862 properties}), and turns on Enriched mode.
1863
1864 @findex enriched-mode
1865 To create a new file of formatted text, first visit the nonexistent
1866 file, then type @kbd{M-x enriched-mode} before you start inserting text.
1867 This command turns on Enriched mode. Do this before you begin inserting
1868 text, to ensure that the text you insert is handled properly.
1869
1870 More generally, the command @code{enriched-mode} turns Enriched mode
1871 on if it was off, and off if it was on. With a prefix argument, this
1872 command turns Enriched mode on if the argument is positive, and turns
1873 the mode off otherwise.
1874
1875 When you save a buffer while Enriched mode is enabled in it, Emacs
1876 automatically converts the text to text/enriched format while writing it
1877 into the file. When you visit the file again, Emacs will automatically
1878 recognize the format, reconvert the text, and turn on Enriched mode
1879 again.
1880
1881 @vindex enriched-fill-after-visiting
1882 Normally, after visiting a file in text/enriched format, Emacs refills
1883 each paragraph to fit the specified right margin. You can turn off this
1884 refilling, to save time, by setting the variable
1885 @code{enriched-fill-after-visiting} to @code{nil} or to @code{ask}.
1886
1887 However, when visiting a file that was saved from Enriched mode, there
1888 is no need for refilling, because Emacs saves the right margin settings
1889 along with the text.
1890
1891 @vindex enriched-translations
1892 You can add annotations for saving additional text properties, which
1893 Emacs normally does not save, by adding to @code{enriched-translations}.
1894 Note that the text/enriched standard requires any non-standard
1895 annotations to have names starting with @samp{x-}, as in
1896 @samp{x-read-only}. This ensures that they will not conflict with
1897 standard annotations that may be added later.
1898
1899 @xref{Text Properties,,, elisp, the Emacs Lisp Reference Manual},
1900 for more information about text properties.
1901
1902 @node Hard and Soft Newlines
1903 @subsection Hard and Soft Newlines
1904 @cindex hard newline
1905 @cindex soft newline
1906 @cindex newlines, hard and soft
1907
1908 In formatted text, Emacs distinguishes between two different kinds of
1909 newlines, @dfn{hard} newlines and @dfn{soft} newlines.
1910
1911 Hard newlines are used to separate paragraphs, or items in a list, or
1912 anywhere that there should always be a line break regardless of the
1913 margins. The @key{RET} command (@code{newline}) and @kbd{C-o}
1914 (@code{open-line}) insert hard newlines.
1915
1916 Soft newlines are used to make text fit between the margins. All the
1917 fill commands, including Auto Fill, insert soft newlines---and they
1918 delete only soft newlines.
1919
1920 Although hard and soft newlines look the same, it is important to bear
1921 the difference in mind. Do not use @key{RET} to break lines in the
1922 middle of filled paragraphs, or else you will get hard newlines that are
1923 barriers to further filling. Instead, let Auto Fill mode break lines,
1924 so that if the text or the margins change, Emacs can refill the lines
1925 properly. @xref{Auto Fill}.
1926
1927 On the other hand, in tables and lists, where the lines should always
1928 remain as you type them, you can use @key{RET} to end lines. For these
1929 lines, you may also want to set the justification style to
1930 @code{unfilled}. @xref{Format Justification}.
1931
1932 @node Editing Format Info
1933 @subsection Editing Format Information
1934
1935 There are two ways to alter the formatting information for a formatted
1936 text file: with keyboard commands, and with the mouse.
1937
1938 The easiest way to add properties to your document is with the Text
1939 Properties menu. You can get to this menu in two ways: from the Edit
1940 menu in the menu bar (use @kbd{@key{F10} e t} if you have no mouse),
1941 or with @kbd{C-Mouse-2} (hold the @key{CTRL} key and press the middle
1942 mouse button). There are also keyboard commands described in the
1943 following section.
1944
1945 Most of the items in the Text Properties menu lead to other submenus.
1946 These are described in the sections that follow. Some items run
1947 commands directly:
1948
1949 @table @code
1950 @findex facemenu-remove-face-props
1951 @item Remove Face Properties
1952 Delete from the region all the text properties that the Text Properties
1953 menu works with (@code{facemenu-remove-face-props}).
1954
1955 @findex facemenu-remove-all
1956 @item Remove All
1957 Delete @emph{all} text properties from the region
1958 (@code{facemenu-remove-all}).
1959
1960 @findex describe-text-at
1961 @cindex text properties of characters
1962 @cindex overlays at character position
1963 @cindex widgets at buffer position
1964 @cindex buttons at buffer position
1965 @item Describe Text
1966 List all the text properties, widgets, buttons, and overlays of the
1967 character following point (@code{describe-text-at}).
1968
1969 @item Display Faces
1970 Display a list of all the defined faces (@code{list-faces-display}).
1971
1972 @item Display Colors
1973 Display a list of all the defined colors (@code{list-colors-display}).
1974 @end table
1975
1976 @node Format Faces
1977 @subsection Faces in Formatted Text
1978
1979 The Faces submenu lists various Emacs faces including @code{bold},
1980 @code{italic}, and @code{underline}. Selecting one of these adds the
1981 chosen face to the region. @xref{Faces}. You can also specify a face
1982 with these keyboard commands:
1983
1984 @table @kbd
1985 @kindex M-g d @r{(Enriched mode)}
1986 @findex facemenu-set-default
1987 @item M-g d
1988 Set the region, or the next inserted character, to the @code{default} face
1989 (@code{facemenu-set-default}).
1990 @kindex M-g b @r{(Enriched mode)}
1991 @findex facemenu-set-bold
1992 @item M-g b
1993 Set the region, or the next inserted character, to the @code{bold} face
1994 (@code{facemenu-set-bold}).
1995 @kindex M-g i @r{(Enriched mode)}
1996 @findex facemenu-set-italic
1997 @item M-g i
1998 Set the region, or the next inserted character, to the @code{italic} face
1999 (@code{facemenu-set-italic}).
2000 @kindex M-g l @r{(Enriched mode)}
2001 @findex facemenu-set-bold-italic
2002 @item M-g l
2003 Set the region, or the next inserted character, to the @code{bold-italic} face
2004 (@code{facemenu-set-bold-italic}).
2005 @kindex M-g u @r{(Enriched mode)}
2006 @findex facemenu-set-underline
2007 @item M-g u
2008 Set the region, or the next inserted character, to the @code{underline} face
2009 (@code{facemenu-set-underline}).
2010 @kindex M-g o @r{(Enriched mode)}
2011 @findex facemenu-set-face
2012 @item M-g o @var{face} @key{RET}
2013 Set the region, or the next inserted character, to the face @var{face}
2014 (@code{facemenu-set-face}).
2015 @end table
2016
2017 If you use these commands with a prefix argument---or, in Transient Mark
2018 mode, if the region is not active---then these commands specify a face
2019 to use for your next self-inserting input. @xref{Transient Mark}. This
2020 applies to both the keyboard commands and the menu commands.
2021
2022 Enriched mode defines two additional faces: @code{excerpt} and
2023 @code{fixed}. These correspond to codes used in the text/enriched file
2024 format.
2025
2026 The @code{excerpt} face is intended for quotations. This face is the
2027 same as @code{italic} unless you customize it (@pxref{Face Customization}).
2028
2029 The @code{fixed} face means, ``Use a fixed-width font for this part
2030 of the text.'' This makes a visible difference only if you have
2031 specified a variable-width font in the default face; however, even if
2032 the default font is fixed-width, applying the @code{fixed} face to a
2033 part of the text will cause that part of the text to appear in a
2034 fixed-width font, if the file is ever displayed with a variable-width
2035 default font. This applies to Emacs and to other systems that display
2036 text/enriched format. So if you specifically want a certain part of
2037 the text to use a fixed-width font, you should specify the
2038 @code{fixed} face for that part.
2039
2040 The @code{fixed} face is normally set up to use a different font
2041 from the default, even if the default face is also fixed-width.
2042 Different systems have different fonts installed, so you may need to
2043 customize this. @xref{Face Customization}.
2044
2045 If your terminal cannot display different faces, you will not be
2046 able to see them, but you can still edit documents containing faces,
2047 and even add faces and colors to documents. The faces you specify
2048 will be visible when the file is viewed on a terminal that can display
2049 them.
2050
2051 @node Format Colors
2052 @subsection Colors in Formatted Text
2053
2054 You can specify foreground and background colors for portions of the
2055 text. There is a menu for specifying the foreground color and a menu
2056 for specifying the background color. Each color menu lists all the
2057 colors that you have used in Enriched mode in the current Emacs session.
2058
2059 If you specify a color with a prefix argument---or, in Transient Mark
2060 mode, if the region is not active---then it applies to your next
2061 self-inserting input. @xref{Transient Mark}. Otherwise, the command
2062 applies to the region.
2063
2064 Each color menu contains one additional item: @samp{Other}. You can use
2065 this item to specify a color that is not listed in the menu; it reads
2066 the color name with the minibuffer. To display list of available colors
2067 and their names, use the @samp{Display Colors} menu item in the Text
2068 Properties menu (@pxref{Editing Format Info}).
2069
2070 Any color that you specify in this way, or that is mentioned in a
2071 formatted text file that you read in, is added to both color menus for
2072 the duration of the Emacs session.
2073
2074 @findex facemenu-set-foreground
2075 @findex facemenu-set-background
2076 There are no key bindings for specifying colors, but you can do so
2077 with the extended commands @kbd{M-x facemenu-set-foreground} and
2078 @kbd{M-x facemenu-set-background}. Both of these commands read the name
2079 of the color with the minibuffer.
2080
2081 @node Format Indentation
2082 @subsection Indentation in Formatted Text
2083
2084 When editing formatted text, you can specify different amounts of
2085 indentation for the right or left margin of an entire paragraph or a
2086 part of a paragraph. The margins you specify automatically affect the
2087 Emacs fill commands (@pxref{Filling}) and line-breaking commands.
2088
2089 The Indentation submenu provides a convenient interface for specifying
2090 these properties. The submenu contains four items:
2091
2092 @table @code
2093 @kindex C-x TAB @r{(Enriched mode)}
2094 @findex increase-left-margin
2095 @item Indent More
2096 Indent the region by 4 columns (@code{increase-left-margin}). In
2097 Enriched mode, this command is also available on @kbd{C-x @key{TAB}}; if
2098 you supply a numeric argument, that says how many columns to add to the
2099 margin (a negative argument reduces the number of columns).
2100
2101 @item Indent Less
2102 Remove 4 columns of indentation from the region.
2103
2104 @item Indent Right More
2105 Make the text narrower by indenting 4 columns at the right margin.
2106
2107 @item Indent Right Less
2108 Remove 4 columns of indentation from the right margin.
2109 @end table
2110
2111 You can use these commands repeatedly to increase or decrease the
2112 indentation.
2113
2114 The most common way to use these commands is to change the indentation
2115 of an entire paragraph. However, that is not the only use. You can
2116 change the margins at any point; the new values take effect at the end
2117 of the line (for right margins) or the beginning of the next line (for
2118 left margins).
2119
2120 This makes it possible to format paragraphs with @dfn{hanging indents},
2121 which means that the first line is indented less than subsequent lines.
2122 To set up a hanging indent, increase the indentation of the region
2123 starting after the first word of the paragraph and running until the end
2124 of the paragraph.
2125
2126 Indenting the first line of a paragraph is easier. Set the margin for
2127 the whole paragraph where you want it to be for the body of the
2128 paragraph, then indent the first line by inserting extra spaces or tabs.
2129
2130 Sometimes, as a result of editing, the filling of a paragraph becomes
2131 messed up---parts of the paragraph may extend past the left or right
2132 margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
2133 refill the paragraph.
2134
2135 @vindex standard-indent
2136 The variable @code{standard-indent} specifies how many columns these
2137 commands should add to or subtract from the indentation. The default
2138 value is 4. The overall default right margin for Enriched mode is
2139 controlled by the variable @code{fill-column}, as usual.
2140
2141 The fill prefix, if any, works in addition to the specified paragraph
2142 indentation: @kbd{C-x .} does not include the specified indentation's
2143 whitespace in the new value for the fill prefix, and the fill commands
2144 look for the fill prefix after the indentation on each line. @xref{Fill
2145 Prefix}.
2146
2147 @node Format Justification
2148 @subsection Justification in Formatted Text
2149
2150 When editing formatted text, you can specify various styles of
2151 justification for a paragraph. The style you specify automatically
2152 affects the Emacs fill commands.
2153
2154 The Justification submenu provides a convenient interface for specifying
2155 the style. The submenu contains five items:
2156
2157 @table @code
2158 @item Flush Left
2159 This is the most common style of justification (at least for English).
2160 Lines are aligned at the left margin but left uneven at the right.
2161
2162 @item Flush Right
2163 This aligns each line with the right margin. Spaces and tabs are added
2164 on the left, if necessary, to make lines line up on the right.
2165
2166 @item Full
2167 This justifies the text, aligning both edges of each line. Justified
2168 text looks very nice in a printed book, where the spaces can all be
2169 adjusted equally, but it does not look as nice with a fixed-width font
2170 on the screen. Perhaps a future version of Emacs will be able to adjust
2171 the width of spaces in a line to achieve elegant justification.
2172
2173 @item Center
2174 This centers every line between the current margins.
2175
2176 @item None
2177 This turns off filling entirely. Each line will remain as you wrote it;
2178 the fill and auto-fill functions will have no effect on text which has
2179 this setting. You can, however, still indent the left margin. In
2180 unfilled regions, all newlines are treated as hard newlines (@pxref{Hard
2181 and Soft Newlines}) .
2182 @end table
2183
2184 In Enriched mode, you can also specify justification from the keyboard
2185 using the @kbd{M-j} prefix character:
2186
2187 @table @kbd
2188 @kindex M-j l @r{(Enriched mode)}
2189 @findex set-justification-left
2190 @item M-j l
2191 Make the region left-filled (@code{set-justification-left}).
2192 @kindex M-j r @r{(Enriched mode)}
2193 @findex set-justification-right
2194 @item M-j r
2195 Make the region right-filled (@code{set-justification-right}).
2196 @kindex M-j f @r{(Enriched mode)}
2197 @findex set-justification-full
2198 @item M-j f
2199 Make the region fully-justified (@code{set-justification-full}).
2200 @kindex M-j c @r{(Enriched mode)}
2201 @kindex M-S @r{(Enriched mode)}
2202 @findex set-justification-center
2203 @item M-j c
2204 @itemx M-S
2205 Make the region centered (@code{set-justification-center}).
2206 @kindex M-j u @r{(Enriched mode)}
2207 @findex set-justification-none
2208 @item M-j u
2209 Make the region unfilled (@code{set-justification-none}).
2210 @end table
2211
2212 Justification styles apply to entire paragraphs. All the
2213 justification-changing commands operate on the paragraph containing
2214 point, or, if the region is active, on all paragraphs which overlap the
2215 region.
2216
2217 @vindex default-justification
2218 The default justification style is specified by the variable
2219 @code{default-justification}. Its value should be one of the symbols
2220 @code{left}, @code{right}, @code{full}, @code{center}, or @code{none}.
2221
2222 @node Format Properties
2223 @subsection Setting Other Text Properties
2224
2225 The Other Properties menu lets you add or remove three other useful text
2226 properties: @code{read-only}, @code{invisible} and @code{intangible}.
2227 The @code{intangible} property disallows moving point within the text,
2228 the @code{invisible} text property hides text from display, and the
2229 @code{read-only} property disallows alteration of the text.
2230
2231 Each of these special properties has a menu item to add it to the
2232 region. The last menu item, @samp{Remove Special}, removes all of these
2233 special properties from the text in the region.
2234
2235 Currently, the @code{invisible} and @code{intangible} properties are
2236 @emph{not} saved in the text/enriched format. The @code{read-only}
2237 property is saved, but it is not a standard part of the text/enriched
2238 format, so other editors may not respect it.
2239
2240 @node Forcing Enriched Mode
2241 @subsection Forcing Enriched Mode
2242
2243 Normally, Emacs knows when you are editing formatted text because it
2244 recognizes the special annotations used in the file that you visited.
2245 However, there are situations in which you must take special actions
2246 to convert file contents or turn on Enriched mode:
2247
2248 @itemize @bullet
2249 @item
2250 When you visit a file that was created with some other editor, Emacs may
2251 not recognize the file as being in the text/enriched format. In this
2252 case, when you visit the file you will see the formatting commands
2253 rather than the formatted text. Type @kbd{M-x format-decode-buffer} to
2254 translate it.
2255
2256 @item
2257 When you @emph{insert} a file into a buffer, rather than visiting it.
2258 Emacs does the necessary conversions on the text which you insert, but
2259 it does not enable Enriched mode. If you wish to do that, type @kbd{M-x
2260 enriched-mode}.
2261 @end itemize
2262
2263 The command @code{format-decode-buffer} translates text in various
2264 formats into Emacs's internal format. It asks you to specify the format
2265 to translate from; however, normally you can type just @key{RET}, which
2266 tells Emacs to guess the format.
2267
2268 @findex format-find-file
2269 If you wish to look at text/enriched file in its raw form, as a
2270 sequence of characters rather than as formatted text, use the @kbd{M-x
2271 find-file-literally} command. This visits a file, like
2272 @code{find-file}, but does not do format conversion. It also inhibits
2273 character code conversion (@pxref{Coding Systems}) and automatic
2274 uncompression (@pxref{Compressed Files}). To disable format conversion
2275 but allow character code conversion and/or automatic uncompression if
2276 appropriate, use @code{format-find-file} with suitable arguments.
2277