javascript - Visual Studio代码: Installation hook for snippets extension

标签 javascript vscode-extensions visual-studio-code

我想发布一个包含一些 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/

相关文章:

javascript - 过滤器在此功能中的作用是什么?我们如何归还我们归还的东西?

javascript - 在 woocommerce 商店中的第三个产品后插入一个 div

javascript - 如何正确转义和取消转义包含换行文字的多行字符串?

visual-studio-code - VS Code - 查找快捷方式 'when' 表达式的面板/ View 上下文名称

visual-studio-code - VSCode : How to split editor using same shortkeys as Sublime Text

javascript - 创建新用户后 Firebase 身份验证状态发生变化

javascript - Hogan 在预编译模式下不支持 lambda

vscode-extensions - 更新 vscode 语言扩展时如何更正 "You exceeded the number of allowed tags of 10"

visual-studio-code - 你可以将多个 glob 字符串传递给 vscode findFiles api

gulp - 如何使用键盘快捷键运行 Gulp 任务