anchor.diff:                  if not this.HasRegisteredParsedEvent then
                       this.HasRegisteredParsedEvent <- true
                       document.DocumentParsed.Add(HandleDocumentParsed)
  -            match (this.Document,line) with
  -            | StringCode -> Seq.singleton(Chunk(offset,length, style.String.Name))
  +            match (this.Document,line,offset,length) with
  +            | StringCode when semanticHighlightingEnabled -> Seq.singleton(Chunk(offset,length, style.String.Name))
               | CommentCode -> Seq.singleton(Chunk(offset,length, style.CommentsMultiLine.Name))
               | ExcludedCode -> Seq.singleton(Chunk(offset,length,style.ExcludedCode.Name))
               | PreProcessorCode -> base.GetChunks(style,line,offset,length) 
  -            | OtherCode  -> this.getLexedChunks(style,line,offset,length)
  +            | OtherCode when semanticHighlightingEnabled -> this.getLexedChunks(style,line,offset,length)
  +            | _ -> base.GetChunks(style,line,offset,length)
           with
               | exn -> 
                   LoggingService.LogError("Error in FSharpSyntaxMode.GetChunks", exn)
  
positive.code:     let hasSpans (line: DocumentLine) =
          line <> null && line.StartSpan <> null && line.StartSpan.Count > 0
  
      let (|ExcludedCode|StringCode|PreProcessorCode|CommentCode|OtherCode|) (document: TextDocument,line: DocumentLine) =
          let docText = document.GetTextAt(line.Segment)
          if docText.StartsWith("#if") || docText.StartsWith("#else") || docText.StartsWith("#endif") then
              PreProcessorCode
          elif (hasSpans(line)) then
  
negative.code:                 this.CurRule.Name <> "String" && this.CurRule.Name <> "VerbatimString" &&
                  this.CurText.[textOffset] = '#' && this.IsFirstNonWsChar(textOffset)) then
                  
                  if currentText.Substring(textOffset).StartsWith("#else") then
                      this.ScanPreProcessorElse(&i)
                      true
                  elif currentText.Substring(textOffset).StartsWith("#if") then
                      this.ScanPreProcessorIf(textOffset,&i)
                      false      
                  elif currentText.Substring(textOffset).StartsWith("#endif") then
                      let span = EndIfBlockSpan()
                      this.FoundSpanBegin.Invoke(span, i + textOffset, 6)
                      this.FoundSpanEnd.Invoke(span, i + textOffset + 6,0)
  