From 63b09c3da3e864054a22946b2c4bb4449c64d41d Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Mon, 14 Aug 2023 09:15:52 +0100 Subject: [PATCH] Merge pull request #14227 from overleaf/mj-table-gen-booktabs [visual] Support booktabs horizontal borders GitOrigin-RevId: 9e59341b514c667fbba4154e6316274f9e42db3d --- .../source-editor/components/table-generator/utils.ts | 2 +- .../features/source-editor/lezer-latex/latex.grammar | 11 +++++++---- .../js/features/source-editor/lezer-latex/tokens.mjs | 6 ++++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/services/web/frontend/js/features/source-editor/components/table-generator/utils.ts b/services/web/frontend/js/features/source-editor/components/table-generator/utils.ts index 8e83afbb7f..c348c69dc9 100644 --- a/services/web/frontend/js/features/source-editor/components/table-generator/utils.ts +++ b/services/web/frontend/js/features/source-editor/components/table-generator/utils.ts @@ -71,7 +71,7 @@ const isRowSeparator = (node: SyntaxNode, state: EditorState) => const isHLine = (node: SyntaxNode) => node.type.is('Command') && - Boolean(node.getChild('KnownCommand')?.getChild('HLine')) + Boolean(node.getChild('KnownCommand')?.getChild('HorizontalLine')) type Position = { from: number diff --git a/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar b/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar index 0b673327a1..44294fbd79 100644 --- a/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar +++ b/services/web/frontend/js/features/source-editor/lezer-latex/latex.grammar @@ -90,8 +90,11 @@ AuthorCtrlSeq, MaketitleCtrlSeq, TextColorCtrlSeq, - ColorBoxCtrlSeq - HLineCtrlSeq + ColorBoxCtrlSeq, + HLineCtrlSeq, + TopRuleCtrlSeq, + MidRuleCtrlSeq, + BottomRuleCtrlSeq } @external specialize {EnvName} specializeEnvName from "./tokens.mjs" { @@ -338,8 +341,8 @@ KnownCommand { Maketitle { MaketitleCtrlSeq optionalWhitespace? } | - HLine { - HLineCtrlSeq optionalWhitespace? + HorizontalLine { + (HLineCtrlSeq | TopRuleCtrlSeq | MidRuleCtrlSeq | BottomRuleCtrlSeq) optionalWhitespace? } } diff --git a/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs b/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs index 57b9165cc0..f3942a88e8 100644 --- a/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs +++ b/services/web/frontend/js/features/source-editor/lezer-latex/tokens.mjs @@ -73,6 +73,9 @@ import { TextColorCtrlSeq, ColorBoxCtrlSeq, HLineCtrlSeq, + TopRuleCtrlSeq, + MidRuleCtrlSeq, + BottomRuleCtrlSeq, } from './latex.terms.mjs' function nameChar(ch) { @@ -622,6 +625,9 @@ const otherKnowncommands = { '\\textcolor': TextColorCtrlSeq, '\\colorbox': ColorBoxCtrlSeq, '\\hline': HLineCtrlSeq, + '\\toprule': TopRuleCtrlSeq, + '\\midrule': MidRuleCtrlSeq, + '\\bottomrule': BottomRuleCtrlSeq, } // specializer for control sequences // return new tokens for specific control sequences