public void CreateSyntaxDefinition()
        {
            TestHelper.Init();

            this.m_syntaxDefinition = new SyntaxDefinition("unitTest");
            SyntaxContext context = this.m_syntaxDefinition.MainContext;

            this.m_syntaxDefinition.GetCluster("@cPreProcGroup", context).SetContentsTo("cUserLabel");

            Region cDefine = new Region(context, "cDefine");
            cDefine.Contains.SetContentsTo("ALLBUT,@CPreProcGroup,@Spell");
            this.m_syntaxDefinition.AddHighlightLink("cDefine", "Macro");
            cDefine.StartPatterns.Add(new Pattern("#define"));
            cDefine.EndPatterns.Add(new Pattern("#end"));

            new VimMatch(context, "cUserLabel", new Pattern(@"\w+"));
            this.m_syntaxDefinition.AddHighlightLink("cUserLabel", "Label");

            this.m_syntaxDefinition.FinishSyntaxDefinition();
        }
        private static string DumpRegionPatterns(Region region)
        {
            StringBuilder lines = new StringBuilder();

            foreach (Pattern pattern in region.StartPatterns) {
                lines.Append(DumpPattern(pattern, "start "));
            }

            foreach (Pattern pattern in region.SkipPatterns) {
                lines.Append(DumpPattern(pattern, "skip  "));
            }

            foreach (Pattern pattern in region.EndPatterns) {
                lines.Append(DumpPattern(pattern, "end   "));
            }

            return lines.ToString();
        }
Beispiel #3
0
        private void AddRegion(Match m)
        {
            if(!this.IsProcessingTokens) {
                return;
            }

            string groupName = m.Groups["groupName"].Value;

            Region r = new Region(this.SourceFile.SyntaxContext, groupName);
            this.ProcessOptions(r, m);

            if (0 == r.StartPatterns.Count || 0 == r.EndPatterns.Count) {
                throw new AssertionViolationException("Invalid region. Region has 0 start patterns or 0 end patterns");
            }
        }