From 1a00df68c77fed19363878bca1e375fdce8e0d60 Mon Sep 17 00:00:00 2001 From: wznmickey Date: Wed, 22 Jan 2025 16:51:53 -0500 Subject: [PATCH] support sub term --- crates/typst-syntax/src/parser.rs | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs index c94192cb2..9fc98704d 100644 --- a/crates/typst-syntax/src/parser.rs +++ b/crates/typst-syntax/src/parser.rs @@ -107,13 +107,15 @@ fn markup_expr(p: &mut Parser, at_start: bool, nesting: &mut usize) { SyntaxKind::Star => strong(p), SyntaxKind::Underscore => emph(p), SyntaxKind::HeadingMarker if at_start => heading(p), - SyntaxKind::ListMarker => list_item(p), - SyntaxKind::EnumMarker => enum_item(p), + SyntaxKind::ListMarker if at_start => list_item(p), + SyntaxKind::EnumMarker if at_start => enum_item(p), SyntaxKind::TermMarker if at_start => term_item(p), SyntaxKind::RefMarker => reference(p), SyntaxKind::Dollar => equation(p), SyntaxKind::HeadingMarker + | SyntaxKind::ListMarker + | SyntaxKind::EnumMarker | SyntaxKind::TermMarker | SyntaxKind::Colon => p.convert_and_eat(SyntaxKind::Text), @@ -155,34 +157,20 @@ fn heading(p: &mut Parser) { /// Parses an item in a bullet list: `- ...`. fn list_item(p: &mut Parser) { - let mut column = 0; - for i in (0..p.current_start()).rev() { - if p.text.chars().nth(i) == Some('\n') { - column = i; - break; - } - } - p.with_nl_mode(AtNewline::RequireColumn(p.current_start() - column), |p| { + p.with_nl_mode(AtNewline::RequireColumn(p.current_column()), |p| { let m = p.marker(); p.assert(SyntaxKind::ListMarker); - markup(p, false, false, syntax_set!(RightBracket, End)); + markup(p, true, false, syntax_set!(RightBracket, End)); p.wrap(m, SyntaxKind::ListItem); }); } /// Parses an item in an enumeration (numbered list): `+ ...` or `1. ...`. fn enum_item(p: &mut Parser) { - let mut column = 0; - for i in (0..p.current_start()).rev() { - if p.text.chars().nth(i) == Some('\n') { - column = i; - break; - } - } - p.with_nl_mode(AtNewline::RequireColumn(p.current_start() - column), |p| { + p.with_nl_mode(AtNewline::RequireColumn(p.current_column()), |p| { let m = p.marker(); p.assert(SyntaxKind::EnumMarker); - markup(p, false, false, syntax_set!(RightBracket, End)); + markup(p, true, false, syntax_set!(RightBracket, End)); p.wrap(m, SyntaxKind::EnumItem); }); } @@ -196,7 +184,7 @@ fn term_item(p: &mut Parser) { markup(p, false, false, syntax_set!(Colon, RightBracket, End)); }); p.expect(SyntaxKind::Colon); - markup(p, false, false, syntax_set!(RightBracket, End)); + markup(p, true, false, syntax_set!(RightBracket, End)); p.wrap(m, SyntaxKind::TermItem); }); }