diff options
Diffstat (limited to 'src/syntax/parser.rs')
| -rw-r--r-- | src/syntax/parser.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index 201d78fa..127a89d5 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -104,8 +104,7 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) { | SyntaxKind::SmartQuote | SyntaxKind::Raw | SyntaxKind::Link - | SyntaxKind::Label - | SyntaxKind::Ref => p.eat(), + | SyntaxKind::Label => p.eat(), SyntaxKind::Hashtag => embedded_code_expr(p), SyntaxKind::Star => strong(p), @@ -114,6 +113,7 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) { 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 => formula(p), SyntaxKind::LeftBracket @@ -198,6 +198,15 @@ fn term_item(p: &mut Parser) { p.wrap(m, SyntaxKind::TermItem); } +fn reference(p: &mut Parser) { + let m = p.marker(); + p.assert(SyntaxKind::RefMarker); + if p.directly_at(SyntaxKind::LeftBracket) { + content_block(p); + } + p.wrap(m, SyntaxKind::Ref); +} + fn whitespace_line(p: &mut Parser) { while !p.newline() && p.current().is_trivia() { p.eat(); |
