typescript 是否为completionItem的文档属性启用Markdown?

qojgxg4l  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(108)

我正在为VS代码编写我的第一个语言扩展,我发现文档很难理解。当然,这是因为我对为VS代码编写扩展没有经验,所以我在这里。
正如主题所说,我想为我的 completionItemdocumentation 属性启用Markdown,但是在搜索和阅读了几个小时之后,我仍然不知道如何做到这一点。
VS代码语言API告诉我使用 MarkdownString,但VS代码对 MarkdownString 一无所知。如果我尝试引用已弃用的 MarkedString,VS代码工具提示文档会告诉我改用 MarkupContent
如果我使用 MarkupContent,工具提示会告诉我...
MarkupContent常值表示字串值,其内容会根据其种类旗标来解译。
(As顺便说一句,关于如何构造字符串的示例是不正确的,这不会激发信心)。
尽管如此,使用该示例很容易找出问题所在,我可以在代码中实现它:

const markdown: MarkupContent = {
  kind: MarkupKind.Markdown,
  value: ""
};

该值为空,因为我根据我们要“完成”的项目动态定义它。
我有一个建议列表,我使用 item.data onCompletion 函数发送的www.example.com值来索引这些建议:

const suggestions = [
{
      label: "DATEADD",
      kind: CompletionItemKind.Function,
      insertText: "@DATEADD(${1:<date>}, ${2:<days>})",
      insertTextFormat: InsertTextFormat.Snippet,
      documentation:
        "Adds a specified number of days to the given date, returning the result as a *yyyyMMdd* date.",
},
    ...

我使用 documentation 属性来设置 markdown.value 的值,因为它已经存在:

markdown.value = suggestions[item.data].documentation;

在此之后,我将 * 减价 * 分配给 * 建议[item.data]。文档 *:

suggestions[item.data].documentation = markdown;

尽管文档中说明“MarkupContent文字表示字符串值...",但这并不起作用,我得到了错误“Type 'MarkupContent' is not assignable to type 'string'.”。
到现在为止,我确信我正在反向进行所有这些工作,应该有一个简单的标志或属性,我可以设置它来告诉VS代码我正在使用Markdown来编写文档,而不是跳过所有这些障碍。
任何提示,技巧,指针,或吸管,我可以抓住超过欢迎。

  • 谢谢-谢谢
q35jwt9p

q35jwt9p1#

CompletionItem::documentation?: string | MarkdownString
表示文档注解的可读字符串。

  • 创建MarkdownString
  • 将此对象分配给suggestions[item.data].documentation

相关问题