コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public Task OnReferenceFoundAsync(SerializableSourceReferenceItem reference)
 => _context.OnReferenceFoundAsync(reference.Rehydrate(_solution, GetDefinition(reference.DefinitionId))).AsTask();
コード例 #3
0
 public Task OnReferenceFoundAsync(Document document, TextSpan span)
 => _context.OnReferenceFoundAsync(new SourceReferenceItem(
                                       _definition, new DocumentSpan(document, span), isWrittenTo: false));
コード例 #4
0
 public ValueTask OnReferenceFoundAsync(VSTypeScriptSourceReferenceItem reference, CancellationToken cancellationToken)
 => _context.OnReferenceFoundAsync(reference.UnderlyingObject, cancellationToken);
コード例 #5
0
 public Task OnReferenceFoundAsync(FSharp.FindUsages.FSharpSourceReferenceItem reference)
 {
     return(_context.OnReferenceFoundAsync(reference.RoslynSourceReferenceItem));
 }
 public Task OnReferenceFoundAsync(SourceReferenceItem reference)
 => _underlyingContext.OnReferenceFoundAsync(reference);
コード例 #7
0
 public Task OnReferenceFoundAsync(FSharp.FindUsages.FSharpSourceReferenceItem reference)
 {
     return(_context.OnReferenceFoundAsync(reference.RoslynSourceReferenceItem, _cancellationToken).AsTask());
 }