Lots of research on lists
authorAryeh Gregor <AryehGregor+gitcommit@gmail.com>
Mon, 02 May 2011 15:57:04 -0600
changeset 79 31a92c8d8838
parent 78 82b1d1b77eb6
child 80 5091444fe74e
Lots of research on lists
autoimplementation.html
editcommands.html
source.html
--- 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.