单击 VSCode 的 activity 栏中的扩展程序图标后如何执行特定命令?
How to execute a particular command after clicking an extension's icon in VSCode's activity bar?
我正在开发 VSCode 扩展程序,并且刚刚将图标添加到 activity 栏。我想要做的是,每当用户单击该图标时执行命令。这是我试过的:
Package.json
"viewsContainers": {
"activitybar": [
{
"id": "myID",
"title": "Testing",
"icon": "res/logo.svg"
}
]
},
"views": {
"myID": [
{
"id": "Explorer",
"name": "Browse contents",
"commands": "vscode-myorg.getContents"
}
]
}
但是,vscode-myorg.getContents
命令在单击该图标后并未执行。我怎样才能做到这一点?
您必须定义您的任何新命令。
"commands": [
{
"command": "vscode-workat.getProblems",
"title": "Get Problems"
},
]
并在扩展中注册。
正在查看已关闭的 Feature Request: Add an API event to indicate when the sidebar viewlet changes,因为它正在等待 getContext
上另一个仍未解决的问题得到解决。并且在 package.json 中使用 intellisense 除了 id
、title
和 icon
之外没有其他键。所以你不能在那里放一个 command
条目(我试过了,但什么也没发生。)
还有一些其他选项可能适合您:
如果您的视图由 TreeView
填充,那么您可以检测到树视图的 visibility
何时发生变化:
myTree.onDidChangeVisibility(ev => {
console.log(ev); // ev.visibiltiy = true/false
})
因此您可以检测视图何时因为 Activity 栏图标被单击而变得可见。那确实有效。但是,当视图已经打开并且用户只是折叠或展开该单个视图时,也会触发此事件。而且我认为真的没有办法区分这两种情况。
如果您使用 WebView
填充您的视图,那么还有一个 onDidChangeVisibility
事件。
有一个视图激活的激活事件:
"activationEvents": [
"onView:package-dependencies"
]
但这只会在第一次激活视图时触发 - 并启动您的扩展程序的 activate
功能,因此可能不是您要找的。
我正在开发 VSCode 扩展程序,并且刚刚将图标添加到 activity 栏。我想要做的是,每当用户单击该图标时执行命令。这是我试过的:
Package.json
"viewsContainers": {
"activitybar": [
{
"id": "myID",
"title": "Testing",
"icon": "res/logo.svg"
}
]
},
"views": {
"myID": [
{
"id": "Explorer",
"name": "Browse contents",
"commands": "vscode-myorg.getContents"
}
]
}
但是,vscode-myorg.getContents
命令在单击该图标后并未执行。我怎样才能做到这一点?
您必须定义您的任何新命令。
"commands": [
{
"command": "vscode-workat.getProblems",
"title": "Get Problems"
},
]
并在扩展中注册。
正在查看已关闭的 Feature Request: Add an API event to indicate when the sidebar viewlet changes,因为它正在等待 getContext
上另一个仍未解决的问题得到解决。并且在 package.json 中使用 intellisense 除了 id
、title
和 icon
之外没有其他键。所以你不能在那里放一个 command
条目(我试过了,但什么也没发生。)
还有一些其他选项可能适合您:
如果您的视图由 TreeView
填充,那么您可以检测到树视图的 visibility
何时发生变化:
myTree.onDidChangeVisibility(ev => {
console.log(ev); // ev.visibiltiy = true/false
})
因此您可以检测视图何时因为 Activity 栏图标被单击而变得可见。那确实有效。但是,当视图已经打开并且用户只是折叠或展开该单个视图时,也会触发此事件。而且我认为真的没有办法区分这两种情况。
如果您使用 WebView
填充您的视图,那么还有一个 onDidChangeVisibility
事件。
有一个视图激活的激活事件:
"activationEvents": [
"onView:package-dependencies"
]
但这只会在第一次激活视图时触发 - 并启动您的扩展程序的 activate
功能,因此可能不是您要找的。