【问题标题】:How to list all commands related to a specific extension in VS Code's command palette?如何在 VS Code 的命令面板中列出与特定扩展相关的所有命令?
【发布时间】:2022-07-19 13:04:29
【问题描述】:

我正在编写一个扩展程序,我想知道是否有办法在命令面板中列出属于我的扩展程序的所有命令。

我在状态栏中添加了一个项目,一旦单击该项目,理想情况下应该会在命令面板中列出我的扩展程序中可用的所有命令,类似于单击语言时会显示语言列表。

我能得到的最接近的是:

    const statusBar = vscode.window.createStatusBarItem();
    statusBar.text = 'Cloudflare';
    statusBar.command = 'cloudflareDevTools.commands';
    statusBar.show();

    let commands = vscode.commands.registerCommand('cloudflareDevTools.commands', () => {

        vscode.commands.executeCommand("workbench.action.quickOpen", ">Cloudflare");

    });

结果如下:

这样,我基本上是通过提供一个作为扩展名一部分的字符串来过滤命令面板中的命令,它有点工作,因为它显示了我的扩展中的所有命令,但你可以看到它在case 多个扩展名具有相似的名称。

进入设置时也有类似的东西:您可以提供@ext:kenhowardpdx.vscode-gist,这将列出与该特定扩展相关的所有设置。我想要类似的东西,但对于我在 package.json 和 extension.js 中注册的命令。

谢谢!

【问题讨论】:

  • 我认为您没有可用于所有命令的一致命令 category,例如 Cloudflare: 请注意 : 来分隔您的类别。这似乎行得通。
  • @Mark 谢谢!你是对的category 会让我更接近,我现在就这样做,但肯定任何其他扩展都可能不小心使用相同的类别,把事情搞砸。我想知道是否有一个 API 点可以让我将所有扩展程序的命令提供给 QuickPick,但这暂时可以再次感谢
  • 你有没有在你的package.json中没有的命令?

标签: visual-studio-code vscode-extensions


【解决方案1】:

不知道为什么我以前没有想到这一点。您可以显示一个 QuickPick,基本上是一个迷你命令面板,其中仅包含您过滤的命令。

const qpOptions = {placeholder: "find-and-transform commands", canPickMany: false};

const allCommands = await vscode.commands.getCommands(true);

// filter by your extensionID
const findExtensionCommands = allCommands.filter(command => command.startsWith('find-and-transform'));

const selectedCommand = await vscode.window.showQuickPick(findExtensionCommands, qpOptions);

if (selectedCommand) {
    // do whatever you are going to do if the user makes a selection, like
    // vscode.commands.executeCommand(selectedCommand);
    console.log(selectedCommand);
}

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多