我想发布一个包含一些 JavaScript 代码片段的 Visual Studio Code 扩展,但是,我想让用户选择一个选项而不是另一个选项。具体来说,我想要两组片段,一组生成具有如下格式导出的 JavaScript 模块
export default class C { }
另一个格式如下
class C {
}
export default C;
我想根据用户的偏好加载一个或其他一组片段。
有什么办法可以支持这样的事情吗?换句话说,当我在市场上发布我的扩展时,是否有任何我可以公开的钩子(Hook)可以让用户向我表明他们喜欢哪种格式,以便我可以加载那些片段?
最佳答案
我不认为扩展程序可以通过 json 文件提供动态片段,但您的扩展程序可以使用动态返回片段的自定义 CompletionItemProvider
,可能是这样的:
import * as vscode from 'vscode'
class MySnippetProvider extends vscode.CompletionItemProvider {
public provideCompletionItems(
_document: vscode.TextDocument,
_position: vscode.Position,
_token: vscode.CancellationToken
): vscode.ProviderResult<vscode.CompletionItem[]> {
const item = new vscode.CompletionItem('export snippet', vscode.CompletionItemKind.Snippet)
const config = vscode.workspace.getConfiguration('myExtension')
if (config.get('option', false)) {
item.insertText = new vscode.SnippetString('export default class C { $0 }')
} else {
item.insertText = new vscode.SnippetString(
`class C {
$0
}
export default C;`)
}
return [item]
}
public resolveCompletionItem(
item: vscode.CompletionItem,
_token: vscode.CancellationToken
) {
return item
}
}
关于javascript - Visual Studio代码: Installation hook for snippets extension,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812416/