--- a/autoimplementation.html Mon May 02 13:38:09 2011 -0600
+++ b/autoimplementation.html Mon May 02 15:57:04 2011 -0600
@@ -52,6 +52,9 @@
body > div > table > tbody > tr > th:last-child {
width: 10%;
}
+/* For testing */
+ol ol { list-style-type: lower-alpha }
+ol ol ol { list-style-type: lower-roman }
</style>
<p>Legend: {[ are the selection anchor, }] are the selection focus, {}
represent an element boundary point, [] represent a text node boundary point.
@@ -550,6 +553,56 @@
'foo[bar]baz',
'foo<b>{bar}</b>baz',
],
+ insertorderedlist: [
+ 'foo[]bar',
+ '<span>foo</span>{}<span>bar</span>',
+ '<span>foo[</span><span>]bar</span>',
+ 'foo[bar]baz',
+ 'foo]bar[baz',
+ '{<p><p> <p>foo</p>}',
+ 'foo[bar<b>baz]qoz</b>quz',
+ 'foo<br>[bar]',
+ 'f[oo<br>b]ar<br>baz',
+
+ '<table><tbody><tr><td>foo<td>b[a]r<td>baz</table>',
+ '<table><tbody><tr data-start=1 data-end=2><td>foo<td>bar<td>baz</table>',
+ '<table><tbody><tr data-start=0 data-end=2><td>foo<td>bar<td>baz</table>',
+ '<table><tbody data-start=0 data-end=1><tr><td>foo<td>bar<td>baz</table>',
+ '<table data-start=0 data-end=1><tbody><tr><td>foo<td>bar<td>baz</table>',
+ '{<table><tr><td>foo<td>bar<td>baz</table>}',
+
+ '<p>foo<p>[bar]<p>baz',
+ '<p>foo<blockquote>[bar]</blockquote><p>baz',
+ '<ol><li>foo<li>[bar]<li>baz</ol>',
+ '<ul><li>foo<li>[bar]<li>baz</ul>',
+ '<dl><dt>foo<dd>[bar]<dt>baz<dd>quz</dl>',
+ '<dl><dt>foo<dd>bar<dt>[baz]<dd>quz</dl>',
+
+ '<p>foo<p>b[a]r<p>baz',
+ '<p>foo<blockquote>b[a]r</blockquote><p>baz',
+ '<ol><li>foo<li>b[a]r<li>baz</ol>',
+ '<ul><li>foo<li>b[a]r<li>baz</ul>',
+ '<dl><dt>foo<dd>b[a]r<dt>baz<dd>quz</dl>',
+ '<dl><dt>foo<dd>bar<dt>b[a]z<dd>quz</dl>',
+
+ '<p>[foo<p>bar]<p>baz',
+ '<p>[foo<blockquote>bar]</blockquote><p>baz',
+ '<ol><li>[foo<li>bar]<li>baz</ol>',
+ '<ul><li>[foo<li>bar]<li>baz</ul>',
+ '<dl><dt>[foo<dd>bar]<dt>baz<dd>quz</dl>',
+ '<dl><dt>foo<dd>[bar<dt>baz]<dd>quz</dl>',
+
+ '<p>[foo<blockquote><p>bar]<p>baz</blockquote>',
+ '<ol><li><ol><li>foo<li>[bar]</ol><li>baz</ol>',
+ '<ol><li><ul><li>foo<li>[bar]</ul><li>baz</ol>',
+ '<ul><li><ol><li>foo<li>[bar]</ol><li>baz</ul>',
+ '<ul><li><ul><li>foo<li>[bar]</ol><li>baz</ul>',
+
+ '<ol><li>foo</ol>[bar]',
+ '<ul><li>foo</ul>[bar]',
+ ],
+ insertunorderedlist: [
+ ],
italic: [
'foo[]bar',
'<span>foo</span>{}<span>bar</span>',
--- a/editcommands.html Mon May 02 13:38:09 2011 -0600
+++ b/editcommands.html Mon May 02 15:57:04 2011 -0600
@@ -1877,6 +1877,8 @@
<dd><strong>Action</strong>:
+<p class=XXX>Does not handle lists at all (this is item #1 on my to-do list).
+
<p class=XXX>Handle corner cases: endpoints are detached, documents, document
fragments, html/body, head or things in head . . .
@@ -2084,6 +2086,162 @@
<dd><strong>Value</strong>:
+<!--
+Research for insertOrderedList/insertUnorderedList: tested the following
+command sequences in IE9, Firefox 4.0, Chrome 12 dev, Opera 11.10,
+OpenOffice.org 3.2.1 Ubuntu package, Microsoft Office Word 2007. The commands
+"ol", "ul", "indent", "outdent" correspond in browsers to "insertOrderedList",
+"insertUnorderedList", "indent", and "outdent"; in OO.org to "Numbering
+On/Off", "Bullets On/Off", "Increase Indent", "Decrease Indent"; and in Word to
+"Numbering", "Bullets", "Increase Indent", "Decrease Indent".
+
+Note: OO has a bunch of extra options, like "Promote One Level", "Demote One
+Level", "Promote One Level With Subpoints", "Demote One Level With Subpoints",
+"Insert Unnumbered Entry", "Restart Numbering". The regular "Increase/Decrease
+Indent" commands work oddly, and I assume they're not really meant to be used
+inside lists. Thus I also tested with "Promote One Level" and "Demote One
+Level". These are denoted by OO' instead of OO.
+
+Assume that there are style rules in effect like
+
+ol ol { list-style-type: lower-alpha }
+ol ol ol { list-style-type: lower-roman }
+
+This is the default appearance in Word, and I set OO to something similar with
+Bullets and Numbering -> Outline in the list editing toolbox. I'm ignoring
+bullet style throughout, for no particular reason.
+
+* In an existing ordered list equivalent to <ol><li>foo<li>bar<li>baz</ol>quz:
+ * Select "bar", do "ol":
+ * Word/OO: Remove indent, change "3" to "2".
+ * Browsers: Remove indent, change "3" to "1".
+ * Correct behavior: Unclear.
+ * Select "bar", do "ul":
+ * Word: Leave indent the same, change "2" to a bullet, change "3" to "2".
+ * OO: Increase indent, change "2" to a bullet, change "3" to "2".
+ * IE: Change all numbers to bullets.
+ * Firefox/Chrome/Opera: Leave indent the same, change "2" to a bullet, change "3" to "1".
+ * Correct behavior: Either Word, or Firefox/Chrome/Opera. Unclear.
+ * Select "bar", do "indent":
+ * Word/OO'/Browsers: Increase indent, change "2" to "a", change "3" to "2".
+ * OO: Increase indent, do not change any numbers.
+ * Correct behavior: OO'/Word/Browsers.
+ * Select "bar", do "outdent":
+ * Word: Do nothing.
+ * OO: Leave indent the same, de-indent "2" so it goes past the left margin (?!), do not change any numbers.
+ * OO': Option grayed out.
+ * Browsers: Remove indent and the number "2", change "3" to "1".
+ * Correct behavior: Probably should be the same as "ol".
+ * Select "quz", do "ol":
+ * Word/OO/IE/Chrome: Add as fourth item to existing list, numbered "4".
+ * Firefox/Opera: Create new list, number the item "1".
+ * Correct behavior: OO/Word/IE/Chrome.
+* In an existing nested ordered list equivalent to <ol><li>foo<ol><li>bar<li>baz</ol><li>quz</ol>:
+ * Select "bar", do "ol":
+ * Word/IE/Firefox: Decrease indent, remove "a" ("bar" is aligned with "foo" with no marker of its own), change "b" -> "a".
+ * OO: Remove all indent, change "b" -> "a".
+ * Chrome: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "3".
+ * Opera: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "4", insert extra "3" list marker before new "a".
+ * Correct behavior: Either Word/IE/Firefox or Chrome. Unclear.
+ * Select "bar", do "ul":
+ * Word/Firefox/Chrome: Change "a" -> bullet, "b" -> "a".
+ * OO: Increase indent, change "a" -> bullet, "b" -> "a".
+ * IE: Change "a" and "b" to bullets.
+ * Opera: Change "a" -> bullet, "b" -> "a", "2" -> "4", insert extra list markers "2" and "3" before new bullet and "a".
+ * Correct behavior: Presumably Word/Firefox/Chrome.
+ * Select "bar", do "indent":
+ * Word/OO'/IE: Increase indent, change "a" -> "i", leave "b" alone.
+ * OO: Increase indent, do not change numbers.
+ * Firefox/Chrome/Opera: Increase indent, change "a" -> "i", "b" -> "a".
+ * Correct behavior: Either OO'/Word/IE, or Firefox/Chrome/Opera. Unclear.
+ * Select "bar", do "outdent":
+ * Word/OO'/IE/Chrome: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "3".
+ * OO: Leave indent the same, de-indent "a" so it goes past the left margin (?!).
+ * Firefox: Decrease indent, remove "a" ("bar" is aligned with "foo" with no marker of its own), change "b" -> "a".
+ * Opera: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "4", insert extra list marker "3" before new "a".
+ * Correct behavior: Probably should be the same as "ol".
+* In existing nested lists equivalent to <ol><li>foo<ul><li>bar<li>baz</ul><li>quz</ol>:
+ * Select "bar", do "ol":
+ * Word: Change all bullets to numbers. (Not letters, even though indented!)
+ * OO: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * IE: Change all bullets to letters.
+ * Firefox/Chrome: Change first bullet to "a".
+ * Opera: Change first bullet -> "a", "2" -> "4", insert extra list markers "2" and "3" before new "a" and bullet.
+ * Correct behavior: Presumably Firefox/Chrome.
+ * Select "bar", do "ul":
+ * Word/IE/Firefox: Decrease indent, remove first bullet ("bar" is aligned with "foo" with no marker of its own).
+ * OO: Remove all indent, remove first bullet, leave all else the same.
+ * Chrome: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * Opera: Decrease indent, change first bullet -> "2", "2" -> "4", insert extra list marker "3" before old bullet.
+ * Correct behavior: Either Word/IE/Firefox or Chrome. Unclear.
+ * Select "bar", do "indent":
+ * Word: Increase indent, change first bullet to "i" (?!).
+ * OO/OO'/Firefox/Chrome/Opera: Increase indent.
+ * IE: Increase indent, change "2" -> "3" (?!?!). (I don't see from the markup why the 2 actually changes to a 3. The markup seems to be as other browsers.)
+ * Correct behavior: OO/OO'/Firefox/Chrome/Opera.
+ * Select "bar", do "outdent":
+ * Word/IE/Chrome: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * OO: Usual crazy stuff, move bullet left but leave text alone.
+ * OO': Option grayed out. (Interesting.)
+ * Firefox: Decrease indent, remove first bullet ("bar" is aligned with "foo" with no marker of its own).
+ * Opera: Decrease indent, change first bullet -> "2", "2" -> "4", insert extra list marker "3" before old bullet.
+ * Correct behavior: Either Word/IE/Chrome or Firefox. Unclear.
+
+Ignoring the conceptual model of HTML, which users won't understand, here's the
+conceptual model I've developed for lists: text is divided up into blocks.
+Each block has an indentation level and a list marker type. The list marker
+type can be either nothing, ordered, or unordered. A list block cannot have
+indentation level less than one. Any given piece of text is part of only one
+block.
+
+To find the right number (or letter) for an ordered-list block, look at the
+immediately preceding block, but skip over any blocks of higher indentation
+level. If there is no immediately preceding block, or it's not an ordered-list
+block, or it has a lower indentation level, the number is 1 (or a, i, etc.).
+Otherwise, it's the number of the preceding block plus one.
+
+ol/ul commands change the selected block to that list marker type, or remove
+the list marker type if it's already the chosen type. If the block has
+indentation level zero, it increases to one.
+
+indent/outdent commands change the selected block's indentation level. If a
+list block's indentation level is reduced to zero, it's converted to a regular
+block.
+
+What this means from an HTML perspective, roughly:
+
+* A block is basically a line of text, like a CSS line box.
+* Indentation level is equal to the number of ancestor elements that are either
+ <li>s or indentation elements (blockquotes or indenting divs).
+* To find the list marker type, go to the first ancestor that's either an <li>
+ or indentation element.
+* Correct numbering should automatically follow from the way <ol> works in HTML
+ (which is one of the reasons I use this model).
+* An ol command in an ordered-list block decreases the indentation level by
+ one, and either merges with the previous block or adopts its list marker
+ type. In an unordered-list block, it breaks up the parent <ul> and creates a
+ new one-element <ol>, or merges with the next or previous <ol> if any. In a
+ non-list block, it creates a new <ol>, or merges with the next or previous
+ <ol> if any. The ul command works similarly.
+* indent in a non-list block wraps in an indentation element. In a list block,
+ it wraps the <li> in an extra <ol> or <ul> as appropriate. (This often
+ creates non-conforming markup, like
+ <ol><li>foo</li><ol><li>bar</li></ol></ol>.)
+* outdent in a non-list block strips an indentation element, if one is present.
+ In a list block, it breaks apart the parent <ol> or <ul> and makes the
+ affected block a sibling in between the newly-split list elements.
+
+Problem: a block needs to be able to have multiple lines. If it's a list
+block, this means it gets no extra markers, just one for the whole block. This
+means it has to be possible to have non-contiguous blocks, for cases like
+<ol><li>foo<ol><li>bar</ol>baz</ol>. We cannot simply consider "foo" and "baz"
+to be in separate blocks, because then baz has to have a list marker type of
+none, which will mess up subsequent list numbering and be indistinguishable
+from <ol><li>foo<ol><li>bar</ol></ol><blockquote>baz</blockquote>. What's the
+expected behavior here? Needs testing.
+-->
+
+
<dt><code title=""><dfn id=command-italic title=command-italic>italic</dfn></code>
<dd><strong>Action</strong>: <a href=#decompose>Decompose</a> the <a class=external data-anolis-spec=domrange href=http://html5.org/specs/dom-range.html#concept-range title=concept-range>range</a>. If the
@@ -2105,6 +2263,8 @@
<dd><strong>Action</strong>:
+<p class=XXX>Does not handle lists at all (this is item #1 on my to-do list).
+
<ol>
<li><a href=#block-extend>Block-extend</a> the <a class=external data-anolis-spec=domrange href=http://html5.org/specs/dom-range.html#concept-range title=concept-range>range</a>, and let <var title="">new range</var> be
the result.
--- a/source.html Mon May 02 13:38:09 2011 -0600
+++ b/source.html Mon May 02 15:57:04 2011 -0600
@@ -1893,6 +1893,8 @@
<dd><strong>Action</strong>:
+<p class=XXX>Does not handle lists at all (this is item #1 on my to-do list).
+
<p class=XXX>Handle corner cases: endpoints are detached, documents, document
fragments, html/body, head or things in head . . .
@@ -2121,6 +2123,162 @@
<dd><strong>Value</strong>:
+<!--
+Research for insertOrderedList/insertUnorderedList: tested the following
+command sequences in IE9, Firefox 4.0, Chrome 12 dev, Opera 11.10,
+OpenOffice.org 3.2.1 Ubuntu package, Microsoft Office Word 2007. The commands
+"ol", "ul", "indent", "outdent" correspond in browsers to "insertOrderedList",
+"insertUnorderedList", "indent", and "outdent"; in OO.org to "Numbering
+On/Off", "Bullets On/Off", "Increase Indent", "Decrease Indent"; and in Word to
+"Numbering", "Bullets", "Increase Indent", "Decrease Indent".
+
+Note: OO has a bunch of extra options, like "Promote One Level", "Demote One
+Level", "Promote One Level With Subpoints", "Demote One Level With Subpoints",
+"Insert Unnumbered Entry", "Restart Numbering". The regular "Increase/Decrease
+Indent" commands work oddly, and I assume they're not really meant to be used
+inside lists. Thus I also tested with "Promote One Level" and "Demote One
+Level". These are denoted by OO' instead of OO.
+
+Assume that there are style rules in effect like
+
+ol ol { list-style-type: lower-alpha }
+ol ol ol { list-style-type: lower-roman }
+
+This is the default appearance in Word, and I set OO to something similar with
+Bullets and Numbering -> Outline in the list editing toolbox. I'm ignoring
+bullet style throughout, for no particular reason.
+
+* In an existing ordered list equivalent to <ol><li>foo<li>bar<li>baz</ol>quz:
+ * Select "bar", do "ol":
+ * Word/OO: Remove indent, change "3" to "2".
+ * Browsers: Remove indent, change "3" to "1".
+ * Correct behavior: Unclear.
+ * Select "bar", do "ul":
+ * Word: Leave indent the same, change "2" to a bullet, change "3" to "2".
+ * OO: Increase indent, change "2" to a bullet, change "3" to "2".
+ * IE: Change all numbers to bullets.
+ * Firefox/Chrome/Opera: Leave indent the same, change "2" to a bullet, change "3" to "1".
+ * Correct behavior: Either Word, or Firefox/Chrome/Opera. Unclear.
+ * Select "bar", do "indent":
+ * Word/OO'/Browsers: Increase indent, change "2" to "a", change "3" to "2".
+ * OO: Increase indent, do not change any numbers.
+ * Correct behavior: OO'/Word/Browsers.
+ * Select "bar", do "outdent":
+ * Word: Do nothing.
+ * OO: Leave indent the same, de-indent "2" so it goes past the left margin (?!), do not change any numbers.
+ * OO': Option grayed out.
+ * Browsers: Remove indent and the number "2", change "3" to "1".
+ * Correct behavior: Probably should be the same as "ol".
+ * Select "quz", do "ol":
+ * Word/OO/IE/Chrome: Add as fourth item to existing list, numbered "4".
+ * Firefox/Opera: Create new list, number the item "1".
+ * Correct behavior: OO/Word/IE/Chrome.
+* In an existing nested ordered list equivalent to <ol><li>foo<ol><li>bar<li>baz</ol><li>quz</ol>:
+ * Select "bar", do "ol":
+ * Word/IE/Firefox: Decrease indent, remove "a" ("bar" is aligned with "foo" with no marker of its own), change "b" -> "a".
+ * OO: Remove all indent, change "b" -> "a".
+ * Chrome: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "3".
+ * Opera: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "4", insert extra "3" list marker before new "a".
+ * Correct behavior: Either Word/IE/Firefox or Chrome. Unclear.
+ * Select "bar", do "ul":
+ * Word/Firefox/Chrome: Change "a" -> bullet, "b" -> "a".
+ * OO: Increase indent, change "a" -> bullet, "b" -> "a".
+ * IE: Change "a" and "b" to bullets.
+ * Opera: Change "a" -> bullet, "b" -> "a", "2" -> "4", insert extra list markers "2" and "3" before new bullet and "a".
+ * Correct behavior: Presumably Word/Firefox/Chrome.
+ * Select "bar", do "indent":
+ * Word/OO'/IE: Increase indent, change "a" -> "i", leave "b" alone.
+ * OO: Increase indent, do not change numbers.
+ * Firefox/Chrome/Opera: Increase indent, change "a" -> "i", "b" -> "a".
+ * Correct behavior: Either OO'/Word/IE, or Firefox/Chrome/Opera. Unclear.
+ * Select "bar", do "outdent":
+ * Word/OO'/IE/Chrome: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "3".
+ * OO: Leave indent the same, de-indent "a" so it goes past the left margin (?!).
+ * Firefox: Decrease indent, remove "a" ("bar" is aligned with "foo" with no marker of its own), change "b" -> "a".
+ * Opera: Decrease indent, change "a" -> "2", "b" -> "a", "2" -> "4", insert extra list marker "3" before new "a".
+ * Correct behavior: Probably should be the same as "ol".
+* In existing nested lists equivalent to <ol><li>foo<ul><li>bar<li>baz</ul><li>quz</ol>:
+ * Select "bar", do "ol":
+ * Word: Change all bullets to numbers. (Not letters, even though indented!)
+ * OO: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * IE: Change all bullets to letters.
+ * Firefox/Chrome: Change first bullet to "a".
+ * Opera: Change first bullet -> "a", "2" -> "4", insert extra list markers "2" and "3" before new "a" and bullet.
+ * Correct behavior: Presumably Firefox/Chrome.
+ * Select "bar", do "ul":
+ * Word/IE/Firefox: Decrease indent, remove first bullet ("bar" is aligned with "foo" with no marker of its own).
+ * OO: Remove all indent, remove first bullet, leave all else the same.
+ * Chrome: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * Opera: Decrease indent, change first bullet -> "2", "2" -> "4", insert extra list marker "3" before old bullet.
+ * Correct behavior: Either Word/IE/Firefox or Chrome. Unclear.
+ * Select "bar", do "indent":
+ * Word: Increase indent, change first bullet to "i" (?!).
+ * OO/OO'/Firefox/Chrome/Opera: Increase indent.
+ * IE: Increase indent, change "2" -> "3" (?!?!). (I don't see from the markup why the 2 actually changes to a 3. The markup seems to be as other browsers.)
+ * Correct behavior: OO/OO'/Firefox/Chrome/Opera.
+ * Select "bar", do "outdent":
+ * Word/IE/Chrome: Decrease indent, change first bullet -> "2", "2" -> "3".
+ * OO: Usual crazy stuff, move bullet left but leave text alone.
+ * OO': Option grayed out. (Interesting.)
+ * Firefox: Decrease indent, remove first bullet ("bar" is aligned with "foo" with no marker of its own).
+ * Opera: Decrease indent, change first bullet -> "2", "2" -> "4", insert extra list marker "3" before old bullet.
+ * Correct behavior: Either Word/IE/Chrome or Firefox. Unclear.
+
+Ignoring the conceptual model of HTML, which users won't understand, here's the
+conceptual model I've developed for lists: text is divided up into blocks.
+Each block has an indentation level and a list marker type. The list marker
+type can be either nothing, ordered, or unordered. A list block cannot have
+indentation level less than one. Any given piece of text is part of only one
+block.
+
+To find the right number (or letter) for an ordered-list block, look at the
+immediately preceding block, but skip over any blocks of higher indentation
+level. If there is no immediately preceding block, or it's not an ordered-list
+block, or it has a lower indentation level, the number is 1 (or a, i, etc.).
+Otherwise, it's the number of the preceding block plus one.
+
+ol/ul commands change the selected block to that list marker type, or remove
+the list marker type if it's already the chosen type. If the block has
+indentation level zero, it increases to one.
+
+indent/outdent commands change the selected block's indentation level. If a
+list block's indentation level is reduced to zero, it's converted to a regular
+block.
+
+What this means from an HTML perspective, roughly:
+
+* A block is basically a line of text, like a CSS line box.
+* Indentation level is equal to the number of ancestor elements that are either
+ <li>s or indentation elements (blockquotes or indenting divs).
+* To find the list marker type, go to the first ancestor that's either an <li>
+ or indentation element.
+* Correct numbering should automatically follow from the way <ol> works in HTML
+ (which is one of the reasons I use this model).
+* An ol command in an ordered-list block decreases the indentation level by
+ one, and either merges with the previous block or adopts its list marker
+ type. In an unordered-list block, it breaks up the parent <ul> and creates a
+ new one-element <ol>, or merges with the next or previous <ol> if any. In a
+ non-list block, it creates a new <ol>, or merges with the next or previous
+ <ol> if any. The ul command works similarly.
+* indent in a non-list block wraps in an indentation element. In a list block,
+ it wraps the <li> in an extra <ol> or <ul> as appropriate. (This often
+ creates non-conforming markup, like
+ <ol><li>foo</li><ol><li>bar</li></ol></ol>.)
+* outdent in a non-list block strips an indentation element, if one is present.
+ In a list block, it breaks apart the parent <ol> or <ul> and makes the
+ affected block a sibling in between the newly-split list elements.
+
+Problem: a block needs to be able to have multiple lines. If it's a list
+block, this means it gets no extra markers, just one for the whole block. This
+means it has to be possible to have non-contiguous blocks, for cases like
+<ol><li>foo<ol><li>bar</ol>baz</ol>. We cannot simply consider "foo" and "baz"
+to be in separate blocks, because then baz has to have a list marker type of
+none, which will mess up subsequent list numbering and be indistinguishable
+from <ol><li>foo<ol><li>bar</ol></ol><blockquote>baz</blockquote>. What's the
+expected behavior here? Needs testing.
+-->
+
+
<dt><code title><dfn title=command-italic>italic</dfn></code>
<dd><strong>Action</strong>: <span>Decompose</span> the [[range]]. If the
@@ -2142,6 +2300,8 @@
<dd><strong>Action</strong>:
+<p class=XXX>Does not handle lists at all (this is item #1 on my to-do list).
+
<ol>
<li><span>Block-extend</span> the [[range]], and let <var>new range</var> be
the result.