public async Task <INavigableSymbol> GetNavigableSymbolAsync(SnapshotSpan triggerSpan, CancellationToken cancellationToken)
            {
                if (_disposed)
                {
                    return(null);
                }

                var snapshot = triggerSpan.Snapshot;
                var position = triggerSpan.Start;
                var document = snapshot.GetOpenDocumentInCurrentContextWithChanges();

                if (document == null)
                {
                    return(null);
                }

                var service = document.GetLanguageService <IGoToSymbolService>();

                var context = new GoToSymbolContext(document, position, cancellationToken);

                await service.GetSymbolsAsync(context).ConfigureAwait(false);

                if (!context.TryGetItems(WellKnownSymbolTypes.Definition, out var definitions))
                {
                    return(null);
                }

                var snapshotSpan = new SnapshotSpan(snapshot, context.Span.ToSpan());

                return(new NavigableSymbol(definitions.ToImmutableArray(), snapshotSpan, document, _presenters, _waitIndicator));
            }
Пример #2
0
 internal VSTypeScriptGoToSymbolContext(GoToSymbolContext underlyingObject)
 => UnderlyingObject = underlyingObject;