[英]Registration of multiple commands in VSCode extension
我正在嘗試理解擴展激活例程,也許有人可以幫助我。
在package.json
文件中有activationEvents
節點,我在其中定義何時激活擴展(例如,通過onCommand
執行命令時)。 見幫助
從示例擴展的代碼文檔中,我了解擴展只會在第一次執行命令時激活。
當我在擴展中定義多個命令時會發生什么? 我會在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服務的來源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.