簡體   English   中英

在VSCode擴展中注冊多個命令

[英]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.testCommand1extension.testCommand2extension.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM