]> code.delx.au - gnu-emacs/blobdiff - man/text.texi
(insert-for-yank): Set yank-undo-function after calling FUNCTION,
[gnu-emacs] / man / text.texi
index cd0c13e3d31312e0f93c49ece2adee3f7a6bc0d9..d80cb087a8fe42d8153361f9cc9980baa131c35f 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000
+@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002
 @c   Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Text, Programs, Indentation, Top
@@ -50,8 +50,12 @@ Then the formatting appears on the screen in Emacs while you edit.
 @xref{Formatted Text}.
 @end iftex
 
-  The `automatic typing' features may be useful when writing text.
-@xref{Top, Autotyping, autotype, Features for Automatic Typing}.
+@cindex skeletons
+@cindex templates
+@cindex autotyping
+@cindex automatic typing
+  The ``automatic typing'' features may be useful when writing text.
+@xref{Top,, Autotyping, autotype, Features for Automatic Typing}.
 
 @menu
 * Words::              Moving over and killing words.
@@ -63,6 +67,7 @@ Then the formatting appears on the screen in Emacs while you edit.
 * Text Mode::          The major modes for editing text files.
 * Outline Mode::        Editing outlines.
 * TeX Mode::           Editing input to the formatter TeX.
+* HTML Mode::           Editing HTML, SGML, and XML files.
 * Nroff Mode::         Editing input to the formatter nroff.
 * Formatted Text::      Editing formatted text directly in WYSIWYG fashion.
 @end menu
@@ -75,7 +80,6 @@ Then the formatting appears on the screen in Emacs while you edit.
   Emacs has commands for moving over or operating on words.  By convention,
 the keys for them are all Meta characters.
 
-@c widecommands
 @table @kbd
 @item M-f
 Move forward over a word (@code{forward-word}).
@@ -130,8 +134,10 @@ move to.  If point is after the space in @w{@samp{FOO, BAR}}, then
 not the comma and the space, use @kbd{M-b M-d} instead of
 @kbd{M-@key{DEL}}.)
 
-@kindex M-t
-@findex transpose-words
+@c Don't index M-t and transpose-words here, they are indexed in
+@c fixit.texi, in the node "Transpose".
+@c @kindex M-t
+@c @findex transpose-words
   @kbd{M-t} (@code{transpose-words}) exchanges the word before or
 containing point with the following word.  The delimiter characters between
 the words do not move.  For example, @w{@samp{FOO, BAR}} transposes into
@@ -215,7 +221,7 @@ sentence, together with the whitespace following the sentence.  Its
 normal value is
 
 @example
-"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
+"[.?!][]\"')]*\\($\\| $\\|\t\\|  \\)[ \t\n]*"
 @end example
 
 @noindent
@@ -293,8 +299,8 @@ that separate paragraphs without being part of any paragraph (for
 example, blank lines).  Lines that start a new paragraph and are
 contained in it must match only @code{paragraph-start}, not
 @code{paragraph-separate}.  For example, in Fundamental mode,
-@code{paragraph-start} is @code{"[ @t{\}t@t{\}n@t{\}f]"} and
-@code{paragraph-separate} is @code{"[ @t{\}t@t{\}f]*$"}.@refill
+@code{paragraph-start} is @w{@code{"[ \t\n\f]"}}, and
+@code{paragraph-separate} is @w{@code{"[ \t\f]*$"}}.
 
   Normally it is desirable for page boundaries to separate paragraphs.
 The default values of these variables recognize the usual separator for
@@ -315,7 +321,6 @@ character: you can insert it with @kbd{C-q C-l}, and delete it with
 since pages are often meaningful divisions of the file, Emacs provides
 commands to move over them and operate on them.
 
-@c WideCommands
 @table @kbd
 @item C-x [
 Move point to previous page boundary (@code{backward-page}).
@@ -342,12 +347,14 @@ command moves forward past the next page delimiter.
   The @kbd{C-x C-p} command (@code{mark-page}) puts point at the
 beginning of the current page and the mark at the end.  The page
 delimiter at the end is included (the mark follows it).  The page
-delimiter at the front is excluded (point follows it).  @kbd{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 @kbd{C-x [} and @kbd{C-x ]}, then yank the
-killed page, all the pages will be properly delimited once again.  The
-reason @kbd{C-x C-p} includes only the following page delimiter in the
-region is to ensure that.
+delimiter at the front is excluded (point follows it).  In Transient
+Mark mode, this command activates the mark.
+
+  @kbd{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 @kbd{C-x [} and
+@kbd{C-x ]}, then yank the killed page, all the pages will be properly
+delimited once again.  The reason @kbd{C-x C-p} includes only the
+following page delimiter in the region is to ensure that.
 
   A numeric argument to @kbd{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
@@ -356,7 +363,7 @@ the next page, and @minus{}1 means the previous one.
 @kindex C-x l
 @findex count-lines-page
   The @kbd{C-x l} command (@code{count-lines-page}) is good for deciding
-where to break a page in two.  It prints in the echo area the total number
+where to break a page in two.  It displays in the echo area the total number
 of lines in the current page, and then divides it up into those preceding
 the current line and those following, as in
 
@@ -371,7 +378,7 @@ beginning of a line.
 @vindex page-delimiter
   The variable @code{page-delimiter} controls where pages begin.  Its
 value is a regexp that matches the beginning of a line that separates
-pages.  The normal value of this variable is @code{"^@t{\}f"}, which
+pages.  The normal value of this variable is @code{"^\f"}, which
 matches a formfeed character at the beginning of a line.
 
 @node Filling
@@ -388,11 +395,11 @@ Text}).
 
 @menu
 * Auto Fill::          Auto Fill mode breaks long lines automatically.
+* Refill::              Keeping paragraphs filled.
 * Fill Commands::       Commands to refill paragraphs and center lines.
 * Fill Prefix::                Filling paragraphs that are indented
                           or in a comment, etc.
 * Adaptive Fill::       How Emacs can determine the fill prefix automatically.
-* Refill::              Keeping paragraphs filled.
 @end menu
 
 @node Auto Fill
@@ -437,7 +444,7 @@ line and the beginning of the second so that each line is a separate
 comment; the variable @code{comment-multi-line} controls the choice
 (@pxref{Comments}).
 
-  Adaptive filling (see the following section) works for Auto Filling as
+  Adaptive filling (@pxref{Adaptive Fill}) 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.
 
@@ -453,6 +460,28 @@ paragraph properly filled again is usually with the explicit fill commands.
 The section on init files says how to arrange this permanently for yourself.
 @xref{Init File}.
 
+@node Refill
+@subsection Refill Mode
+@cindex refilling text, word processor style
+@cindex modes, Refill
+@cindex Refill minor mode
+
+  Refill 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
+@kbd{M-x refill-mode}.
+
 @node Fill Commands
 @subsection Explicit Fill Commands
 
@@ -534,10 +563,20 @@ two spaces for the end of a sentence, as explained above.  @xref{Sentences}.
 fill commands put two spaces after a colon.
 
 @vindex sentence-end-without-period
-The variable @code{sentence-end-without-period} can be set
-non-@code{nil} to indicate that a sentence will end without a period.
-For example, a sentence in Thai text ends with double space but without
-a period.
+  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 @code{sentence-end-without-period} to
+@code{t} to tell the sentence commands that a period is not necessary.
+
+@vindex fill-nobreak-predicate
+  The variable @code{fill-nobreak-predicate} specifies additional
+conditions for where line-breaking is allowed.  Its value is either
+@code{nil} or a Lisp function; the function is called with no
+arguments, and if it returns a non-@code{nil} value, then point is not
+a good place to break the line.  The standard functions you can use
+@code{fill-single-word-nobreak-p} (don't break after the first word of
+a sentence or before the last) and @code{fill-french-nobreak-p} (don't
+break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}).
 
 @node Fill Prefix
 @subsection The Fill Prefix
@@ -699,25 +738,6 @@ line, and it should return the appropriate fill prefix based on that
 line.  If it returns @code{nil}, that means it sees no fill prefix in
 that line.
 
-@node Refill
-@subsection Refill Mode
-@cindex refilling text, word processor style
-@cindex modes, Refill
-@cindex Refill minor mode
-
-Refill 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 behaviour.  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.
-
 @node Case
 @section Case Conversion Commands
 @cindex case conversion
@@ -725,7 +745,6 @@ expect to improve on it.
   Emacs has commands for converting either a single word or any arbitrary
 range of text to upper case or to lower case.
 
-@c WideCommands
 @table @kbd
 @item M-l
 Convert following word to lower case (@code{downcase-word}).
@@ -856,7 +875,6 @@ visible.  @xref{Outline Mode}.
 @section Outline Mode
 @cindex Outline mode
 @cindex mode, Outline
-@cindex selective display
 @cindex invisible lines
 
 @findex outline-mode
@@ -962,12 +980,12 @@ so that Outline mode will know that sections are contained in chapters.
 This works as long as no other command starts with @samp{@@chap}.
 
 @vindex outline-level
-  It is possible to change the rule for calculating the level of a
-heading line by setting the variable @code{outline-level}.  The value of
+  You can change the rule for calculating the level of a heading line
+by setting the variable @code{outline-level}.  The value of
 @code{outline-level} should be a function that takes no arguments and
 returns the level of the current heading.  Some major modes such as C,
-Nroff, and Emacs Lisp mode set this variable and/or
-@code{outline-regexp} in order to work with Outline minor mode.
+Nroff, and Emacs Lisp mode set this variable and @code{outline-regexp}
+in order to work with Outline minor mode.
 
 @node Outline Motion
 @subsection Outline Motion Commands
@@ -1124,9 +1142,12 @@ leading up from there to top level in the outline).
 setting @code{selective-display-ellipses} to @code{nil}.  Then there is
 no visible indication of the presence of invisible lines.
 
+@findex reveal-mode
   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.
+at that position, the text remains visible.  You can also
+automatically make text visible as you navigate in it by using
+@kbd{M-x reveal-mode}.
 
 @node Outline Views
 @subsection Viewing One Outline in Multiple Views
@@ -1149,104 +1170,110 @@ want more than two views on the same outline, create additional indirect
 buffers.
 
 @node Foldout
-@subsection Folding editing
+@subsection Folding Editing
 
 @cindex folding editing
-The Foldout package provides folding editor extensions for Outline mode
-and Outline minor mode.  It may be used by putting in your @file{.emacs}
+  The 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.
 
-@example
-(eval-after-load "outline" '(require 'foldout))
-@end example
-
-@noindent
-Folding editing works as follows.
-
-Consider an Outline mode buffer all the text and subheadings under
+  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 normally you would use @kbd{C-c C-e} (@kbd{M-x show-entry}) to
-expose the body or @kbd{C-c C-i} to expose the child (level-2) headings.
+headings, you could use @kbd{C-c C-e} (@kbd{M-x show-entry}) to expose
+the body, or @kbd{C-c C-i} to expose the child (level-2) headings.
 
 @kindex C-c C-z
 @findex foldout-zoom-subtree
-With Foldout, you use @kbd{C-c C-z} (@kbd{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
+  With Foldout, you use @kbd{C-c C-z} (@kbd{M-x foldout-zoom-subtree}).
+This exposes the body and child subheadings, and narrows the buffer so
+that only the @w{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 @kbd{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 modeline shows how deep you've gone.
+in the mode line shows how deep you've gone.
 
-When zooming in on a heading, to see only the child subheadings specify
+  When zooming in on a heading, to see only the child subheadings specify
 a numeric argument: @kbd{C-u C-c C-z}.  The number of levels of children
 can be specified too (compare @kbd{M-x show-children}), e.g.@: @kbd{M-2
 C-c C-z} exposes two levels of child subheadings.  Alternatively, the
-body can be spcified with a negative argument: @kbd{M-- C-c C-z}.  The
+body can be specified with a negative argument: @kbd{M-- C-c C-z}.  The
 whole subtree can be expanded, similarly to @kbd{C-c C-s} (@kbd{M-x
 show-subtree}), by specifying a zero argument: @kbd{M-0 C-c C-z}.
 
-While you're zoomed in you can still use outline-mode's exposure and
+  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
+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.
 
 @kindex C-c C-x
 @findex foldout-exit-fold
-Unzoom (exit) a fold using @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}).
+  To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{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 folds.  Specifying a zero argument exits all
+argument exits that many levels of folds.  Specifying a zero argument exits all
 folds.
 
-You might want to exit a fold without hiding the text and subheadings,
-specify a negative argument.  For example, @kbd{M--2 C-c C-x} exits two
-folds and leaves the text and subheadings exposed.
+  To cancel the narrowing of a fold without hiding the text and
+subheadings, specify a negative argument.  For example, @kbd{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:
 
-Foldout provides mouse bindings for entering and exiting folds and for
-showing and hiding text as follows:
-@table @asis
-@item @kbd{M-C-mouse-1} zooms in on the heading clicked on
 @table @asis
-@item single click
-expose body
-@item double click
-expose subheadings
-@item triple click
-expose body and subheadings
-@item quad click
-expose entire subtree
-@end table
-@item @kbd{M-C-mouse-2} exposes text under the heading clicked on
-@table @r
-@item single click
-expose body
-@item double click
-expose subheadings
-@item triple click
-expose body and subheadings
-@item quad click
-expose entire subtree
-@end table
-@item @kbd{M-C-mouse-3} hides text under the heading clicked on or exits fold
-@table @r
-@item single click
-hide subtree
-@item double click
-exit fold and hide text
-@item triple click
-exit fold without hiding text
-@item quad click
-exit all folds and hide text
-@end table
+@item @kbd{C-M-Mouse-1} zooms in on the heading clicked on
+@itemize @asis
+@item
+single click: expose body.
+@item
+double click: expose subheadings.
+@item
+triple click: expose body and subheadings.
+@item
+quad click: expose entire subtree.
+@end itemize
+@item @kbd{C-M-Mouse-2} exposes text under the heading clicked on
+@itemize @asis
+@item
+single click: expose body.
+@item
+double click: expose subheadings.
+@item
+triple click: expose body and subheadings.
+@item
+quad click: expose entire subtree.
+@end itemize
+@item @kbd{C-M-Mouse-3} hides text under the heading clicked on or exits fold
+@itemize @asis
+@item
+single click: hide subtree.
+@item
+double click: exit fold and hide text.
+@item
+triple click: exit fold without hiding text.
+@item
+quad click: exit all folds and hide text.
+@end itemize
 @end table
 
 @vindex foldout-mouse-modifiers
-You can change the modifier keys used by setting
-@code{foldout-mouse-modifiers}.
+  You can specify different modifier keys (instead of
+@kbd{Control-Meta-}) by setting @code{foldout-mouse-modifiers}; but if
+you have already loaded the @file{foldout.el} library, you must reload
+it in order for this to take effect.
+
+  To use the Foldout package, you can type @kbd{M-x load-library
+@key{RET} foldout @key{RET}}; or you can arrange for to do that
+automatically by putting this in your @file{.emacs} file:
+
+@example
+(eval-after-load "outline" '(require 'foldout))
+@end example
 
-@node TeX Mode, Nroff Mode, Outline Mode, Text
+@node TeX Mode
 @section @TeX{} Mode
 @cindex @TeX{} mode
 @cindex La@TeX{} mode
@@ -1285,61 +1312,11 @@ If the contents are insufficient to determine this, the variable
 slitex-mode} to select explicitly the particular variants of @TeX{}
 mode.
 
-@vindex tex-shell-hook
-@vindex tex-mode-hook
-@vindex latex-mode-hook
-@vindex slitex-mode-hook
-@vindex plain-tex-mode-hook
-  Entering any kind of @TeX{} mode runs the hooks @code{text-mode-hook}
-and @code{tex-mode-hook}.  Then it runs either
-@code{plain-tex-mode-hook} or @code{latex-mode-hook}, whichever is
-appropriate.  For Sli@TeX{} files, it calls @code{slitex-mode-hook}.
-Starting the @TeX{} shell runs the hook @code{tex-shell-hook}.
-@xref{Hooks}.
-
-@findex iso-iso2tex
-@findex iso-tex2iso
-@findex iso-iso2gtex
-@findex iso-gtex2iso
-@cindex Latin-1 @TeX{} encoding
-@TeX{} encoding
-@vindex format-alist
-@findex format-find-file
-The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
-iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert between
-Latin-1 encoded files and @TeX{}-encoded equivalents.  They are included
-by default in the @code{format-alist} variable, and so an be used with
-@kbd{M-x format-find-file}, for instance.
-
-@findex tildify-buffer
-@findex tildify-region
-@cindex ties, @TeX{}, inserting
-@cindex hard spaces, @TeX{}, inserting
-@cindex SGML
-@cindex HTML
-The commands @kbd{M-x tildify-buffer} and @kbd{M-x tildify-region} can
-be used to insert missing @samp{~} @dfn{tie} characters which should be
-present in the file to represent `hard spaces'.  This is set up for
-Czech---customize the group @samp{tildify} for other languages or for
-other sorts of markup; there is support for SGML (HTML).
-
-@cindex RefTeX package
-@cindex references, La@TeX{}
-@cindex La@TeX{} references
-  For managing all kinds of references for La@TeX{}, you can use
-Ref@TeX{}.  @xref{Top, , RefTeX, reftex}.
-
-@cindex Bib@TeX{} mode
-@cindex mode, Bib@TeX{}
-@pindex bibtex
-@findex bibtex-mode
-There is also a mode for editing files for the Bib@TeX{} bibliography
-program often used with La@TeX{}.
-
 @menu
 * Editing: TeX Editing.   Special commands for editing in TeX mode.
 * LaTeX: LaTeX Editing.   Additional commands for LaTeX input files.
 * Printing: TeX Print.    Commands for printing part of a file with TeX.
