public async Task FindReferencesAsync(Document document, int position, IFindUsagesContext context) { var text = await document.GetTextAsync().ConfigureAwait(false); var lspClient = _roslynLspClientServiceFactory.ActiveLanguageServerClient; if (lspClient == null) { return; } var referenceParams = new LSP.ReferenceParams { Context = new LSP.ReferenceContext { IncludeDeclaration = false }, TextDocument = ProtocolConversions.DocumentToTextDocumentIdentifier(document), Position = ProtocolConversions.LinePositionToPosition(text.Lines.GetLinePosition(position)) }; var locations = await lspClient.RequestAsync(LSP.Methods.TextDocumentReferences.ToLSRequest(), referenceParams, context.CancellationToken).ConfigureAwait(false); if (locations == null) { return; } // TODO: Need to get real definition data from the server. var dummyDef = DefinitionItem.CreateNonNavigableItem(ImmutableArray <string> .Empty, ImmutableArray <TaggedText> .Empty); await context.OnDefinitionFoundAsync(dummyDef).ConfigureAwait(false); foreach (var location in locations) { var documentSpan = await _remoteLanguageServiceWorkspace.GetDocumentSpanFromLocation(location, context.CancellationToken).ConfigureAwait(false); if (documentSpan == null) { continue; } await context.OnReferenceFoundAsync(new SourceReferenceItem(dummyDef, documentSpan.Value)).ConfigureAwait(false); } }
public Task OnReferenceFoundAsync(SerializableSourceReferenceItem reference) => _context.OnReferenceFoundAsync(reference.Rehydrate(_solution, GetDefinition(reference.DefinitionId))).AsTask();
public Task OnReferenceFoundAsync(Document document, TextSpan span) => _context.OnReferenceFoundAsync(new SourceReferenceItem( _definition, new DocumentSpan(document, span), isWrittenTo: false));
public ValueTask OnReferenceFoundAsync(VSTypeScriptSourceReferenceItem reference, CancellationToken cancellationToken) => _context.OnReferenceFoundAsync(reference.UnderlyingObject, cancellationToken);
public Task OnReferenceFoundAsync(FSharp.FindUsages.FSharpSourceReferenceItem reference) { return(_context.OnReferenceFoundAsync(reference.RoslynSourceReferenceItem)); }
public Task OnReferenceFoundAsync(SourceReferenceItem reference) => _underlyingContext.OnReferenceFoundAsync(reference);
public Task OnReferenceFoundAsync(FSharp.FindUsages.FSharpSourceReferenceItem reference) { return(_context.OnReferenceFoundAsync(reference.RoslynSourceReferenceItem, _cancellationToken).AsTask()); }