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); }
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)); }