+* Misc: TeX Misc.         Customization of TeX mode, and related features.
 @end menu
 
 @node TeX Editing
@@ -1407,7 +1384,7 @@ text that belongs inside.  Afterward, use the command @kbd{C-c @}}
 @kindex C-j @r{(@TeX{} mode)}
   There are two commands for checking the matching of braces.  @kbd{C-j}
 (@code{tex-terminate-paragraph}) checks the paragraph before point, and
-inserts two newlines to start a new paragraph.  It prints a message in
+inserts two newlines to start a new paragraph.  It outputs a message in
 the echo area if any mismatch is found.  @kbd{M-x tex-validate-region}
 checks a region, paragraph by paragraph.  The errors are listed in the
 @samp{*Occur*} buffer, and you can use @kbd{C-c C-c} or @kbd{Mouse-2} in
@@ -1599,10 +1576,15 @@ in that file's directory.  Before running @TeX{}, it offers to save any
 modified buffers.  Generally, you need to use (@code{tex-file}) twice to
 get the cross-references right.
 
-@vindex tex-start-options-string
-  The value of the variable @code{tex-start-options-string} specifies
-options for the @TeX{} run.  The default value causes @TeX{} to run in
-nonstopmode.  To run @TeX{} interactively, set the variable to @code{""}.
+@vindex tex-start-options
+  The value of the variable @code{tex-start-options} specifies
+options for the @TeX{} run.
+
+@vindex tex-start-commands
+  The value of the variable @code{tex-start-commands} specifies @TeX{}
+commands for starting @TeX{}.  The default value causes @TeX{} to run
+in nonstop mode.  To run @TeX{} interactively, set the variable to
+@code{""}.
 
 @vindex tex-main-file
   Large @TeX{} documents are often split into several files---one main
