【问题标题】:VS Code extension: Hide commands from command paletteVS Code 扩展:隐藏命令面板中的命令
【发布时间】:2019-08-11 17:54:34
【问题描述】:

背景:

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

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

"contributes": {
    "commands": [
        {
            "command": "extension.myCommand",
            "title": ""
        }
    ]
}

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

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

问题

不幸的是,这些命令现在也出现在命令面板中,因为它们没有任何交互式使用,这很烦人。

问题:

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

【问题讨论】:

    标签: typescript visual-studio-code vscode-extensions


    【解决方案1】:

    如果您不需要将"icon""title" 与您的命令相关联,您可以简单地从"commands" 中省略它 - 仍然可以调用未在其中列出的命令,只要它们有已通过vscode.commands注册。

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

    "contributes": {
        "menus": {
            "commandPalette": [
                {
                    "command": "extension.myCommand",
                    "when": "false"
                }
            ]
        }
    }
    

    【讨论】:

    • 这行得通,谢谢! FWIW,似乎我也可以将contributes 部分留空,并且这些命令仍然可以通过命令变量调用。但是,这可能是一种技巧,而不是正确的做事方式,因此我将其标记为规范答案。
    • 我认为这不一定是 hack,您确实不需要在 package.json 中注册命令就可以调用它。 "when": "false" 主要用于 UI / 按钮中使用的命令,但不应显示在命令面板中。在这种情况下,您还需要/必须设置 "title""icon"。我会用该信息更新我的答案。
    【解决方案2】:

    下面的 sn-p 说明了如何隐藏注册为 'extension.myHiddenCommand' 的命令:

    "contributes": {
        "commands": [
        {
            "command": "extension.myHiddenCommand",
            "title": "Compile folder"
        }],
        "menus": {
            "commandPalette": [
            {
                "command": "extension.myHiddenCommand",
                "when": "false"
            }]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多