public CompletionSource(ITextBuffer textBuffer, NodejsClassifier classifier, IServiceProvider serviceProvider, IGlyphService glyphService) { _textBuffer = textBuffer; _classifier = classifier; _serviceProvider = serviceProvider; _glyphService = glyphService; }
internal static IEnumerator <ClassificationSpan> ReverseClassificationSpanEnumerator(NodejsClassifier classifier, SnapshotPoint startPoint) { var startLine = startPoint.GetContainingLine(); int curLine = startLine.LineNumber; var tokens = classifier.GetClassificationSpans(new SnapshotSpan(startLine.Start, startPoint)); for (; ;) { for (int i = tokens.Count - 1; i >= 0; i--) { yield return(tokens[i]); } // indicate the line break yield return(null); curLine--; if (curLine >= 0) { var prevLine = startPoint.Snapshot.GetLineFromLineNumber(curLine); tokens = classifier.GetClassificationSpans(prevLine.Extent); } else { break; } } }