nxml-mode: Paragraphs
4 Paragraphs
************
Emacs has several commands that operate on paragraphs, most notably
‘M-q’. nXML mode redefines these to work in a way that is useful for
XML. The exact rules that are used to find the beginning and end of a
paragraph are complicated; they are designed mainly to ensure that ‘M-q’
does the right thing.
A paragraph consists of one or more complete, consecutive lines. A
group of lines is not considered a paragraph unless it contains some
non-whitespace characters between tags or inside comments. A blank line
separates paragraphs. A single tag on a line by itself also separates
paragraphs. More precisely, if one tag together with any leading and
trailing whitespace completely occupy one or more lines, then those
lines will not be included in any paragraph.
A start-tag at the beginning of the line (possibly indented) may be
treated as starting a paragraph. Similarly, an end-tag at the end of
the line may be treated as ending a paragraph. The following rules are
used to determine whether such a tag is in fact treated as a paragraph
boundary:
• If the schema does not allow text at that point, then it is a
paragraph boundary.
• If the end-tag corresponding to the start-tag is not at the end of
its line, or the start-tag corresponding to the end-tag is not at
the beginning of its line, then it is not a paragraph boundary.
For example, in
<p>This is a paragraph with an
<emph>emphasized</emph> phrase.
the ‘<emph>’ start-tag would not be considered as starting a
paragraph, because its corresponding end-tag is not at the end of
the line.
• If there is text that is a sibling in element tree, then it is not
a paragraph boundary. For example, in
<p>This is a paragraph with an
<emph>emphasized phrase that takes one source line</emph>
the ‘<emph>’ start-tag would not be considered as starting a
paragraph, even though its end-tag is at the end of its line,
because there the text ‘This is a paragraph with an’ is a sibling
of the ‘emph’ element.
• Otherwise, it is a paragraph boundary.