将命令附加到已经存在的键绑定

Appending a command to a already existing keybinding

我想在我的扩展程序中将一个命令附加到一个已经存在的键绑定 F12 以转到定义。

如果我在我的 package.json 文件中设置它,则不再执行标准命令(删除键绑定)。

有什么方法可以执行我的命令:

  1. editor.action.goToDeclaration 完成后(最多失败)
  2. 通过某种方式将其附加到键绑定

或者正常的行为应该是命令被连接起来,但我做错了什么,现在它被覆盖了?

简答:

这是不可能的(据我所知)。

但在这种特殊情况下,无论如何这是错误的方法。转到定义是一种语言功能,因此应该在语言服务器中实现,正如此处正确提到的那样:

https://github.com/Microsoft/vscode/issues/16402

在这种情况下使用键绑定将始终掩盖底层语言服务器(例如 Typescript)提供的命令。

这是 vscode 文档中有关如何实现语言功能的文章:

https://code.visualstudio.com/docs/extensions/language-support#_show-definitions-of-a-symbol