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