diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-01-20 14:05:17 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-01-20 14:05:35 +0100 |
| commit | dd331f007cb9c9968605f8d3eaef8fb498c21322 (patch) | |
| tree | f1b1490758ec53fd204724a325158d16c980d131 /src/ide/highlight.rs | |
| parent | 40561e57fbbc68becac07acd54a34f94f591f277 (diff) | |
Rewrite parser
Diffstat (limited to 'src/ide/highlight.rs')
| -rw-r--r-- | src/ide/highlight.rs | 86 |
1 files changed, 41 insertions, 45 deletions
diff --git a/src/ide/highlight.rs b/src/ide/highlight.rs index cc502537..42c05002 100644 --- a/src/ide/highlight.rs +++ b/src/ide/highlight.rs @@ -83,9 +83,41 @@ impl Category { /// highlighted. pub fn highlight(node: &LinkedNode) -> Option<Category> { match node.kind() { - SyntaxKind::LineComment => Some(Category::Comment), - SyntaxKind::BlockComment => Some(Category::Comment), - SyntaxKind::Space { .. } => None, + SyntaxKind::Markup + if node.parent_kind() == Some(SyntaxKind::TermItem) + && node.next_sibling().as_ref().map(|v| v.kind()) + == Some(SyntaxKind::Colon) => + { + Some(Category::ListTerm) + } + SyntaxKind::Markup => None, + SyntaxKind::Text => None, + SyntaxKind::Space => None, + SyntaxKind::Linebreak => Some(Category::Escape), + SyntaxKind::Parbreak => None, + SyntaxKind::Escape => Some(Category::Escape), + SyntaxKind::Shorthand => Some(Category::Escape), + SyntaxKind::Symbol => Some(Category::Escape), + SyntaxKind::SmartQuote => None, + SyntaxKind::Strong => Some(Category::Strong), + SyntaxKind::Emph => Some(Category::Emph), + SyntaxKind::Raw => Some(Category::Raw), + SyntaxKind::Link => Some(Category::Link), + SyntaxKind::Label => Some(Category::Label), + SyntaxKind::Ref => Some(Category::Ref), + SyntaxKind::Heading => Some(Category::Heading), + SyntaxKind::HeadingMarker => None, + SyntaxKind::ListItem => None, + SyntaxKind::ListMarker => Some(Category::ListMarker), + SyntaxKind::EnumItem => None, + SyntaxKind::EnumMarker => Some(Category::ListMarker), + SyntaxKind::TermItem => None, + SyntaxKind::TermMarker => Some(Category::ListMarker), + SyntaxKind::Math => None, + SyntaxKind::Atom => None, + SyntaxKind::Script => None, + SyntaxKind::Frac => None, + SyntaxKind::AlignPoint => Some(Category::MathOperator), SyntaxKind::LeftBrace => Some(Category::Punctuation), SyntaxKind::RightBrace => Some(Category::Punctuation), @@ -105,16 +137,9 @@ pub fn highlight(node: &LinkedNode) -> Option<Category> { _ => None, }, SyntaxKind::Dollar => Some(Category::MathDelimiter), - SyntaxKind::Plus => Some(match node.parent_kind() { - Some(SyntaxKind::EnumItem) => Category::ListMarker, - _ => Category::Operator, - }), - SyntaxKind::Minus => Some(match node.parent_kind() { - Some(SyntaxKind::ListItem) => Category::ListMarker, - _ => Category::Operator, - }), + SyntaxKind::Plus => Some(Category::Operator), + SyntaxKind::Minus => Some(Category::Operator), SyntaxKind::Slash => Some(match node.parent_kind() { - Some(SyntaxKind::TermItem) => Category::ListMarker, Some(SyntaxKind::Frac) => Category::MathOperator, _ => Category::Operator, }), @@ -157,41 +182,9 @@ pub fn highlight(node: &LinkedNode) -> Option<Category> { SyntaxKind::Include => Some(Category::Keyword), SyntaxKind::As => Some(Category::Keyword), - SyntaxKind::Markup { .. } - if node.parent_kind() == Some(SyntaxKind::TermItem) - && node.next_sibling().as_ref().map(|v| v.kind()) - == Some(SyntaxKind::Colon) => - { - Some(Category::ListTerm) - } - SyntaxKind::Markup { .. } => None, - - SyntaxKind::Text => None, - SyntaxKind::Linebreak => Some(Category::Escape), - SyntaxKind::Escape => Some(Category::Escape), - SyntaxKind::Shorthand => Some(Category::Escape), - SyntaxKind::Symbol => Some(Category::Escape), - SyntaxKind::SmartQuote { .. } => None, - SyntaxKind::Strong => Some(Category::Strong), - SyntaxKind::Emph => Some(Category::Emph), - SyntaxKind::Raw { .. } => Some(Category::Raw), - SyntaxKind::Link => Some(Category::Link), - SyntaxKind::Label => Some(Category::Label), - SyntaxKind::Ref => Some(Category::Ref), - SyntaxKind::Heading => Some(Category::Heading), - SyntaxKind::ListItem => None, - SyntaxKind::EnumItem => None, - SyntaxKind::EnumNumbering => Some(Category::ListMarker), - SyntaxKind::TermItem => None, - SyntaxKind::Math => None, - SyntaxKind::Atom => None, - SyntaxKind::Script => None, - SyntaxKind::Frac => None, - SyntaxKind::AlignPoint => Some(Category::MathOperator), - SyntaxKind::Ident => match node.parent_kind() { Some( - SyntaxKind::Markup { .. } + SyntaxKind::Markup | SyntaxKind::Math | SyntaxKind::Script | SyntaxKind::Frac, @@ -258,7 +251,10 @@ pub fn highlight(node: &LinkedNode) -> Option<Category> { SyntaxKind::LoopContinue => None, SyntaxKind::FuncReturn => None, + SyntaxKind::LineComment => Some(Category::Comment), + SyntaxKind::BlockComment => Some(Category::Comment), SyntaxKind::Error => Some(Category::Error), + SyntaxKind::Eof => None, } } |
