summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-09-26 16:25:40 +0200
committerLaurenz <laurmaedje@gmail.com>2022-09-26 16:25:40 +0200
commitabafb39041d47f1fe4281c60cb4e3e40db2181d1 (patch)
tree65b321218510857671175d0388162317783c6030
parent704f2fbaf1b4483caa12f249a222c49e44f08961 (diff)
Fix bad list interaction
Fixes #87
-rw-r--r--src/model/content.rs5
-rw-r--r--src/parse/parser.rs4
-rw-r--r--tests/ref/structure/enum.pngbin29125 -> 27743 bytes
-rw-r--r--tests/typ/structure/enum.typ15
4 files changed, 15 insertions, 9 deletions
diff --git a/src/model/content.rs b/src/model/content.rs
index ae074b50..7828a3cd 100644
--- a/src/model/content.rs
+++ b/src/model/content.rs
@@ -413,6 +413,11 @@ impl<'a> Builder<'a> {
self.interrupt(Interruption::List, styles, false)?;
+ if let Content::Item(_) = content {
+ self.list.accept(content, styles);
+ return Ok(());
+ }
+
if self.par.accept(content, styles) {
return Ok(());
}
diff --git a/src/parse/parser.rs b/src/parse/parser.rs
index 90b6e610..f8ea9614 100644
--- a/src/parse/parser.rs
+++ b/src/parse/parser.rs
@@ -454,8 +454,8 @@ impl Marker {
/// Wrap all children after the marker (excluding trailing trivia) in a node
/// with the given `kind`.
pub fn end(self, p: &mut Parser, kind: NodeKind) {
- let until = p.trivia_start();
- let children = p.children.drain(self.0 .. until.0).collect();
+ let until = p.trivia_start().0.max(self.0);
+ let children = p.children.drain(self.0 .. until).collect();
p.children
.insert(self.0, InnerNode::with_children(kind, children).into());
}
diff --git a/tests/ref/structure/enum.png b/tests/ref/structure/enum.png
index 20bb08d4..f58a6c85 100644
--- a/tests/ref/structure/enum.png
+++ b/tests/ref/structure/enum.png
Binary files differ
diff --git a/tests/typ/structure/enum.typ b/tests/typ/structure/enum.typ
index eb1d9a9d..4ff13ff4 100644
--- a/tests/typ/structure/enum.typ
+++ b/tests/typ/structure/enum.typ
@@ -5,14 +5,9 @@
---
1. First.
- 2. Second.
+ 2. Indented
-1. Back to first.
-
----
-2. Second
-1. First
- + Indented
++ Second
---
// Test automatic numbering in summed content.
@@ -36,6 +31,12 @@
+ B
---
+// Mix of different lists
+- List
++ Enum
+/ Desc: List
+
+---
// Test label closure.
#enum(
start: 4,