[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 <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: 342b1198c90e11a1c6d3f63573d0540dfc5fd9a9
This commit is contained in:
Alf Eaton 2023-08-15 15:23:12 +01:00 committed by Copybot
parent ffdb651998
commit a8d7306fc4

View file

@ -221,6 +221,10 @@ MacroParameter {
"#" ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9") "#" ("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 // The autocompletion code in services/web/frontend/js/features/source-editor/utils/tree-operations/commands.ts
// depends on following the `KnownCommand { Command { CommandCtrlSeq [args] } }` // depends on following the `KnownCommand { Command { CommandCtrlSeq [args] } }`
// structure // structure
@ -289,7 +293,7 @@ KnownCommand {
} | } |
Def { Def {
// allow more general Csname argument to \def commands, since other symbols such as '@' are often used in definitions // 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 { Hbox {
HboxCtrlSeq optionalWhitespace? TextArgument HboxCtrlSeq optionalWhitespace? TextArgument