summaryrefslogtreecommitdiff
path: root/src/syntax/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax/parser.rs')
-rw-r--r--src/syntax/parser.rs13
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();