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

时间:2016-07-08 12:59:42

标签: visual-studio-code vscode-extensions

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

 a {
    color: white;
    text-decoration: none;
}
a:hover, a:active {
    text-decoration: line-through;
    transition: all .4s steps(4, end);
    text-shadow: 6px 2px rgba(255, 255, 255, .4), -6px 2px rgba(255, 255, 255, .8), 6px -2px rgba(255, 255, 255, .2), -6px -2px rgba(255, 255, 255, .6);
}

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

5 个答案:

答案 0 :(得分:6)

您可以使用"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

我已提交an issue来改进此文档。

答案 1 :(得分:1)

你可以得到像这样的语言ID列表......

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

我仍然无法确定如何确定右键单击的项目是否为目录。如果有人弄明白,请告诉我。

答案 2 :(得分:1)

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

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

是目录:"when": "explorerResourceIsFolder"

答案 3 :(得分:0)

关于该功能的说明是here。但基本上是:

  
      
  • when与keybindings-when相同,并且可以使用相同的键
  •   
  • 何时可以使用两个新的密钥resourceScheme和resourceLangId,这些密钥在没有编辑器的情况下可用 - 想想资源管理器上下文   菜单
  •   
  • when可以是布尔配置值,例如config.editor.lineNumbers
  •   

我的菜单:

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

答案 4 :(得分:0)

关于获取上下文密钥的完整列表:在最新的VSCode版本中,有一个 Developer:Inspect Context Keys 命令。这样,您可以通过选择UI元素来做到这一点:

之后,将打开开发控制台,您可以展开记录的对象: