From a8d7306fc45c281d73979356e823233be00955f3 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 15 Aug 2023 15:23:12 +0100 Subject: [PATCH] [cm6] Allow optional parameters in `\def` macro definition (#14329) * Allow optional parameters in `\def` macro definition * Allow whitespace in `\def` macro definition * [lezer] Add test for optional macro parameter * [lezer] Add test for whitespace before def csname --------- Co-authored-by: Mathias Jakobsen GitOrigin-RevId: 342b1198c90e11a1c6d3f63573d0540dfc5fd9a9 --- .../js/features/source-editor/lezer-latex/latex.grammar | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 4eeaf90820..7e8bebbb4d 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 @@ -221,6 +221,10 @@ MacroParameter { "#" ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9") } +OptionalMacroParameter { + OpenBracket MacroParameter CloseBracket +} + // The autocompletion code in services/web/frontend/js/features/source-editor/utils/tree-operations/commands.ts // depends on following the `KnownCommand { Command { CommandCtrlSeq [args] } }` // structure @@ -289,7 +293,7 @@ KnownCommand { } | Def { // allow more general Csname argument to \def commands, since other symbols such as '@' are often used in definitions - DefCtrlSeq (Csname | CtrlSym) optionalWhitespace? MacroParameter* optionalWhitespace? DefinitionArgument + DefCtrlSeq optionalWhitespace? (Csname | CtrlSym) optionalWhitespace? (MacroParameter | OptionalMacroParameter)* optionalWhitespace? DefinitionArgument } | Hbox { HboxCtrlSeq optionalWhitespace? TextArgument