diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs index 7e7eeea5f..54417e01f 100644 --- a/crates/typst-syntax/src/parser.rs +++ b/crates/typst-syntax/src/parser.rs @@ -121,6 +121,7 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) { | SyntaxKind::Link | SyntaxKind::Label => p.eat(), + SyntaxKind::DecoratorMarker => decorator(p), SyntaxKind::Hash => embedded_code_expr(p), SyntaxKind::Star => strong(p), SyntaxKind::Underscore => emph(p), @@ -146,6 +147,19 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) { *at_start = false; } +fn decorator(p: &mut Parser) { + let m = p.marker(); + p.enter(LexMode::Decorator); + p.assert(SyntaxKind::DecoratorMarker); + + while !p.end() { + p.eat(); + } + + p.exit(); + p.wrap(m, SyntaxKind::Decorator); +} + /// Parses strong content: `*Strong*`. fn strong(p: &mut Parser) { const END: SyntaxSet = SyntaxSet::new() diff --git a/crates/typst-syntax/src/set.rs b/crates/typst-syntax/src/set.rs index 39e64651b..b5b19b466 100644 --- a/crates/typst-syntax/src/set.rs +++ b/crates/typst-syntax/src/set.rs @@ -54,6 +54,7 @@ pub const MARKUP_EXPR: SyntaxSet = SyntaxSet::new() .add(SyntaxKind::Parbreak) .add(SyntaxKind::LineComment) .add(SyntaxKind::BlockComment) + .add(SyntaxKind::DecoratorMarker) .add(SyntaxKind::Text) .add(SyntaxKind::Linebreak) .add(SyntaxKind::Escape)