예제 #1
0
        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));
        }
예제 #2
0
        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);
        }