2017-03-10 33 views
1

只有满足某些条件时才会激活Vscode分机。 (基于activationEvents)。Vscode分机:如果分机不活动,隐藏菜单分机

在我的扩展中,我想添加一个菜单贡献。问题是,如果扩展未处于活动状态,单击该按钮将触发错误。所以理想情况下,只有在扩展处于活动状态时才可以看到。

我该如何做到这一点? when-clause似乎太有限了。

"activationEvents": [ 
    "workspaceContains:server" 
], 
"contributes": { 
    "commands": [ 
     { 
      "command": "extension.displayHelp", 
      "title": "RCE Help" 
     } 
    ],  
    "menus": { 
     "editor/title": [{ 
      "when": "resourceLangId != markdown", 
      "command": "extension.displayHelp", 
      "group": "navigation" 
     }] 
    }, 
} 

enter image description here


编辑:

原来添加在activationEvents作品onCommand

尽管Vscode声明错误消息中未找到该命令,但确实找到了它并决定不触发它。

"activationEvents": [ 
    "onCommand:extension.displayHelp", 
    "workspaceContains:server", 
], 

但是,如果扩展名未激活,我仍然希望完全隐藏菜单的贡献。

+0

我也有同样的问题,但我不希望将按需添加到activationEvents。如果我的激活事件不匹配,则这些命令将失败(缺少配置信息)。如果不显示非活动扩展程序的贡献,或者至少有选项,这将是很好的。 –

回答

0

使用这样的代码

vscode.commands.executeCommand('setContext', 'yourCMD', true); 

"menus": { 
    "editor/context": [ 
     { 
     "when": "editorHasSelection&&yourCMD", 
     "command": "port.sendSelect", 
      "group": "navigation" 
     } 
    ] 
} 

我的代码在这里https://github.com/hanfengcan/lemon