示例#1
0
        static bool CreatePackageTooltipInfo(string name, Task <IReadOnlyList <IPackageInfo> > info, out TooltipInformation ti)
        {
            switch (info.Status)
            {
            case TaskStatus.Faulted:
                ti = new TooltipInformation {
                    SignatureMarkup = $"{name}",
                    SummaryMarkup   = "<span color='#ff0000'><i>Could not load package information</i></span>"
                };
                return(true);

            case TaskStatus.RanToCompletion:
                ti = PackageSearchHelpers.CreateTooltipInformation(info.Result);
                return(true);

            case TaskStatus.Canceled:
                ti = null;
                return(true);

            default:
                ti = new TooltipInformation {
                    SignatureMarkup = $"{name}",
                    SummaryMarkup   = "<i>Loading...</i>"
                };
                return(false);
            }
        }
示例#2
0
        public override Task <TooltipItem> GetItem(TextEditor editor, DocumentContext ctx, int offset, CancellationToken token = default(CancellationToken))
        {
            var ext = editor.GetContent <MSBuildTextEditorExtension> ();
            MSBuildRootDocument doc;

            if (ext == null || (doc = ext.GetDocument()) == null)
            {
                return(Task.FromResult <TooltipItem> (null));
            }

            var loc         = editor.OffsetToLocation(offset);
            var annotations = MSBuildNavigation.GetAnnotationsAtLocation <NavigationAnnotation> (doc, loc);

            if (annotations != null && annotations.Any())
            {
                var first = annotations.First();
                int start = editor.LocationToOffset(first.Region.Begin);
                int end   = editor.LocationToOffset(first.Region.End);
                return(Task.FromResult(new TooltipItem(annotations, start, end - start)));
            }

            var rr = ext.ResolveAt(offset);

            if (rr != null)
            {
                if (rr.ReferenceKind == MSBuildReferenceKind.NuGetID)
                {
                    var item = new InfoItem {
                        Doc           = doc,
                        ResolveResult = rr,
                        Packages      = PackageSearchHelpers.SearchPackageInfo(
                            ext.PackageSearchManager, (string)rr.Reference, null, doc.GetTargetFrameworkNuGetSearchParameter(), CancellationToken.None
                            )
                    };
                    return(Task.FromResult(new TooltipItem(item, rr.ReferenceOffset, rr.ReferenceLength)));
                }
                var info = rr.GetResolvedReference(doc);
                if (info != null)
                {
                    var item = new InfoItem {
                        Info = info, Doc = doc, ResolveResult = rr
                    };
                    return(Task.FromResult(new TooltipItem(item, rr.ReferenceOffset, rr.ReferenceLength)));
                }
            }
            return(Task.FromResult <TooltipItem> (null));
        }