summaryrefslogtreecommitdiff
path: root/src/syntax
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-12-09 21:22:23 +0100
committerLaurenz <laurmaedje@gmail.com>2022-12-09 21:22:23 +0100
commitc38d55614af0226be8eb3f3e1500da8b7be2fec8 (patch)
tree88ab7d81cbb849d8592baf32a4e5de5a8c9e36ab /src/syntax
parentcd089b6194c57b2e8dff70efaa7cbd53035f7327 (diff)
A few math fixes
Diffstat (limited to 'src/syntax')
-rw-r--r--src/syntax/kind.rs10
-rw-r--r--src/syntax/parser.rs10
2 files changed, 16 insertions, 4 deletions
diff --git a/src/syntax/kind.rs b/src/syntax/kind.rs
index d5fda7f8..d29808d3 100644
--- a/src/syntax/kind.rs
+++ b/src/syntax/kind.rs
@@ -405,7 +405,15 @@ impl SyntaxKind {
Self::EnumNumbering(_) => "enumeration item numbering",
Self::DescItem => "description list item",
Self::Math => "math formula",
- Self::Atom(_) => "math atom",
+ Self::Atom(s) => match s.as_str() {
+ "(" => "opening paren",
+ ")" => "closing paren",
+ "{" => "opening brace",
+ "}" => "closing brace",
+ "[" => "opening bracket",
+ "]" => "closing bracket",
+ _ => "math atom",
+ },
Self::Script => "script",
Self::Frac => "fraction",
Self::AlignPoint => "alignment point",
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs
index 3e133fe1..a0b1e7d1 100644
--- a/src/syntax/parser.rs
+++ b/src/syntax/parser.rs
@@ -338,9 +338,13 @@ impl<'s> Parser<'s> {
Some(SyntaxKind::RightParen) => self.inside(Group::Paren),
Some(SyntaxKind::Star) => self.inside(Group::Strong),
Some(SyntaxKind::Underscore) => self.inside(Group::Emph),
- Some(SyntaxKind::Dollar) => {
- self.groups.last().map(|group| group.kind) == Some(Group::Math)
- }
+ Some(SyntaxKind::Dollar) => self
+ .groups
+ .iter()
+ .rev()
+ .skip_while(|group| matches!(group.kind, Group::MathRow(..)))
+ .next()
+ .map_or(false, |group| group.kind == Group::Math),
Some(SyntaxKind::Semicolon) => self.inside(Group::Expr),
Some(SyntaxKind::From) => self.inside(Group::Imports),
Some(SyntaxKind::Atom(s)) => match s.as_str() {