diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-05-17 14:41:46 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-05-17 14:41:46 +0200 |
| commit | 551ea99d05166b0be50792f767ddd38b996e32fa (patch) | |
| tree | ec5e86a087e79e8c181c7d4b904216a775227e2d /src/syntax/parser.rs | |
| parent | 46aace78ac4ac1c075b9b1670dbb7372df1a0a82 (diff) | |
Show default values in documentation
Fixes #169
Fixes #1102
Diffstat (limited to 'src/syntax/parser.rs')
| -rw-r--r-- | src/syntax/parser.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index 7fdba4bd..c7dbc936 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -18,7 +18,10 @@ pub fn parse(text: &str) -> SyntaxNode { /// This is only used for syntax highlighting. pub fn parse_code(text: &str) -> SyntaxNode { let mut p = Parser::new(text, 0, LexMode::Code); - code(&mut p, |_| false); + let m = p.marker(); + p.skip(); + code_exprs(&mut p, |_| false); + p.wrap_skipless(m, SyntaxKind::Code); p.finish().into_iter().next().unwrap() } @@ -511,8 +514,13 @@ fn maybe_wrap_in_math(p: &mut Parser, arg: Marker, named: Option<Marker>) { } } -fn code(p: &mut Parser, mut stop: impl FnMut(SyntaxKind) -> bool) { +fn code(p: &mut Parser, stop: impl FnMut(SyntaxKind) -> bool) { let m = p.marker(); + code_exprs(p, stop); + p.wrap(m, SyntaxKind::Code); +} + +fn code_exprs(p: &mut Parser, mut stop: impl FnMut(SyntaxKind) -> bool) { while !p.eof() && !stop(p.current()) { p.stop_at_newline(true); let prev = p.prev_end(); @@ -529,7 +537,6 @@ fn code(p: &mut Parser, mut stop: impl FnMut(SyntaxKind) -> bool) { p.unexpected(); } } - p.wrap(m, SyntaxKind::Code); } fn code_expr(p: &mut Parser) { @@ -1474,10 +1481,14 @@ impl<'s> Parser<'s> { fn wrap(&mut self, m: Marker, kind: SyntaxKind) { self.unskip(); + self.wrap_skipless(m, kind); + self.skip(); + } + + fn wrap_skipless(&mut self, m: Marker, kind: SyntaxKind) { let from = m.0.min(self.nodes.len()); let children = self.nodes.drain(from..).collect(); self.nodes.push(SyntaxNode::inner(kind, children)); - self.skip(); } fn progress(&self, offset: usize) -> bool { |