@@ -1630,6 +1612,153 @@ current buffer's file.  Generally, you need to do @kbd{C-c C-f}
 @kbd{C-c TAB} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
 (@code{tex-file}) twice more to get the cross-references correct.
 
+@node TeX Misc
+@subsection @TeX{} Mode Miscellany
+
+@vindex tex-shell-hook
+@vindex tex-mode-hook
+@vindex latex-mode-hook
+@vindex slitex-mode-hook
+@vindex plain-tex-mode-hook
+  Entering any variant of @TeX{} mode runs the hooks
+@code{text-mode-hook} and @code{tex-mode-hook}.  Then it runs either
+@code{plain-tex-mode-hook}, @code{latex-mode-hook}, or
+@code{slitex-mode-hook}, whichever is appropriate.  Starting the
+@TeX{} shell runs the hook @code{tex-shell-hook}.  @xref{Hooks}.
+
+@findex iso-iso2tex
+@findex iso-tex2iso
+@findex iso-iso2gtex
+@findex iso-gtex2iso
+@cindex Latin-1 @TeX{} encoding
+@TeX{} encoding
+  The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
+iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert
+between Latin-1 encoded files and @TeX{}-encoded equivalents.
+@ignore
+@c Too cryptic to be useful, too cryptic for me to make it better -- rms.
+  They
+are included by default in the @code{format-alist} variable, so they
+can be used with @kbd{M-x format-find-file}, for instance.
+@end ignore
+
+@ignore  @c Not worth documenting if it is only for Czech -- rms.
+@findex tildify-buffer
+@findex tildify-region
+@cindex ties, @TeX{}, inserting
+@cindex hard spaces, @TeX{}, inserting
+  The commands @kbd{M-x tildify-buffer} and @kbd{M-x tildify-region}
+insert @samp{~} (@dfn{tie}) characters where they are conventionally
+required.  This is set up for Czech---customize the group
+@samp{tildify} for other languages or for other sorts of markup.
+@end ignore
+
+@cindex Ref@TeX{} package
+@cindex references, La@TeX{}
+@cindex La@TeX{} references
+  For managing all kinds of references for La@TeX{}, you can use
+Ref@TeX{}.  @xref{Top, , RefTeX, reftex}.
+
+@node HTML Mode
+@section SGML, XML, and HTML Modes
+
+  The major modes for SGML and HTML include indentation support and
+commands to operate on tags.  This section describes the special
+commands of these modes.  (HTML mode is a slightly customized variant
+of SGML mode.)
+
+@table @kbd
+@item C-c C-n
+@kindex C-c C-n @r{(SGML mode)}
+@findex sgml-name-char
+Interactively specify a special character and insert the SGML
+@samp{&}-command for that character.
+
+@item C-c C-t
+@kindex C-c C-t @r{(SGML mode)}
+@findex sgml-tag
+Interactively specify a tag and its attributes (@code{sgml-tag}).
+This command asks you for a tag name and for the attribute values,
+then inserts both the opening tag and the closing tag, leaving point
+between them.
+
+With a prefix argument @var{n}, the command puts the tag around the
+@var{n} words already present in the buffer after point.  With
+@minus{}1 as argument, it puts the tag around the region.  (In
+Transient Mark mode, it does this whenever a region is active.)
+
+@item C-c C-a
+@kindex C-c C-a @r{(SGML mode)}
+@findex sgml-attributes
+Interactively insert attribute values for the current tag
+(@code{sgml-attributes}).
+
+@item C-c C-f
+@kindex C-c C-f @r{(SGML mode)}
+@findex sgml-skip-tag-forward
+Skip across a balanced tag group (which extends from an opening tag
+through its corresponding closing tag) (@code{sgml-skip-tag-forward}).
+A numeric argument acts as a repeat count.
+
+@item C-c C-b
+@kindex C-c C-b @r{(SGML mode)}
+@findex sgml-skip-tag-backward
+Skip backward across a balanced tag group (which extends from an
+opening tag through its corresponding closing tag)
+(@code{sgml-skip-tag-forward}).  A numeric argument acts as a repeat
+count.
+
+@item C-c C-d
+@kindex C-c C-d @r{(SGML mode)}
+@findex sgml-delete-tag
+Delete the tag at or after point, and delete the matching tag too
+(@code{sgml-delete-tag}).  If the tag at or after point is an opening
+tag, delete the closing tag too; if it is a closing tag, delete the
+opening tag too.
+
+@item C-c ? @var{tag} @key{RET}
+@kindex C-c ? @r{(SGML mode)}
+@findex sgml-tag-help
+Display a description of the meaning of tag @var{tag}
+(@code{sgml-tag-help}).  If the argument @var{tag} is empty, describe
+the tag at point.
+
+@item C-c /
+@kindex C-c / @r{(SGML mode)}
+@findex sgml-close-tag
+Insert a close tag for the innermost unterminated tag
+(@code{sgml-close-tag}).  If called from within a tag or a comment,
+close this element instead of inserting a close tag.
+
+@item C-c 8
+@kindex C-c 8 @r{(SGML mode)}
+@findex sgml-name-8bit-mode
+Toggle a minor mode in which Latin-1 characters insert the
+corresponding SGML commands that stand for them, instead of the
+characters themselves (@code{sgml-name-8bit-mode}).
+
+@item C-c C-v
+@kindex C-c C-v @r{(SGML mode)}
+@findex sgml-validate
+Run a shell command (which you must specify) to validate the current
+buffer as SGML (@code{sgml-validate}).
+
+@item C-x TAB
+@kindex C-c TAB @r{(SGML mode)}
+@findex sgml-tags-invisible
+Toggle the visibility of existing tags in the buffer.  This can be
+used as a cheap preview.
+@end table
+
+@vindex sgml-xml-mode
+  SGML mode and HTML mode support XML also.  In XML, every opening tag
+must have an explicit closing tag.  When @code{sgml-xml-mode} is
+non-@code{nil}, SGML mode (and HTML mode) always insert explicit
+closing tags.  When you visit a file, these modes determine from the
+file contents whether it is XML or not, and set @code{sgml-xml-mode}
+accordingly, so that they do the right thing for the file in either
+case.
+
 @node Nroff Mode
 @section Nroff Mode
 
