带有树视图和自定义上下文菜单的 VSCode 扩展

Pet*_*roz 6 visual-studio-code vscode-extensions

我正在实现一个提供自定义树视图的 Visual Studio Code 扩展,并在树视图中使用以下设置在上下文菜单中显示自定义命令contributes

"contributes": {
    ...
    "menus": {
        "view/item/context": [
            {
                "command": "myExtension.uploadFile",
                "when": "view == myBucketExplorer"
            }
        ]
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法只在树视图中为根节点显示此命令?是否有一个when子句可以帮助解决这个问题,或者我需要在实际调用菜单时以某种方式以编程方式禁用该命令?

Ale*_*lex 8

您可以contextValue为您的TreeItem.

export class Something extends vscode.TreeItem {
    // ...
    constructor(
        isRoot: boolean
    ) {
        this.contextValue = isRoot ? 'YOUR_CONTEXT' : undefined;
    }

}

async getChildren(element?: Something): Promise<Something[]> {
    if (element) {
        // NOT root
    } else {
        // ROOT -- Use different context for items
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用

"when": "view == myBucketExplorer && viewItem == YOUR_CONTEXT"
Run Code Online (Sandbox Code Playgroud)