public Task <CompletionItem> Handle(CompletionItem completionItem, CancellationToken cancellationToken) { string markdown = null; if (completionItem.TryGetRazorCompletionKind(out var completionItemKind)) { switch (completionItemKind) { case RazorCompletionItemKind.DirectiveAttribute: case RazorCompletionItemKind.DirectiveAttributeParameter: var descriptionInfo = completionItem.GetAttributeDescriptionInfo(); _tagHelperDescriptionFactory.TryCreateDescription(descriptionInfo, out markdown); break; } } else { if (completionItem.IsTagHelperElementCompletion()) { var descriptionInfo = completionItem.GetElementDescriptionInfo(); _tagHelperDescriptionFactory.TryCreateDescription(descriptionInfo, out markdown); } if (completionItem.IsTagHelperAttributeCompletion()) { var descriptionInfo = completionItem.GetTagHelperAttributeDescriptionInfo(); _tagHelperDescriptionFactory.TryCreateDescription(descriptionInfo, out markdown); } } if (markdown != null) { var documentation = new StringOrMarkupContent( new MarkupContent() { Kind = MarkupKind.Markdown, Value = markdown, }); completionItem.Documentation = documentation; } return(Task.FromResult(completionItem)); }
public Task <CompletionItem> Handle(CompletionItem completionItem, CancellationToken cancellationToken) { MarkupContent tagHelperTooltip = null; if (!completionItem.TryGetCompletionListResultId(out var resultId)) { // Couldn't resolve. return(Task.FromResult(completionItem)); } if (!_completionListCache.TryGet(resultId, out var cachedCompletionItems)) { return(Task.FromResult(completionItem)); } var labelQuery = completionItem.Label; var associatedRazorCompletion = cachedCompletionItems.FirstOrDefault(completion => string.Equals(labelQuery, completion.DisplayText, StringComparison.Ordinal)); if (associatedRazorCompletion == null) { Debug.Fail("Could not find an associated razor completion item. This should never happen since we were able to look up the cached completion list."); return(Task.FromResult(completionItem)); } switch (associatedRazorCompletion.Kind) { case RazorCompletionItemKind.Directive: { var descriptionInfo = associatedRazorCompletion.GetDirectiveCompletionDescription(); completionItem.Documentation = descriptionInfo.Description; break; } case RazorCompletionItemKind.MarkupTransition: { var descriptionInfo = associatedRazorCompletion.GetMarkupTransitionCompletionDescription(); completionItem.Documentation = descriptionInfo.Description; break; } case RazorCompletionItemKind.DirectiveAttribute: case RazorCompletionItemKind.DirectiveAttributeParameter: case RazorCompletionItemKind.TagHelperAttribute: { var descriptionInfo = associatedRazorCompletion.GetAttributeCompletionDescription(); _tagHelperTooltipFactory.TryCreateTooltip(descriptionInfo, out tagHelperTooltip); break; } case RazorCompletionItemKind.TagHelperElement: { var descriptionInfo = associatedRazorCompletion.GetTagHelperElementDescriptionInfo(); _tagHelperTooltipFactory.TryCreateTooltip(descriptionInfo, out tagHelperTooltip); break; } } if (tagHelperTooltip != null) { var documentation = new StringOrMarkupContent(tagHelperTooltip); completionItem.Documentation = documentation; } return(Task.FromResult(completionItem)); }
public static string GetLabel(string type, string name, CodeParameter[] parameters, bool markdown, StringOrMarkupContent description) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } string result = ""; if (markdown) { result += "```ostw\n"; result += type ?? "void"; result += " "; } result += name + CodeParameter.GetLabels(parameters, false); if (markdown) { result += "\n\r```"; } if (markdown && description != null) { result += "\n\r ----- \n\r" + (description.HasString ? description.String : description.MarkupContent.Value); } return(result); }