コード例 #1
0
            protected override void ScanSpan(ref int i)
            {
                if (CSharpSyntaxMode.DisableConditionalHighlighting)
                {
                    base.ScanSpan(ref i);
                    return;
                }
                int textOffset = i - StartOffset;

                if (textOffset < CurText.Length && CurText [textOffset] == '#' && IsFirstNonWsChar(textOffset))
                {
                    if (CurText.IsAt(textOffset, "#define"))
                    {
                        int    length    = CurText.Length - textOffset;
                        string parameter = CurText.Substring(textOffset + "#define".Length, length - "#define".Length).Trim();

                        var defineSpan = new DefineSpan(parameter);
                        FoundSpanBegin(defineSpan, i, 0);
                    }

                    if (CurText.IsAt(textOffset, "#else"))
                    {
                        ScanPreProcessorElse(ref i);
                        return;
                    }

                    if (CurText.IsAt(textOffset, "#if"))
                    {
                        ScanPreProcessorIf(textOffset, ref i);
                        return;
                    }

                    if (CurText.IsAt(textOffset, "#elif") && spanStack != null && spanStack.Any(span => span is IfBlockSpan))
                    {
                        ScanPreProcessorElseIf(ref i);
                        return;
                    }

                    var preprocessorSpan = CreatePreprocessorSpan();
                    FoundSpanBegin(preprocessorSpan, i, 1);
                    return;
                }

                base.ScanSpan(ref i);
            }
コード例 #2
0
            protected override bool ScanSpan(ref int i)
            {
                if (CSharpSyntaxMode.DisableConditionalHighlighting)
                {
                    return(base.ScanSpan(ref i));
                }
                int textOffset = i - StartOffset;

                if (textOffset < CurText.Length && CurRule.Name != "Comment" && CurRule.Name != "String" && CurRule.Name != "VerbatimString" && CurText [textOffset] == '#' && IsFirstNonWsChar(textOffset))
                {
                    if (CurText.IsAt(textOffset, "#define") && (spanStack == null || !spanStack.Any(span => span is IfBlockSpan && !((IfBlockSpan)span).IsValid)))
                    {
                        int    length     = CurText.Length - textOffset;
                        string parameter  = CurText.Substring(textOffset + "#define".Length, length - "#define".Length).Trim();
                        var    defineSpan = new DefineSpan(parameter);
                        FoundSpanBegin(defineSpan, i, 0);
                    }

                    if (CurText.IsAt(textOffset, "#else"))
                    {
                        ScanPreProcessorElse(ref i);
                        return(true);
                    }

                    if (CurText.IsAt(textOffset, "#if"))
                    {
                        ScanPreProcessorIf(textOffset, ref i);
                        return(true);
                    }

                    if (CurText.IsAt(textOffset, "#elif") && spanStack != null && spanStack.Any(span => span is IfBlockSpan))
                    {
                        ScanPreProcessorElseIf(ref i);
                        return(true);
                    }
                }

                return(base.ScanSpan(ref i));
            }