@@ -1656,7 +1785,7 @@ Move to the beginning of the next line that isn't an nroff command
 @item M-p
 Like @kbd{M-n} but move up (@code{backward-text-line}).
 @item M-?
-Prints in the echo area the number of text lines (lines that are not
+Displays in the echo area the number of text lines (lines that are not
 nroff commands) in the region (@code{count-text-lines}).
 @end table
 
@@ -1693,9 +1822,9 @@ 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 (@pxref{Minor Modes}).  Typically it is
-used in conjunction with Text mode (@pxref{Text Mode}).  However, you
-can also use it with other major modes such as Outline mode and
+  Enriched mode is a minor mode (@pxref{Minor Modes}).  It is
+typically used in conjunction with Text mode (@pxref{Text Mode}), but
+you can also use it with other major modes such as Outline mode and
 Paragraph-Indent Text mode.
 
 @cindex text/enriched MIME format
@@ -1727,10 +1856,10 @@ contains a list of ideas for future enhancements.
 @node Requesting Formatted Text
 @subsection Requesting to Edit Formatted Text
 
-  Whenever 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.
+  Whenever 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 (known as @dfn{text
+properties}), and turns on Enriched mode.
 
 @findex enriched-mode
   To create a new file of formatted text, first visit the nonexistent
@@ -1767,6 +1896,9 @@ annotations to have names starting with @samp{x-}, as in
 @samp{x-read-only}.  This ensures that they will not conflict with
 standard annotations that may be added later.
 
+  @xref{Text Properties,,, elisp, the Emacs Lisp Reference Manual},
+for more information about text properties.
+
 @node Hard and Soft Newlines
 @subsection Hard and Soft Newlines
 @cindex hard newline
@@ -1803,38 +1935,44 @@ lines, you may also want to set the justification style to
   There 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 by using the Text
+  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, or with @kbd{C-mouse-2} (hold the @key{CTRL} key
-and press the middle mouse button).
+menu in the menu bar (use @kbd{@key{F10} e t} if you have no mouse),
+or with @kbd{C-Mouse-2} (hold the @key{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:
 
 @table @code
-@findex facemenu-remove-props
-@item Remove Properties
+@findex facemenu-remove-face-props
+@item Remove Face Properties
 Delete from the region all the text properties that the Text Properties
-menu works with (@code{facemenu-remove-props}).
+menu works with (@code{facemenu-remove-face-props}).
 
 @findex facemenu-remove-all
 @item Remove All
 Delete @emph{all} text properties from the region
 (@code{facemenu-remove-all}).
 
-@findex list-text-properties-at
-@item List Properties
-List all the text properties of the character following point
-(@code{list-text-properties-at}).
+@findex describe-text-at
+@cindex text properties of characters
+@cindex overlays at character position
+@cindex widgets at buffer position
+@cindex buttons at buffer position
+@item Describe Text
+List all the text properties, widgets, buttons, and overlays of the
+character following point (@code{describe-text-at}).
 
 @item Display Faces
-Display a list of all the defined faces.
+Display a list of all the defined faces (@code{list-faces-display}).
 
 @item Display Colors
-Display a list of all the defined colors.
+Display a list of all the defined colors (@code{list-colors-display}).
 @end table
-            
+
 @node Format Faces
 @subsection Faces in Formatted Text
 
@@ -1888,23 +2026,27 @@ format.
   The @code{excerpt} face is intended for quotations.  This face is the
 same as @code{italic} unless you customize it (@pxref{Face Customization}).
 
-  The @code{fixed} face is meant to say, ``Use a fixed-width font for this
-part of the text.''  Emacs currently supports only fixed-width fonts;
-therefore, the @code{fixed} annotation is not necessary now.  However,
-we plan to support variable width fonts in future Emacs versions, and
-other systems that display text/enriched format may not use a
-fixed-width font as the default.  So if you specifically want a certain
-part of the text to use a fixed-width font, you should specify the
+  The @code{fixed} face means, ``Use a fixed-width font for this part
+of the text.''  This makes a visible difference only if you have
+specified a variable-width font in the default face; however, even if
+the default font is fixed-width, applying the @code{fixed} face to a
+part of the text will cause that part of the text to appear in a
+fixed-width font, if the file is ever displayed with a variable-width
+default font.  This applies to Emacs and to other systems that display
+text/enriched format.  So if you specifically want a certain part of
+the text to use a fixed-width font, you should specify the
 @code{fixed} face for that part.
 
-  The @code{fixed} face is normally defined to use a different font from
-the default.  However, different systems have different fonts installed,
-so you may need to customize this.
+  The @code{fixed} face is normally set up to use a different font
+from the default, even if the default face is also fixed-width.
+Different systems have different fonts installed, so you may need to
+customize this.  @xref{Face Customization}.
 
-  If your terminal cannot display different faces, you will not be able
-to see them, but you can still edit documents containing faces.  You can
-even add faces and colors to documents.  They will be visible when the
-file is viewed on a terminal that can display them.
+  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.
 
 @node Format Colors
 @subsection Colors in Formatted Text