From c38d55614af0226be8eb3f3e1500da8b7be2fec8 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 9 Dec 2022 21:22:23 +0100 Subject: A few math fixes --- src/syntax/kind.rs | 10 +++++++++- src/syntax/parser.rs | 10 +++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src/syntax') 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() { -- cgit v1.2.3