How to use lexical macros in code to specify regular expressions in WinForms SyntaxEditor (EditControl)?
Lexical macros
You could use lexical macros in code as shown in code snippets below.
C#
this.editControl1.ApplyConfiguration(KnownLanguages.HTML);
IMacro macro = this.editControl1.LexicalMacrosManager.Add("testMacro", ".+");
// Create a format and set its attributes
ISnippetFormat formatMethod = this.editControl1.Language.Add("CodeBehind");
formatMethod.FontColor = Color.IndianRed;
formatMethod.Font = new Font("Garamond",12);
formatMethod.BackColor = Color.Yellow;
// Create a lexem that belongs to this format
ConfigLexem configLex = new ConfigLexem("<%@", "%>", FormatType.Custom, false);
configLex.IsBeginRegex = false;
configLex.IsEndRegex = false;
// NameInConfig returns name of the macro rounded with braces, like "{testmacro}"
configLex.ContinueBlock = macro.NameInConfig;
configLex.IsContinueRegex = true;
configLex.FormatName = "CodeBehind";
this.editControl1.Language.Splits.Add("<%@");
this.editControl1.Language.Splits.Add("%>");
// Add it to the current language's lexems collection
this.editControl1.Language.Lexems.Add(configLex);
this.editControl1.Language.ResetCaches();
VB
Me.editControl1.ApplyConfiguration(KnownLanguages.HTML)
Dim macro As IMacro = Me.editControl1.LexicalMacrosManager.Add("testMacro", ".+")
' Create a format and set its attributes
Dim formatMethod As ISnippetFormat = Me.editControl1.Language.Add("CodeBehind")
formatMethod.FontColor = Color.IndianRed
formatMethod.Font = New Font("Garamond", 12)
formatMethod.BackColor = Color.Yellow
' Create a lexem that belongs to this format
Dim configLex As New ConfigLexem("<%@", "%>", FormatType.Custom, False)
configLex.IsBeginRegex = False
configLex.IsEndRegex = False
configLex.ContinueBlock = macro.NameInConfig 'NameInConfig returns name of the macro rounded with braces, like "{testmacro}"
configLex.IsContinueRegex = True
configLex.FormatName = "CodeBehind"
Me.editControl1.Language.Splits.Add("<%@")
Me.editControl1.Language.Splits.Add("%>")
' Add it to the current language's lexems collection
Me.editControl1.Language.Lexems.Add(configLex)
Me.editControl1.Language.ResetCaches()
Reference link: https://help.syncfusion.com/windowsforms/syntax-editor/syntax-highlighting