private static NavigableHighlightTag GetTag(HighlightSpan span) { switch (span.Kind) { case HighlightSpanKind.Definition: return(DefinitionHighlightTag.Instance); case HighlightSpanKind.Reference: default: return(ReferenceHighlightTag.Instance); } }
private static NavigableHighlightTag GetTag(HighlightSpan span) { switch (span.Kind) { case HighlightSpanKind.WrittenReference: return WrittenReferenceHighlightTag.Instance; case HighlightSpanKind.Definition: return DefinitionHighlightTag.Instance; case HighlightSpanKind.Reference: case HighlightSpanKind.None: default: return ReferenceHighlightTag.Instance; } }
private static AbstractNavigatableReferenceHighlightingTag GetTag(HighlightSpan span) { switch (span.Kind) { case HighlightSpanKind.WrittenReference: return(WrittenReferenceHighlightTag.Instance); case HighlightSpanKind.Definition: return(DefinitionHighlightTag.Instance); case HighlightSpanKind.Reference: case HighlightSpanKind.None: default: return(ReferenceHighlightTag.Instance); } }
private bool AreSameHighlightSpans(HighlightSpan x, HighlightSpan y) { return(x.Kind == y.Kind && x.TextSpan == y.TextSpan); }
public async Task <HighlightResponse> Handle(HighlightRequest request) { var documents = _workspace.GetDocuments(request.FileName); if (request.ProjectNames != null && request.ProjectNames.Length > 0) { documents = documents.Where(d => request.ProjectNames.Contains(d.Project.Name, StringComparer.Ordinal)); } if (request.Classifications == null || request.Classifications.Length > 0) { request.Classifications = AllClassifications; } if (request.ExcludeClassifications != null && request.ExcludeClassifications.Length > 0) { request.Classifications = request.Classifications.Except(request.ExcludeClassifications).ToArray(); } var results = new List <ClassifiedResult>(); foreach (var document in documents) { var project = document.Project.Name; var text = await document.GetTextAsync(); var spans = new List <ClassifiedSpan>(); if (request.Lines == null || request.Lines.Length == 0) { foreach (var span in await Classifier.GetClassifiedSpansAsync(document, new TextSpan(0, text.Length))) { spans.Add(span); } } else { var linesToClassify = request.Lines.Join( text.Lines, line => line - 1, line => line.LineNumber, (requestLine, line) => line.Span); foreach (var lineSpan in linesToClassify) { foreach (var span in await Classifier.GetClassifiedSpansAsync(document, lineSpan)) { spans.Add(span); } } } results.AddRange(FilterSpans(request.Classifications, spans) .Select(span => new ClassifiedResult() { Span = span, Lines = text.Lines, Project = project })); } return(new HighlightResponse() { Highlights = results .GroupBy(result => result.Span.TextSpan.ToString()) .Select(grouping => HighlightSpan.FromClassifiedSpan(grouping.First().Span, grouping.First().Lines, grouping.Select(z => z.Project))) .ToArray() }); }