Visual Studio 代码:片段扩展的安装挂钩
Visual Studio Code: Installation hook for snippets extension
我想发布带有一些 JavaScript 片段的 Visual Studio 代码扩展,但是,我想让用户选择一个选项,而不是另一个选项。具体来说,我想要两组片段,一组生成 JavaScript 模块,导出格式如下
export default class C { }
还有一个像这样的格式
class C {
}
export default C;
并且我想根据用户的偏好加载一个或另一组片段。
有什么办法可以支持这样的事情吗?换句话说,当我在市场上发布我的扩展时,是否有任何我可以公开的挂钩可以让用户向我指示他们喜欢哪种格式,这样我就可以加载 those片段?
我不认为扩展程序可以通过 json 文件提供动态片段,但您的扩展程序可以使用自定义 CompletionItemProvider
returns 动态片段,像这样也许:
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 { [=10=] }')
} else {
item.insertText = new vscode.SnippetString(
`class C {
[=10=]
}
export default C;`)
}
return [item]
}
public resolveCompletionItem(
item: vscode.CompletionItem,
_token: vscode.CancellationToken
) {
return item
}
}
我想发布带有一些 JavaScript 片段的 Visual Studio 代码扩展,但是,我想让用户选择一个选项,而不是另一个选项。具体来说,我想要两组片段,一组生成 JavaScript 模块,导出格式如下
export default class C { }
还有一个像这样的格式
class C {
}
export default C;
并且我想根据用户的偏好加载一个或另一组片段。
有什么办法可以支持这样的事情吗?换句话说,当我在市场上发布我的扩展时,是否有任何我可以公开的挂钩可以让用户向我指示他们喜欢哪种格式,这样我就可以加载 those片段?
我不认为扩展程序可以通过 json 文件提供动态片段,但您的扩展程序可以使用自定义 CompletionItemProvider
returns 动态片段,像这样也许:
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 { [=10=] }')
} else {
item.insertText = new vscode.SnippetString(
`class C {
[=10=]
}
export default C;`)
}
return [item]
}
public resolveCompletionItem(
item: vscode.CompletionItem,
_token: vscode.CancellationToken
) {
return item
}
}