繁体   English   中英

VSCode 扩展 API - 在资源管理器上下文菜单中识别文件或文件夹单击

[英]VSCode Extension API - Identify file or folder click in explorer context menu

VSCode 1.3 添加了对向上下文菜单添加命令的支持。 有没有办法确定是否单击文件或文件夹以打开资源管理器上下文菜单?

"menus": {
    "explorer/context": [
        {
            "when": "????",
            "command": "extension.myCommand",
            "group": "myGroup"
        }
    ]
}

此外,是否有一个全面的(ish)表达式列表可以在此处的 when 子句中检查?

您可以使用"when": "explorerResourceIsFolder"

我不得不深入研究代码才能找到它(我实际上是在写一个回应,说它不存在,并在我看到它时枚举可能的子句值)。

从 v1.10.1 开始:

config.<any_config_path_here>
editorIsOpen
explorerResourceIsFolder
explorerViewletFocus
explorerViewletVisible
filesExplorerFocus
globalMessageVisible
inDebugMode
inQuickOpen
inZenMode
listFocus
openEditorsFocus
resource (Uri information: path, query, scheme, etc)
resourceFilename
resourceLangId
resourceScheme
scmProvider
textCompareEditorVisible

我已经提交了一个问题来改进文档。

关于获取上下文键的完整列表:在最近的 VSCode 版本中,有一个Developer: Inspect Context Keys命令。 执行命令后,它可以让您选择一个 UI 元素:

之后,开发控制台打开,您可以展开包含上下文键的完整列表及其在此“范围”中的当前值的记录对象:

https://code.visualstudio.com/docs/getstarted/keybindings#_when-clause-contexts

是文件: "when": "!explorerResourceIsFolder"

是 dir: "when": "explorerResourceIsFolder"

您可以像这样获取语言 ID 列表...

vscode.languages.getLanguages().then(l => console.log('languages', l));

我仍然没有弄清楚如何确定右键单击的项目是否是目录。 如果有人弄清楚了,请告诉我。

有关该功能的文章是here 但基本上:

  • when 与 keybindings-when 相同,可以使用相同的键
  • 何时可以使用两个新键 resourceScheme 和 resourceLangId,它们无需编辑器即可使用 - 想想资源管理器上下文菜单
  • when 可以是一个布尔配置值,例如 config.editor.lineNumbers

我的菜单:

"menus":{
    "explorer/context": [
        {
            "when": "resourceLangId == sql",
            "command": "extension.myCmd"
        }
    ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM