![]() |
James Thornton |
| Internet Business Consultant |
| Home | Blog | Bio | Projects | Contact | Latest Blog (new site): How to Get to Genius |
|---|
T. Commands for Human LanguagesThe term text has two widespread meanings in our area of the computer field. One is data that is a sequence of characters. Any file that you edit with Emacs is text, in this sense of the word. The other meaning is more restrictive: a sequence of characters in a human language for humans to read (possibly after processing by a text formatter), as opposed to a program or commands for a program. Human languages have syntactic/stylistic conventions that can be supported or used to advantage by editor commands: conventions involving words, sentences, paragraphs, and capital letters. This chapter describes Emacs commands for all of these things. There are also commands for filling, which means rearranging the lines of a paragraph to be approximately equal in length. The commands for moving over and killing words, sentences and paragraphs, while intended primarily for editing text, are also often useful for editing programs. Emacs has several major modes for editing human-language text. If the file contains text pure and simple, use Text mode, which customizes Emacs in small ways for the syntactic conventions of text. Outline mode provides special commands for operating on text with an outline structure. For text which contains embedded commands for text formatters, Emacs has other major modes, each for a particular text formatter. Thus, for input to TeX, you would use TeX mode. For input to nroff, use Nroff mode. Instead of using a text formatter, you can edit formatted text in WYSIWYG style ("what you see is what you get"), with Enriched mode. Then the formatting appears on the screen in Emacs while you edit. The "automatic typing" features may be useful when writing text. See section `Autotyping' in Features for Automatic Typing.
T.1 WordsEmacs has commands for moving over or operating on words. By convention, the keys for them are all Meta characters.
Notice how these keys form a series that parallels the character-based C-f, C-b, C-d, DEL and C-t. M-@ is cognate to C-@, which is an alias for C-SPC.
The commands M-f (
M-d (
M-DEL (
M-t (
To operate on the next n words with an operation which applies
between point and mark, you can either set the mark at point and then move
over the words, or you can use the command M-@ ( The word commands' understanding of syntax is completely controlled by the syntax table. Any character can, for example, be declared to be a word delimiter. See section AD.6 The Syntax Table.
T.2 SentencesThe Emacs commands for manipulating sentences and paragraphs are mostly on Meta keys, so as to be like the word-handling commands.
The commands M-a and M-e ( Moving backward over a sentence places point just before the first character of the sentence; moving forward places point right after the punctuation that ends the sentence. Neither one moves over the whitespace at the sentence boundary.
Just as C-a and C-e have a kill command, C-k, to go
with them, so M-a and M-e have a corresponding kill command
M-k ( The sentence commands assume that you follow the American typist's convention of putting two spaces at the end of a sentence; they consider a sentence to end wherever there is a `.', `?' or `!' followed by the end of a line or two spaces, with any number of `)', `]', `'', or `"' characters allowed in between. A sentence also begins or ends wherever a paragraph begins or ends.
The variable
This example is explained in the section on regexps. See section K.5 Syntax of Regular Expressions.
If you want to use just one space between sentences, you should
set
You should also set the variable
T.3 ParagraphsThe Emacs commands for manipulating paragraphs are also Meta keys.
M-{ moves to the beginning of the current or previous paragraph, while M-} moves to the end of the current or next paragraph. Blank lines and text-formatter command lines separate paragraphs and are not considered part of any paragraph. In Fundamental mode, but not in Text mode, an indented line also starts a new paragraph. (If a paragraph is preceded by a blank line, these commands treat that blank line as the beginning of the paragraph.) In major modes for programs, paragraphs begin and end only at blank lines. This makes the paragraph commands continue to be useful even though there are no paragraphs per se. When there is a fill prefix, then paragraphs are delimited by all lines which don't start with the fill prefix. See section T.5 Filling Text.
When you wish to operate on a paragraph, you can use the command
M-h (
The precise definition of a paragraph boundary is controlled by the
variables Normally it is desirable for page boundaries to separate paragraphs. The default values of these variables recognize the usual separator for pages.
T.4 PagesFiles are often thought of as divided into pages by the formfeed character (ASCII control-L, octal code 014). When you print hardcopy for a file, this character forces a page break; thus, each page of the file goes on a separate page on paper. Most Emacs commands treat the page-separator character just like any other character: you can insert it with C-q C-l, and delete it with DEL. Thus, you are free to paginate your file or not. However, since pages are often meaningful divisions of the file, Emacs provides commands to move over them and operate on them.
The C-x [ (
The C-x C-p command ( C-x C-p C-w is a handy way to kill a page to move it elsewhere. If you move to another page delimiter with C-x [ and C-x ], then yank the killed page, all the pages will be properly delimited once again. The reason C-x C-p includes only the following page delimiter in the region is to ensure that. A numeric argument to C-x C-p is used to specify which page to go to, relative to the current one. Zero means the current page. One means the next page, and -1 means the previous one.
The C-x l command (
Notice that the sum is off by one; this is correct if point is not at the beginning of a line.
The variable
T.5 Filling TextFilling text means breaking it up into lines that fit a specified width. Emacs does filling in two ways. In Auto Fill mode, inserting text with self-inserting characters also automatically fills it. There are also explicit fill commands that you can use when editing text leaves it unfilled. When you edit formatted text, you can specify a style of filling for each portion of the text (see section T.11 Editing Formatted Text).
T.5.1 Auto Fill ModeAuto Fill mode is a minor mode in which lines are broken automatically when they become too wide. Breaking happens only when you type a SPC or RET.
M-x auto-fill-mode turns Auto Fill mode on if it was off, or off if it was on. With a positive numeric argument it always turns Auto Fill mode on, and with a negative argument always turns it off. You can see when Auto Fill mode is in effect by the presence of the word `Fill' in the mode line, inside the parentheses. Auto Fill mode is a minor mode which is enabled or disabled for each buffer individually. See section AD.1 Minor Modes. In Auto Fill mode, lines are broken automatically at spaces when they get longer than the desired width. Line breaking and rearrangement takes place only when you type SPC or RET. If you wish to insert a space or newline without permitting line-breaking, type C-q SPC or C-q C-j (recall that a newline is really a control-J). Also, C-o inserts a newline without line breaking.
Auto Fill mode works well with programming-language modes, because it
indents new lines with TAB. If a line ending in a comment gets
too long, the text of the comment is split into two comment lines.
Optionally, new comment delimiters are inserted at the end of the first
line and the beginning of the second so that each line is a separate
comment; the variable Adaptive filling (see section T.5.5 Adaptive Filling) works for Auto Filling as well as for explicit fill commands. It takes a fill prefix automatically from the second or first line of a paragraph. Auto Fill mode does not refill entire paragraphs; it can break lines but cannot merge lines. So editing in the middle of a paragraph can result in a paragraph that is not correctly filled. The easiest way to make the paragraph properly filled again is usually with the explicit fill commands. See section T.5.3 Explicit Fill Commands. Many users like Auto Fill mode and want to use it in all text files. The section on init files says how to arrange this permanently for yourself. See section AD.7 The Init File, `~/.emacs'.
T.5.2 Refill ModeRefill minor mode provides support for keeping paragraphs filled as you type or modify them in other ways. It provides an effect similar to typical word processor behavior. This works by running a paragraph-filling command at suitable times. When you are typing text, only characters which normally trigger auto filling, like the space character, will trigger refilling. This is to avoid making it too slow. Apart from self-inserting characters, other commands which modify the text cause refilling. The current implementation is preliminary and probably not robust. We expect to improve on it. To toggle the use of Refill mode in the current buffer, type M-x refill-mode.
T.5.3 Explicit Fill Commands
To refill a paragraph, use the command M-q
( To refill many paragraphs, use M-x fill-region, which divides the region into paragraphs and fills each of them.
M-q and
A numeric argument to M-q causes it to justify the text as
well as filling it. This means that extra spaces are inserted to make
the right margin line up exactly at the fill column. To remove the
extra spaces, use M-q with no argument. (Likewise for
The command M-s (
The maximum line width for filling is in the variable
Emacs commands normally consider a period followed by two spaces or by a newline as the end of a sentence; a period followed by just one space indicates an abbreviation and not the end of a sentence. To preserve the distinction between these two ways of using a period, the fill commands do not break a line after a period followed by just one space.
If the variable
If the variable
Some languages do not use period to indicate end of sentence. For
example, a sentence in Thai text ends with double space but without a
period. Set the variable
T.5.4 The Fill PrefixTo fill a paragraph in which each line starts with a special marker (which might be a few spaces, giving an indented paragraph), you can use the fill prefix feature. The fill prefix is a string that Emacs expects every line to start with, and which is not included in filling. You can specify a fill prefix explicitly; Emacs can also deduce the fill prefix automatically (see section T.5.5 Adaptive Filling).
To specify a fill prefix, move to a line that starts with the desired
prefix, put point at the end of the prefix, and give the command
C-x . ( When a fill prefix is in effect, the fill commands remove the fill prefix from each line before filling and insert it on each line after filling. Auto Fill mode also inserts the fill prefix automatically when it makes a new line. The C-o command inserts the fill prefix on new lines it creates, when you use it at the beginning of a line (see section D.7 Blank Lines). Conversely, the command M-^ deletes the prefix (if it occurs) after the newline that it deletes (see section S. Indentation).
For example, if
produces this:
Lines that do not start with the fill prefix are considered to start paragraphs, both in M-q and the paragraph commands; this gives good results for paragraphs with hanging indentation (every line indented except the first one). Lines which are blank or indented once the prefix is removed also separate or start paragraphs; this is what you want if you are writing multi-paragraph comments with a comment delimiter on each line. You can use M-x fill-individual-paragraphs to set the fill prefix for each paragraph automatically. This command divides the region into paragraphs, treating every change in the amount of indentation as the start of a new paragraph, and fills each of these paragraphs. Thus, all the lines in one "paragraph" have the same amount of indentation. That indentation serves as the fill prefix for that paragraph.
M-x fill-nonuniform-paragraphs is a similar command that divides
the region into paragraphs in a different way. It considers only
paragraph-separating lines (as defined by
The fill prefix is stored in the variable
The
T.5.5 Adaptive FillingThe fill commands can deduce the proper fill prefix for a paragraph automatically in certain cases: either whitespace or certain punctuation characters at the beginning of a line are propagated to all lines of the paragraph. If the paragraph has two or more lines, the fill prefix is taken from the paragraph's second line, but only if it appears on the first line as well. If a paragraph has just one line, fill commands may take a prefix from that line. The decision is complicated because there are three reasonable things to do in such a case:
All three of these styles of formatting are commonly used. So the fill commands try to determine what you would like, based on the prefix that appears and on the major mode. Here is how.
If the prefix found on the first line matches
Otherwise, the prefix found is converted to an equivalent number of spaces, and those spaces are used as the fill prefix for the rest of the lines, provided they would not act as a paragraph starter on subsequent lines. In Text mode, and other modes where only blank lines and page delimiters separate paragraphs, the prefix chosen by adaptive filling never acts as a paragraph starter, so it can always be used for filling.
The variable
You can specify more complex ways of choosing a fill prefix
automatically by setting the variable
T.6 Case Conversion CommandsEmacs has commands for converting either a single word or any arbitrary range of text to upper case or to lower case.
The word conversion commands are the most useful. M-l
( When given a negative argument, the word case conversion commands apply to the appropriate number of words before point, but do not move point. This is convenient when you have just typed a word in the wrong case: you can give the case conversion command and continue typing.
If a word case conversion command is given in the middle of a word, it
applies only to the part of the word which follows point. This is just
like what M-d (
The other case conversion commands are C-x C-u
(
The region case conversion commands
T.7 Text ModeWhen you edit files of text in a human language, it's more convenient to use Text mode rather than Fundamental mode. To enter Text mode, type M-x text-mode. In Text mode, only blank lines and page delimiters separate paragraphs. As a result, paragraphs can be indented, and adaptive filling determines what indentation to use when filling a paragraph. See section T.5.5 Adaptive Filling.
Text mode defines TAB to run Text mode turns off the features concerned with comments except when you explicitly invoke them. It changes the syntax table so that periods are not considered part of a word, while apostrophes, backspaces and underlines are considered part of words. If you indent the first lines of paragraphs, then you should use Paragraph-Indent Text mode rather than Text mode. In this mode, you do not need to have blank lines between paragraphs, because the first-line indentation is sufficient to start a paragraph; however paragraphs in which every line is indented are not supported. Use M-x paragraph-indent-text-mode to enter this mode. Use M-x paragraph-indent-minor-mode to enter an equivalent minor mode, for instance during mail composition.
Text mode, and all the modes based on it, define M-TAB as
the command
Entering Text mode runs the hook Emacs provides two other modes for editing text that is to be passed through a text formatter to produce fancy formatted printed output. See section T.10 Nroff Mode, for editing input to the formatter nroff. See section T.9 TeX Mode, for editing input to the formatter TeX. Another mode is used for editing outlines. It allows you to view the text at various levels of detail. You can view either the outline headings alone or both headings and text; you can also hide some of the headings at lower levels from view to make the high level structure more visible. See section T.8 Outline Mode.
T.8 Outline ModeOutline mode is a major mode much like Text mode but intended for editing outlines. It allows you to make parts of the text temporarily invisible so that you can see the outline structure. Type M-x outline-mode to switch to Outline mode as the major mode of the current buffer. When Outline mode makes a line invisible, the line does not appear on the screen. The screen appears exactly as if the invisible line were deleted, except that an ellipsis (three periods in a row) appears at the end of the previous visible line (only one ellipsis no matter how many invisible lines follow). Editing commands that operate on lines, such as C-n and C-p, treat the text of the invisible line as part of the previous visible line. Killing an entire visible line, including its terminating newline, really kills all the following invisible lines along with it. Outline minor mode provides the same commands as the major mode, Outline mode, but you can use it in conjunction with other major modes. Type M-x outline-minor-mode to enable the Outline minor mode in the current buffer. You can also specify this in the text of a file, with a file local variable of the form `mode: outline-minor' (see section AD.2.5 Local Variables in Files).
The major mode, Outline mode, provides special key bindings on the
C-c prefix. Outline minor mode provides similar bindings with
C-c @ as the prefix; this is to reduce the conflicts with the
major mode's special commands. (The variable
Entering Outline mode runs the hook
T.8.1 Format of OutlinesOutline mode assumes that the lines in the buffer are of two types: heading lines and body lines. A heading line represents a topic in the outline. Heading lines start with one or more stars; the number of stars determines the depth of the heading in the outline structure. Thus, a heading line with one star is a major topic; all the heading lines with two stars between it and the next one-star heading are its subtopics; and so on. Any line that is not a heading line is a body line. Body lines belong with the preceding heading line. Here is an example:
A heading line together with all following body lines is called collectively an entry. A heading line together with all following deeper heading lines and their body lines is called a subtree.
You can customize the criterion for distinguishing heading lines
by setting the variable
You can change the rule for calculating the level of a heading line
by setting the variable
T.8.2 Outline Motion CommandsOutline mode provides special motion commands that move backward and forward to heading lines.
C-c C-n (
More powerful motion commands understand the level structure of headings.
C-c C-f (
T.8.3 Outline Visibility Commands
The other special commands of outline mode are used to make lines visible
or invisible. Their names all start with
Two commands that are exact opposites are C-c C-c
(
Two more powerful opposites are C-c C-d (
Intermediate between a visible subtree and an invisible one is having
all the subheadings visible but none of the body. There are two
commands for doing this, depending on whether you want to hide the
bodies or make the subheadings visible. They are C-c C-l
(
A little weaker than
Two commands have a blanket effect on the whole file. C-c C-t
(
The command C-c C-q (
The command C-c C-o (
You can turn off the use of ellipses at the ends of visible lines by
setting When incremental search finds text that is hidden by Outline mode, it makes that part of the buffer visible. If you exit the search at that position, the text remains visible.
T.8.4 Viewing One Outline in Multiple ViewsYou can display two views of a single outline at the same time, in different windows. To do this, you must create an indirect buffer using M-x make-indirect-buffer. The first argument of this command is the existing outline buffer name, and its second argument is the name to use for the new indirect buffer. See section N.6 Indirect Buffers. Once the indirect buffer exists, you can display it in a window in the normal fashion, with C-x 4 b or other Emacs commands. The Outline mode commands to show and hide parts of the text operate on each buffer independently; as a result, each buffer can have its own view. If you want more than two views on the same outline, create additional indirect buffers.
T.8.5 Folding EditingThe Foldout package extends Outline mode and Outline minor mode with "folding" commands. The idea of folding is that you zoom in on a nested portion of the outline, while hiding its relatives at higher levels. Consider an Outline mode buffer all the text and subheadings under level-1 headings hidden. To look at what is hidden under one of these headings, you could use C-c C-e (M-x show-entry) to expose the body, or C-c C-i to expose the child (level-2) headings. With Foldout, you use C-c C-z (M-x foldout-zoom-subtree). This exposes the body and child subheadings, and narrows the buffer so that only the level-1 heading, the body and the level-2 headings are visible. Now to look under one of the level-2 headings, position the cursor on it and use C-c C-z again. This exposes the level-2 body and its level-3 child subheadings and narrows the buffer again. Zooming in on successive subheadings can be done as much as you like. A string in the mode line shows how deep you've gone. When zooming in on a heading, to see only the child subheadings specify a numeric argument: C-u C-c C-z. The number of levels of children can be specified too (compare M-x show-children), e.g. M-2 C-c C-z exposes two levels of child subheadings. Alternatively, the body can be specified with a negative argument: M-- C-c C-z. The whole subtree can be expanded, similarly to C-c C-s (M-x show-subtree), by specifying a zero argument: M-0 C-c C-z. While you're zoomed in, you can still use Outline mode's exposure and hiding functions without disturbing Foldout. Also, since the buffer is narrowed, "global" editing actions will only affect text under the zoomed-in heading. This is useful for restricting changes to a particular chapter or section of your document. To unzoom (exit) a fold, use C-c C-x (M-x foldout-exit-fold). This hides all the text and subheadings under the top-level heading and returns you to the previous view of the buffer. Specifying a numeric argument exits that many levels of folds. Specifying a zero argument exits all folds. To cancel the narrowing of a fold without hiding the text and subheadings, specify a negative argument. For example, M--2 C-c C-x exits two folds and leaves the text and subheadings exposed. Foldout mode also provides mouse commands for entering and exiting folds, and for showing and hiding text:
You can specify different modifier keys (instead of
Control-Meta-) by setting To use the Foldout package, you can type M-x load-library RET foldout RET; or you can arrange for to do that automatically by putting this in your `.emacs' file:
T.9 TeX ModeTeX is a powerful text formatter written by Donald Knuth; it is also free, like GNU Emacs. LaTeX is a simplified input format for TeX, implemented by TeX macros; it comes with TeX. SliTeX is a special form of LaTeX.(8) Emacs has a special TeX mode for editing TeX input files. It provides facilities for checking the balance of delimiters and for invoking TeX on all or part of the file.
TeX mode has three variants, Plain TeX mode, LaTeX mode, and
SliTeX mode (these three distinct major modes differ only slightly).
They are designed for editing the three different formats. The command
M-x tex-mode looks at the contents of the buffer to determine
whether the contents appear to be either LaTeX input or SliTeX
input; if so, it selects the appropriate mode. If the file contents do
not appear to be LaTeX or SliTeX, it selects Plain TeX mode.
If the contents are insufficient to determine this, the variable
When M-x tex-mode does not guess right, you can use the commands M-x plain-tex-mode, M-x latex-mode, and M-x slitex-mode to select explicitly the particular variants of TeX mode.
T.9.1 TeX Editing CommandsHere are the special commands provided in TeX mode for editing the text of the file.
In TeX, the character `"' is not normally used; we use
`"' to start a quotation and `"' to end one. To make
editing easier under this formatting convention, TeX mode overrides
the normal meaning of the key " with a command that inserts a pair
of single-quotes or backquotes ( If you need the character `"' itself in unusual contexts, use C-q to insert it. Also, " with a numeric argument always inserts that number of `"' characters. You can turn off the feature of " expansion by eliminating that binding in the local map (see section AD.4 Customizing Key Bindings). In TeX mode, `$' has a special syntax code which attempts to understand the way TeX math mode delimiters match. When you insert a `$' that is meant to exit math mode, the position of the matching `$' that entered math mode is displayed for a second. This is the same feature that displays the open brace that matches a close brace that is inserted. However, there is no way to tell whether a `$' enters math mode or leaves it; so when you insert a `$' that enters math mode, the previous `$' position is shown as if it were a match, even though they are actually unrelated.
TeX uses braces as delimiters that must match. Some users prefer
to keep braces balanced at all times, rather than inserting them
singly. Use C-c { (
There are two commands for checking the matching of braces. C-j
( Note that Emacs commands count square brackets and parentheses in TeX mode, not just braces. This is not strictly correct for the purpose of checking TeX syntax. However, parentheses and square brackets are likely to be used in text as matching delimiters and it is useful for the various motion commands and automatic match display to work with them.
T.9.2 LaTeX Editing CommandsLaTeX mode, and its variant, SliTeX mode, provide a few extra features not applicable to plain TeX.
In LaTeX input, `\begin' and `\end' commands are used to
group blocks of text. To insert a `\begin' and a matching
`\end' (on a new line following the `\begin'), use C-c
C-o (
In LaTeX input, `\begin' and `\end' commands must
balance. You can use C-c C-e (
T.9.3 TeX Printing CommandsYou can invoke TeX as an inferior of Emacs on either the entire contents of the buffer or just a region at a time. Running TeX in this way on just one chapter is a good way to see what your changes look like without taking the time to format the entire file.
You can pass the current buffer through an inferior TeX by means of
C-c C-b (
You can specify the directory to use for running TeX by setting the
variable
If you want to specify which shell commands are used in the inferior TeX,
you can do so by setting the values of the variables Normally, the file name given to these commands comes at the end of the command string; for example, `latex filename'. In some cases, however, the file name needs to be embedded in the command; an example is when you need to provide the file name as an argument to one command whose output is piped to another. You can specify where to put the file name with `*' in the command string. For example,
The terminal output from TeX, including any error messages, appears in a buffer called `*tex-shell*'. If TeX gets an error, you can switch to this buffer and feed it input (this works as in Shell mode; see section AC.15.2 Interactive Inferior Shell). Without switching to this buffer you can scroll it so that its last line is visible by typing C-c C-l.
Type C-c C-k (
You can also pass an arbitrary region through an inferior TeX by typing
C-c C-r ( To indicate the bounds of the header in Plain TeX mode, you insert two special strings in the file. Insert `%**start of header' before the header, and `%**end of header' after it. Each string must appear entirely on one line, but there may be other text on the line before or after. The lines containing the two strings are included in the header. If `%**start of header' does not appear within the first 100 lines of the buffer, C-c C-r assumes that there is no header. In LaTeX mode, the header begins with `\documentclass' or `\documentstyle' and ends with `\begin{document}'. These are commands that LaTeX requires you to use in any case, so nothing special needs to be done to identify the header.
The commands (
When you want the auxiliary files for cross references, use C-c
C-f (
The value of the variable
Large TeX documents are often split into several files--one main
file, plus subfiles. Running TeX on a subfile typically does not
work; you have to run it on the main file. In order to make
The most convenient way to use
For LaTeX files, you can use BibTeX to process the auxiliary
file for the current buffer's file. BibTeX looks up bibliographic
citations in a data base and prepares the cited references for the
bibliography section. The command C-c TAB
(
T.9.4 TeX Mode Miscellany
Entering any variant of TeX mode runs the hooks
TeX encoding The commands M-x iso-iso2tex, M-x iso-tex2iso, M-x iso-iso2gtex and M-x iso-gtex2iso can be used to convert between Latin-1 encoded files and TeX-encoded equivalents. For managing all kinds of references for LaTeX, you can use RefTeX. @xref{Top, , RefTeX, reftex}.
T.10 Nroff ModeNroff mode is a mode like Text mode but modified to handle nroff commands present in the text. Invoke M-x nroff-mode to enter this mode. It differs from Text mode in only a few ways. All nroff command lines are considered paragraph separators, so that filling will never garble the nroff commands. Pages are separated by `.bp' commands. Comments start with backslash-doublequote. Also, three special commands are provided that are not in Text mode:
The other feature of Nroff mode is that you can turn on Electric Nroff mode. This is a minor mode that you can turn on or off with M-x electric-nroff-mode (see section AD.1 Minor Modes). When the mode is on, each time you use RET to end a line that contains an nroff command that opens a kind of grouping, the matching nroff command to close that grouping is automatically inserted on the following line. For example, if you are at the beginning of a line and type . ( b RET, this inserts the matching command `.)b' on a new line following point. If you use Outline minor mode with Nroff mode (see section T.8 Outline Mode), heading lines are lines of the form `.H' followed by a number (the header level).
Entering Nroff mode runs the hook
T.11 Editing Formatted TextEnriched mode is a minor mode for editing files that contain formatted text in WYSIWYG fashion, as in a word processor. Currently, formatted text in Enriched mode can specify fonts, colors, underlining, margins, and types of filling and justification. In the future, we plan to implement other formatting features as well. Enriched mode is a minor mode (see section AD.1 Minor Modes). It is typically used in conjunction with Text mode (see section T.7 Text Mode), but you can also use it with other major modes such as Outline mode and Paragraph-Indent Text mode. Potentially, Emacs can store formatted text files in various file formats. Currently, only one format is implemented: text/enriched format, which is defined by the MIME protocol. See section `Format Conversion' in the Emacs Lisp Reference Manual, for details of how Emacs recognizes and converts file formats. The Emacs distribution contains a formatted text file that can serve as an example. Its name is `etc/enriched.doc'. It contains samples illustrating all the features described in this section. It also contains a list of ideas for future enhancements.
T.11.1 Requesting to Edit Formatted TextWhenever you visit a file that Emacs saved in the text/enriched format, Emacs automatically converts the formatting information in the file into Emacs's own internal format (text properties), and turns on Enriched mode. To create a new file of formatted text, first visit the nonexistent file, then type M-x enriched-mode before you start inserting text. This command turns on Enriched mode. Do this before you begin inserting text, to ensure that the text you insert is handled properly.
More generally, the command When you save a buffer while Enriched mode is enabled in it, Emacs automatically converts the text to text/enriched format while writing it into the file. When you visit the file again, Emacs will automatically recognize the format, reconvert the text, and turn on Enriched mode again.
Normally, after visiting a file in text/enriched format, Emacs refills
each paragraph to fit the specified right margin. You can turn off this
refilling, to save time, by setting the variable
However, when visiting a file that was saved from Enriched mode, there is no need for refilling, because Emacs saves the right margin settings along with the text.
You can add annotations for saving additional text properties, which
Emacs normally does not save, by adding to
T.11.2 Hard and Soft NewlinesIn formatted text, Emacs distinguishes between two different kinds of newlines, hard newlines and soft newlines.
Hard newlines are used to separate paragraphs, or items in a list, or
anywhere that there should always be a line break regardless of the
margins. The RET command ( Soft newlines are used to make text fit between the margins. All the fill commands, including Auto Fill, insert soft newlines--and they delete only soft newlines. Although hard and soft newlines look the same, it is important to bear the difference in mind. Do not use RET to break lines in the middle of filled paragraphs, or else you will get hard newlines that are barriers to further filling. Instead, let Auto Fill mode break lines, so that if the text or the margins change, Emacs can refill the lines properly. See section T.5.1 Auto Fill Mode.
On the other hand, in tables and lists, where the lines should always
remain as you type them, you can use RET to end lines. For these
lines, you may also want to set the justification style to
T.11.3 Editing Format InformationThere are two ways to alter the formatting information for a formatted text file: with keyboard commands, and with the mouse. The easiest way to add properties to your document is with the Text Properties menu. You can get to this menu in two ways: from the Edit menu in the menu bar (use F10 e t if you have no mouse), or with C-Mouse-2 (hold the CTRL key and press the middle mouse button). There are also keyboard commands described in the following section. Most of the items in the Text Properties menu lead to other submenus. These are described in the sections that follow. Some items run commands directly:
T.11.4 Faces in Formatted Text
The Faces submenu lists various Emacs faces including
If you use these commands with a prefix argument--or, in Transient Mark mode, if the region is not active--then these commands specify a face to use for your next self-inserting input. See section H.2 Transient Mark Mode. This applies to both the keyboard commands and the menu commands.
Enriched mode defines two additional faces:
The
The
The If your terminal cannot display different faces, you will not be able to see them, but you can still edit documents containing faces, and even add faces and colors to documents. The faces you specify will be visible when the file is viewed on a terminal that can display them.
T.11.5 Colors in Formatted TextYou can specify foreground and background colors for portions of the text. There is a menu for specifying the foreground color and a menu for specifying the background color. Each color menu lists all the colors that you have used in Enriched mode in the current Emacs session. If you specify a color with a prefix argument--or, in Transient Mark mode, if the region is not active--then it applies to your next self-inserting input. See section H.2 Transient Mark Mode. Otherwise, the command applies to the region. Each color menu contains one additional item: `Other'. You can use this item to specify a color that is not listed in the menu; it reads the color name with the minibuffer. To display list of available colors and their names, use the `Display Colors' menu item in the Text Properties menu (see section T.11.3 Editing Format Information). Any color that you specify in this way, or that is mentioned in a formatted text file that you read in, is added to both color menus for the duration of the Emacs session. There are no key bindings for specifying colors, but you can do so with the extended commands M-x facemenu-set-foreground and M-x facemenu-set-background. Both of these commands read the name of the color with the minibuffer.
T.11.6 Indentation in Formatted TextWhen editing formatted text, you can specify different amounts of indentation for the right or left margin of an entire paragraph or a part of a paragraph. The margins you specify automatically affect the Emacs fill commands (see section T.5 Filling Text) and line-breaking commands. The Indentation submenu provides a convenient interface for specifying these properties. The submenu contains four items:
You can use these commands repeatedly to increase or decrease the indentation. The most common way to use these commands is to change the indentation of an entire paragraph. However, that is not the only use. You can change the margins at any point; the new values take effect at the end of the line (for right margins) or the beginning of the next line (for left margins). This makes it possible to format paragraphs with hanging indents, which means that the first line is indented less than subsequent lines. To set up a hanging indent, increase the indentation of the region starting after the first word of the paragraph and running until the end of the paragraph. Indenting the first line of a paragraph is easier. Set the margin for the whole paragraph where you want it to be for the body of the paragraph, then indent the first line by inserting extra spaces or tabs.
Sometimes, as a result of editing, the filling of a paragraph becomes
messed up--parts of the paragraph may extend past the left or right
margins. When this happens, use M-q (
The variable The fill prefix, if any, works in addition to the specified paragraph indentation: C-x . does not include the specified indentation's whitespace in the new value for the fill prefix, and the fill commands look for the fill prefix after the indentation on each line. See section T.5.4 The Fill Prefix.
T.11.7 Justification in Formatted TextWhen editing formatted text, you can specify various styles of justification for a paragraph. The style you specify automatically affects the Emacs fill commands.The Justification submenu provides a convenient interface for specifying the style. The submenu contains five items:
In Enriched mode, you can also specify justification from the keyboard using the M-j prefix character:
Justification styles apply to entire paragraphs. All the justification-changing commands operate on the paragraph containing point, or, if the region is active, on all paragraphs which overlap the region.
The default justification style is specified by the variable
T.11.8 Setting Other Text Properties
The Other Properties menu lets you add or remove three other useful text
properties: Each of these special properties has a menu item to add it to the region. The last menu item, `Remove Special', removes all of these special properties from the text in the region.
Currently, the
T.11.9 Forcing Enriched ModeNormally, Emacs knows when you are editing formatted text because it recognizes the special annotations used in the file that you visited. However, there are situations in which you must take special actions to convert file contents or turn on Enriched mode:
The command
If you wish to look at text/enriched file in its raw form, as a
sequence of characters rather than as formatted text, use the M-x
find-file-literally command. This visits a file, like
This document was generated on April 2, 2002 using texi2html |
|
James Thornton, jamesthornton.com>Services: Internet Strategy |
Electric Speed: Marketing On The Internet |