【问题标题】:Get Visual Studio Code snippets scope programmatically using API使用 API 以编程方式获取 Visual Studio 代码片段范围
【发布时间】:2019-11-09 09:30:23
【问题描述】:

我可以获取 sn-ps 的可用范围列表吗?

是否有任何本机功能可以控制要创建的文件和位置?

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    片段的范围限定为语言,并作为工作区的全局或本地引入 VS Code。语言可以通过异常贡献给 VS Code。通常通过在package.json 中声明一种语言,添加一个语法和sn -p 文件。 更新: 这是guide how to add a snippet to any language via your extension。如果您按照指南向当前工作区添加一个 sn-p,您会注意到在工作区的 .vscode 文件夹下创建了扩展名为 .code-snippets 的文件。因此,您可以使用vscode.workspace.workspaceFoldersfs.readDir API 枚举所有此类文件。

        vscode.workspace.workspaceFolders!.forEach(workspaceFolder => {
            const snippetFiles = fs.readdirSync(path.join(workspaceFolder.uri.fsPath, '.vscode'))
                .filter(el => /\.code-snippets$/.test(el));
        });
    

    同样,全局 sn-ps 以 .code-snippets 文件的形式添加到用户配置文件夹中 - 在 Windows 上看起来像这样:C:\Users\currentUser\AppData\Roaming\Code\User\snippets\*.code-snippets。您可以在这两个位置扫描 *.code-snippets 文件以及以编程方式将此类文件添加到这些文件夹中。

    这里是文档how to add snippets to a scope via a file。似乎没有任何公共 API 可以以编程方式枚举所有此类 sn-p 文件。

    但如果您想在您发布的屏幕截图中检索语言列表,请使用此 API:

    vscode.languages.getLanguages()
    

    如果您解释了您想要实现的目标,这可能会有所帮助。你想找到一个特定的 sn-p 来自哪里来改变它吗?你想给这个列表中的一种语言添加一个 sn-p 吗?或者使用不在此列表中的语言?

    【讨论】:

    • 我想将 sn-p 自动添加到特定范围。如果没有这样的原生支持,那么我的目标是创建与我提供的屏幕截图相同的选择列表。我使用 getLangages 遇到的 2 个问题是:我找不到一种方法来获取括号 () 之间列出的范围的描述,其他问题是我不知道如何创建分隔现有范围的 splitlng 行与默认的
    • 所以对于第一个野心,您可以自动读取或写入.code-snippets 文件。或者使用扩展贡献点将 sn-p 添加到语言中。我已经相应地扩展了我的答案。如果这仍然没有帮助,请尝试通过举例说明您想要实现的行为来更具体。
    猜你喜欢
    • 2023-04-08
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多