VSCode 扩展 API: 自动完成 documentation/detail 突出显示
VSCode extension API: autocomplete documentation/detail highlighting
已关闭 issue on GitHub 表示在自动完成详细信息中未启用语法突出显示。
这是没有突出显示的自动完成代码
vscode.languages.registerCompletionItemProvider('xml', {
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable<vscode.CompletionItem[]>
{
return new Promise<vscode.CompletionItem[]>((resolve, reject) =>
{
let ci = new vscode.CompletionItem("tag", vscode.CompletionItemKind.Snippet);
ci.detail = "<Tag>detail</Tag>"
ci.documentation = "<Tag>documentation</Tag>"
ci.insertText = "<Tag></Tag>";
resolve([ci]);
});
}
}
);
这里是片段代码,提供了很好的亮点
"tag": {
"prefix": "tag",
"body": "<Tag>detail</Tag>",
"description": "<Tag>description</Tag>"
}
那么真的没有办法像snippet中那样高亮动态补全内容吗?看起来很奇怪...
我认为你必须自己设计造型。下周 v1.61 即将发布时,您将能够使用 documentation
值(不支持 detail
样式):
const documentation = new vscode.MarkdownString(`<span style='color:#ff0;background-color:#000;'><Tag></span>
documentation
<span style='color:#ff0;background-color:#000;'></Tag></span>`);
documentation.supportHtml = true; // new setting to be in v1.61
ci.documentation = documentation;
// I added this form if you want a tabstop at the [=10=]
ci.insertText = new vscode.SnippetString("<Tag>[=10=]</Tag>");
请注意,由于 vscode,出于安全原因,在 MarkdownString 中清理了 html,我只是将 <Tag>
上的结束 >
替换为 >
的。
另请注意,在字符串文字中,制表符和换行符当前已被删除 - 因此您可以在没有这么长的行的情况下使您的代码更具可读性。
演示:
已关闭 issue on GitHub 表示在自动完成详细信息中未启用语法突出显示。
这是没有突出显示的自动完成代码
vscode.languages.registerCompletionItemProvider('xml', {
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable<vscode.CompletionItem[]>
{
return new Promise<vscode.CompletionItem[]>((resolve, reject) =>
{
let ci = new vscode.CompletionItem("tag", vscode.CompletionItemKind.Snippet);
ci.detail = "<Tag>detail</Tag>"
ci.documentation = "<Tag>documentation</Tag>"
ci.insertText = "<Tag></Tag>";
resolve([ci]);
});
}
}
);
这里是片段代码,提供了很好的亮点
"tag": {
"prefix": "tag",
"body": "<Tag>detail</Tag>",
"description": "<Tag>description</Tag>"
}
那么真的没有办法像snippet中那样高亮动态补全内容吗?看起来很奇怪...
我认为你必须自己设计造型。下周 v1.61 即将发布时,您将能够使用 documentation
值(不支持 detail
样式):
const documentation = new vscode.MarkdownString(`<span style='color:#ff0;background-color:#000;'><Tag></span>
documentation
<span style='color:#ff0;background-color:#000;'></Tag></span>`);
documentation.supportHtml = true; // new setting to be in v1.61
ci.documentation = documentation;
// I added this form if you want a tabstop at the [=10=]
ci.insertText = new vscode.SnippetString("<Tag>[=10=]</Tag>");
请注意,由于 vscode,出于安全原因,在 MarkdownString 中清理了 html,我只是将 <Tag>
上的结束 >
替换为 >
的。
另请注意,在字符串文字中,制表符和换行符当前已被删除 - 因此您可以在没有这么长的行的情况下使您的代码更具可读性。
演示: