public override async Task <ImmutableArray <MappedSpanResult> > MapSpansAsync( Document document, IEnumerable <TextSpan> spans, CancellationToken cancellationToken) { var razorSpans = await _razorSpanMappingService.MapSpansAsync(document, spans, cancellationToken).ConfigureAwait(false); var roslynSpans = new MappedSpanResult[razorSpans.Length]; for (var i = 0; i < razorSpans.Length; i++) { var razorSpan = razorSpans[i]; if (razorSpan.IsDefault) { // Unmapped location roslynSpans[i] = default; } else { roslynSpans[i] = new MappedSpanResult(razorSpan.FilePath, razorSpan.LinePositionSpan, razorSpan.Span); } } return(roslynSpans.ToImmutableArray()); }
static LSP.Range MappedSpanResultToRange(MappedSpanResult mappedSpanResult) { return(new LSP.Range { Start = LinePositionToPosition(mappedSpanResult.LinePositionSpan.Start), End = LinePositionToPosition(mappedSpanResult.LinePositionSpan.End) }); }
public DefinitionItemEntry( AbstractTableDataSourceFindUsagesContext context, RoslynDefinitionBucket definitionBucket, string documentName, Guid projectGuid, SourceText lineText, MappedSpanResult mappedSpanResult) : base(context, definitionBucket, documentName, projectGuid, lineText, mappedSpanResult) { }
protected AbstractDocumentSpanEntry( AbstractTableDataSourceFindUsagesContext context, RoslynDefinitionBucket definitionBucket, Guid projectGuid, SourceText lineText, MappedSpanResult mappedSpanResult ) : base(definitionBucket, context.Presenter) { _boxedProjectGuid = projectGuid; _lineText = lineText; _mappedSpanResult = mappedSpanResult; }
public static DocumentSpanEntry?TryCreate( AbstractTableDataSourceFindUsagesContext context, RoslynDefinitionBucket definitionBucket, DocumentSpan documentSpan, HighlightSpanKind spanKind, MappedSpanResult mappedSpanResult, ExcerptResult excerptResult, SourceText lineText, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> customColumnsData ) { var document = documentSpan.Document; var(guid, projectName, projectFlavor) = GetGuidAndProjectInfo(document); var entry = new DocumentSpanEntry( context, definitionBucket, projectName, projectFlavor, guid, spanKind, mappedSpanResult, excerptResult, lineText, symbolUsageInfo, customColumnsData ); // Because of things like linked files, we may have a reference up in multiple // different locations that are effectively at the exact same navigation location // for the user. i.e. they're the same file/span. Showing multiple entries for these // is just noisy and gets worse and worse with shared projects and whatnot. So, we // collapse things down to only show a single entry for each unique file/span pair. var winningEntry = definitionBucket.GetOrAddEntry(documentSpan, entry); // If we were the one that successfully added this entry to the bucket, then pass us // back out to be put in the ui. if (winningEntry == entry) { return(entry); } // We were not the winner. Add our flavor to the entry that already exists, but throw // away the item we created as we do not want to add it to the ui. winningEntry.AddFlavor(projectFlavor); return(null); }
public DocumentSpanEntry( AbstractTableDataSourceFindUsagesContext context, RoslynDefinitionBucket definitionBucket, HighlightSpanKind spanKind, string documentName, Guid projectGuid, MappedSpanResult mappedSpanResult, ExcerptResult excerptResult, SourceText lineText, ImmutableDictionary <string, string> customColumnsData) : base(context, definitionBucket, documentName, projectGuid, lineText, mappedSpanResult) { _spanKind = spanKind; _excerptResult = excerptResult; _customColumnsData = customColumnsData; }
private DocumentSpanEntry( AbstractTableDataSourceFindUsagesContext context, RoslynDefinitionBucket definitionBucket, string rawProjectName, string?projectFlavor, Guid projectGuid, HighlightSpanKind spanKind, MappedSpanResult mappedSpanResult, ExcerptResult excerptResult, SourceText lineText, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> customColumnsData) : base(context, definitionBucket, projectGuid, lineText, mappedSpanResult) { _spanKind = spanKind; _excerptResult = excerptResult; _symbolReferenceKinds = symbolUsageInfo.ToSymbolReferenceKinds(); _customColumnsData = customColumnsData; _rawProjectName = rawProjectName; this.AddFlavor(projectFlavor); }