VS代码扩展:隐藏命令面板中的命令

Glu*_*ate 5 typescript visual-studio-code vscode-extensions

背景:

我目前正在开发一个简单的VS Code扩展,它将为我的构建和调试任务提供动态设置的命令变量。计划要具有一系列属性,这些属性可以通过"${command:extension.myCommand}"语法在launch.json等中进行访问。

像这样注册命令就像将一个条目添加到package.json文件一样简单,例如:

"contributes": {
    "commands": [
        {
            "command": "extension.myCommand",
            "title": ""
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

并在我的主扩展文件中实现相应的命令:

let disposable = vscode.commands.registerCommand('extension.myCommand', () => {
    return "dynvar";
});
context.subscriptions.push(disposable);
Run Code Online (Sandbox Code Playgroud)

问题

不幸的是,这些命令现在也出现在命令选项板中,因为它们没有任何令人讨厌的交互式用法。

题:

有什么方法可以隐藏VS Code的命令面板中通过扩展贡献的命令?

Gam*_*a11 9

如果您不需要将 an"icon"或 a"title"与您的命令相关联,您可以简单地将其省略 from "commands"- 未在此处列出的命令仍然可以调用,只要它们已通过vscode.commands.

否则,您可以使用以下技巧将其从命令面板中隐藏:

"contributes": {
    "menus": {
        "commandPalette": [
            {
                "command": "extension.myCommand",
                "when": "false"
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这一定是一个 hack,你确实不需要在 `package.json` 中注册一个命令就可以调用它。`"when": "false"` 主要用于 UI/for 按钮中使用的命令,但不应显示在命令面板中。在这种情况下,您还希望/必须设置`"title"` 和`"icon"`。我会用这些信息更新我的答案。 (3认同)