在 VSCode 扩展中注册多个命令
Registration of multiple commands in VSCode extension
我正在尝试了解扩展程序激活例程,也许有人可以帮助我。
在文件 package.json
中有 activationEvents
节点,我在其中定义扩展何时被激活(例如,当通过 onCommand
执行命令时)。 See help
根据示例扩展的代码文档,我了解到该扩展只会在第一次执行命令时激活。
当我在扩展中定义多个命令时会发生什么?我会在 activate
函数中注册所有命令并将它们添加到 activationEvents
:
"activationEvents": [
"onCommand:extension.testCommand1",
"onCommand:extension.testCommand2",
"onCommand:extension.testCommand3"
],
activate
函数是否只在第一次执行任何命令时调用一次?或者它会在第一次执行 extension.testCommand1
、extension.testCommand2
和 extension.testCommand3
时调用函数(--> 三次)?
我也在写一个语言服务器,想把所有东西都放在同一个扩展中。这是可能的还是我需要创建两个额外的扩展(客户端和服务器)?
回答你的第一个问题,它只会被调用一次,只有在第一次激活事件发生时。如果您有兴趣自己验证这一点,请将 package.json
中的激活事件设置为:
"activationEvents": [
"onLanguage:js",
"onLanguage:python",
"onLanguage:ruby"
],
然后在你的扩展中的激活方法中设置断点,按F5开始调试,通过命令面板将语言模式更改为js、python、ruby。您会看到断点仅在第一次命中。
关于你的第二个问题,这可能取决于你的语言服务需要做什么。如果你想做一些像打字稿语言服务一样复杂的事情,你可能需要两者。如果你想做一些 lints,提供悬停提示,或更多,但不像打字稿那么复杂,你可以做一个扩展。
我个人在使用 php 服务作为我的语言扩展的例子。该团队做得很好,功能分离良好且易于理解。您可以查看 php 服务的来源 here.
我正在尝试了解扩展程序激活例程,也许有人可以帮助我。
在文件 package.json
中有 activationEvents
节点,我在其中定义扩展何时被激活(例如,当通过 onCommand
执行命令时)。 See help
根据示例扩展的代码文档,我了解到该扩展只会在第一次执行命令时激活。
当我在扩展中定义多个命令时会发生什么?我会在 activate
函数中注册所有命令并将它们添加到 activationEvents
:
"activationEvents": [
"onCommand:extension.testCommand1",
"onCommand:extension.testCommand2",
"onCommand:extension.testCommand3"
],
activate
函数是否只在第一次执行任何命令时调用一次?或者它会在第一次执行 extension.testCommand1
、extension.testCommand2
和 extension.testCommand3
时调用函数(--> 三次)?
我也在写一个语言服务器,想把所有东西都放在同一个扩展中。这是可能的还是我需要创建两个额外的扩展(客户端和服务器)?
回答你的第一个问题,它只会被调用一次,只有在第一次激活事件发生时。如果您有兴趣自己验证这一点,请将 package.json
中的激活事件设置为:
"activationEvents": [
"onLanguage:js",
"onLanguage:python",
"onLanguage:ruby"
],
然后在你的扩展中的激活方法中设置断点,按F5开始调试,通过命令面板将语言模式更改为js、python、ruby。您会看到断点仅在第一次命中。
关于你的第二个问题,这可能取决于你的语言服务需要做什么。如果你想做一些像打字稿语言服务一样复杂的事情,你可能需要两者。如果你想做一些 lints,提供悬停提示,或更多,但不像打字稿那么复杂,你可以做一个扩展。
我个人在使用 php 服务作为我的语言扩展的例子。该团队做得很好,功能分离良好且易于理解。您可以查看 php 服务的来源 here.