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