From eda4612d92cf3d5961343ae0f142050a3dd7a21b Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Fri, 15 Oct 2021 04:44:09 +0800 Subject: [PATCH] feat: startup extension by open .ts file for take over mode --- .../vscode-vue-language-features/package.json | 4 ++++ packages/client/src/extension.ts | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/extensions/vscode-vue-language-features/package.json b/extensions/vscode-vue-language-features/package.json index 19e688991b..f1712b396f 100644 --- a/extensions/vscode-vue-language-features/package.json +++ b/extensions/vscode-vue-language-features/package.json @@ -25,6 +25,10 @@ ], "activationEvents": [ "onLanguage:vue", + "onLanguage:javascript", + "onLanguage:typescript", + "onLanguage:javascriptreact", + "onLanguage:typescriptreact", "onWebviewPanel:preview" ], "main": "node_modules/@volar/client/out/extension.js", diff --git a/packages/client/src/extension.ts b/packages/client/src/extension.ts index b4e77de634..ef0ac1429d 100644 --- a/packages/client/src/extension.ts +++ b/packages/client/src/extension.ts @@ -26,6 +26,30 @@ let lowPowerMode = false; export async function activate(context: vscode.ExtensionContext) { + const stopCheck = vscode.window.onDidChangeActiveTextEditor(tryActivate); + tryActivate(); + + function tryActivate() { + + if (!vscode.window.activeTextEditor) + return; + + const currentlangId = vscode.window.activeTextEditor.document.languageId; + if (currentlangId === 'vue') { + doActivate(context); + stopCheck.dispose(); + } + + const takeOverMode = takeOverModeEnabled(); + if (takeOverMode && ['javascript', 'typescript', 'javascriptreact', 'typescriptreact'].includes(currentlangId)) { + doActivate(context); + stopCheck.dispose(); + } + } +} + +async function doActivate(context: vscode.ExtensionContext) { + lowPowerMode = lowPowerModeEnabled(); if (lowPowerMode) { vscode.window