iro*_*cev 6 visual-studio-code vscode-extensions
是否可以覆盖现有的 VS Code 命令,例如editor.action.clipboardPasteAction?通过覆盖,我的意思是注册我自己的命令,每次应该调用原始命令时都会自动调用该命令。
例如,editor.action.clipboardPasteAction当Ctrl+V按下时调用(或其他一些快捷方式,取决于键绑定),但也可以在各种扩展的代码中通过调用显式调用
commands.executeCommand("editor.action.clipboardPasteAction");
Run Code Online (Sandbox Code Playgroud)
是否可以在我们自己的扩展中“拦截”命令调用,用我们自己的功能替换它,然后选择继续执行原始命令或发出信号应暂停执行?
我试图自己弄清楚,但找不到任何提供完整功能的东西。我找到的最接近的解决方案是在例如剪贴板历史扩展中使用的解决方案。此扩展试图通过覆盖其粘贴操作的键绑定package.json来实现“重载” :
{
"command": "clipboard.paste",
"key": "ctrl+v",
"mac": "cmd+v",
"when": "editorTextFocus"
}
Run Code Online (Sandbox Code Playgroud)
然后editor.action.clipboardPasteAction在clipboard.paste如上所示的命令中调用。
这种方法的问题是双重的:
package.json怎么办?commands.executeCommand()或通过命令调色板通过某些扩展调用,该怎么办。如果有一种方法可以动态地(在我们的扩展注册期间)获取原始命令的键绑定,然后使用相同的键绑定注册我们的命令,那么第一个问题就可以避免。我也不确定这是否可能。
在 VSCode 1.37.1(截至 2019 年 8 月 30 日)中,答案是否定的:无法拦截命令,也无法枚举键绑定。
但侦听命令的功能是Issue #1431,该功能在过去两个月内刚刚实现,据说在当前的内部版本中可用(我自己尚未证实)。但是,请注意,计划的功能不允许拦截(在取消的意义上)命令。
因此,即使该功能落地,也可能需要将其与其他一些监控功能结合使用,具体取决于所需的功能:
您可以监视任务,即外部进程调用。
您可以枚举扩展,监听它们发出的任何事件,调用它们选择发布的任何方法,并检查它们的package.json文件。
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |