internal LineTokenization TokenizeLine(ITextSnapshot snapshot, object previousLineState, int lineNo, int lineOffset) { ITextSnapshotLine line = snapshot.GetLineFromLineNumber(lineNo); SnapshotSpan lineSpan = new SnapshotSpan(snapshot, line.Start + lineOffset, line.LengthIncludingLineBreak - lineOffset); var tcp = new SnapshotSpanTextContentProvider(lineSpan); var scriptSource = _engine.CreateScriptSource(tcp, null, SourceCodeKind.File); _categorizer.Initialize(previousLineState, scriptSource, new SourceLocation(lineOffset, lineNo + 1, lineOffset + 1)); var tokens = new List <TokenInfo>(_categorizer.ReadTokens(lineSpan.Length)).ToArray(); return(new LineTokenization(tokens, _categorizer.CurrentState)); }
internal LineTokenization TokenizeLine(ITextSnapshot snapshot, object previousLineState, int lineNo, int lineOffset) { ITextSnapshotLine line = snapshot.GetLineFromLineNumber(lineNo); SnapshotSpan lineSpan = new SnapshotSpan(snapshot, line.Start + lineOffset, line.LengthIncludingLineBreak - lineOffset); var tcp = new SnapshotSpanTextContentProvider(lineSpan); var scriptSource = _engine.CreateScriptSource(tcp, null, SourceCodeKind.File); _categorizer.Initialize(previousLineState, scriptSource, new SourceLocation(lineOffset, lineNo + 1, lineOffset + 1)); var tokens = new List<TokenInfo>(_categorizer.ReadTokens(lineSpan.Length)).ToArray(); return new LineTokenization(tokens, _categorizer.CurrentState); }