コード例 #1
0
        //FIXME: can we display some kind of "loading" message while it loads?
        async Task <QuickInfoItem> CreateNuGetQuickInfo(ITextSnapshot snapshot, MSBuildRootDocument doc, MSBuildResolveResult rr, CancellationToken token)
        {
            IPackageInfo info      = null;
            var          packageId = (string)rr.Reference;

            try {
                var frameworkId = doc.GetTargetFrameworkNuGetSearchParameter();

                //FIXME: can we use the correct version here?
                var infos = await provider.PackageSearchManager.SearchPackageInfo(packageId, null, frameworkId).ToTask(token);

                //prefer non-local results as they will have more metadata
                info = infos
                       .FirstOrDefault(p => p.SourceKind != ProjectFileTools.NuGetSearch.Feeds.FeedKind.Local)
                       ?? infos.FirstOrDefault();
            }
            catch (Exception ex) when(!(ex is OperationCanceledException && token.IsCancellationRequested))
            {
                LoggingService.LogError("Error loading package description", ex);
            }

            var span = snapshot.CreateTrackingSpan(rr.ReferenceOffset, rr.ReferenceLength, SpanTrackingMode.EdgeInclusive);

            return(new QuickInfoItem(span, provider.DisplayElementFactory.GetPackageInfoTooltip(packageId, info, FeedKind.NuGet)));
        }
コード例 #2
0
        async Task <List <CompletionItem> > GetPackageVersionCompletions(MSBuildRootDocument doc, MSBuildResolveResult rr, CancellationToken token)
        {
            if (rr == null)
            {
                return(null);
            }

            var packageId = rr.Element.Attributes.FirstOrDefault(a => a.Name.Name == "Include")?.Value;

            if (string.IsNullOrEmpty(packageId))
            {
                return(null);
            }

            var tfm = doc.GetTargetFrameworkNuGetSearchParameter();

            var results = await provider.PackageSearchManager.SearchPackageVersions(packageId.ToLower(), tfm).ToTask(token);

            //FIXME should we deduplicate?
            var items = new List <CompletionItem> ();

            foreach (var result in results)
            {
                items.Add(CreateNuGetCompletionItem(result, XmlCompletionItemKind.AttributeValue));
            }

            return(items);
        }
コード例 #3
0
        async Task <CompletionContext> GetPackageVersionCompletions(MSBuildRootDocument doc, MSBuildResolveResult rr)
        {
            var packageId = rr.XElement.Attributes.FirstOrDefault(a => a.Name.Name == "Include")?.Value;

            if (string.IsNullOrEmpty(packageId))
            {
                return(null);
            }

            var tfm    = doc.GetTargetFrameworkNuGetSearchParameter();
            var search = provider.PackageSearchManager.SearchPackageVersions(packageId.ToLower(), tfm);
            var tcs    = new TaskCompletionSource <object> ();

            search.Updated += (s, e) => { if (search.RemainingFeeds.Count == 0)
                                          {
                                              tcs.TrySetResult(null);
                                          }
            };
            await tcs.Task;

            //FIXME should we deduplicate?
            var items = new List <CompletionItem> ();

            foreach (var result in search.Results)
            {
                items.Add(CreateNuGetVersionCompletionItem(result.Item1, result.Item2));
            }

            return(CreateCompletionContext(items));
        }
コード例 #4
0
        async Task <object> GetPackageDocumentationAsync(MSBuildRootDocument doc, string packageId, FeedKind feedKind, CancellationToken token)
        {
            var tfm          = doc.GetTargetFrameworkNuGetSearchParameter();
            var packageInfos = await provider.PackageSearchManager.SearchPackageInfo(packageId, null, tfm).ToTask(token);

            var packageInfo = packageInfos.FirstOrDefault(p => p.SourceKind == feedKind) ?? packageInfos.FirstOrDefault();

            if (packageInfo != null)
            {
                return(provider.DisplayElementFactory.GetPackageInfoTooltip(packageId, packageInfo, feedKind));
            }
            return(null);
        }
コード例 #5
0
        async Task <List <CompletionItem> > GetPackageNameCompletions(IAsyncCompletionSession session, MSBuildRootDocument doc, string searchQuery, CancellationToken token)
        {
            var tfm = doc.GetTargetFrameworkNuGetSearchParameter();

            session.Properties.AddProperty(typeof(NuGetSearchUpdater), new NuGetSearchUpdater(this, session, tfm));

            if (string.IsNullOrEmpty(searchQuery))
            {
                return(null);
            }

            var results = await provider.PackageSearchManager.SearchPackageNames(searchQuery.ToLower(), tfm).ToTask(token);

            return(CreateNuGetItemsFromSearchResults(results));
        }
コード例 #6
0
        Task <ICompletionDataList> GetPackageVersionCompletions(MSBuildRootDocument doc, MSBuildResolveResult rr, int startIdx, int triggerLength)
        {
            var name = rr.XElement.Attributes.FirstOrDefault(a => a.Name.FullName == "Include")?.Value;

            if (string.IsNullOrEmpty(name))
            {
                return(null);
            }
            return(Task.FromResult <ICompletionDataList> (
                       new PackageVersionSearchCompletionDataList(PackageSearchManager, doc.GetTargetFrameworkNuGetSearchParameter(), name)
            {
                TriggerWordStart = startIdx,
                TriggerWordLength = triggerLength
            }
                       ));
        }
コード例 #7
0
        Task <ICompletionDataList> GetPackageNameCompletions(MSBuildRootDocument doc, int startIdx, int triggerLength)
        {
            string name = ((IXmlParserContext)Tracker.Engine).KeywordBuilder.ToString();

            if (string.IsNullOrWhiteSpace(name))
            {
                return(null);
            }

            return(Task.FromResult <ICompletionDataList> (
                       new PackageNameSearchCompletionDataList(name, PackageSearchManager, doc.GetTargetFrameworkNuGetSearchParameter())
            {
                TriggerWordStart = startIdx,
                TriggerWordLength = triggerLength
            }
                       ));
        }