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); } }
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)); }