diff --git a/client/src/addon_manager/registration.ts b/client/src/addon_manager/registration.ts index 97dc2b4a867962d4e5acc29fb40d1af1f77d5f3b..20ac31d9fbe76664f5537fcd70b80c9488e1afca 100644 --- a/client/src/addon_manager/registration.ts +++ b/client/src/addon_manager/registration.ts @@ -8,6 +8,7 @@ import RelativeTime from "dayjs/plugin/relativeTime"; import { git, setupGit } from "./services/git.service"; import { GIT_DOWNLOAD_URL } from "./config"; import { NotificationLevels } from "./types/webvue"; +import * as languageServer from "../languageserver"; dayjs.extend(RelativeTime); @@ -41,6 +42,13 @@ export async function activate(context: vscode.ExtensionContext) { logger.add(fileLogger); await fileLogger.logStart(); } + // Start language server if it is not already + // We depend on it to apply config modifications + if (!languageServer.defaultClient) { + logger.debug("Starting language server"); + await languageServer.createClient(context); + logger.debug("Language server has started"); + } // Check if git is installed if (!(await git.version()).installed) { diff --git a/client/src/languageserver.ts b/client/src/languageserver.ts index 260f140cf15d22a560ec65c44988dd18b291f975..51a00d9cd1b86a4f0a7ec44346a12d044cb3af70 100644 --- a/client/src/languageserver.ts +++ b/client/src/languageserver.ts @@ -78,6 +78,12 @@ function registerCustomCommands(context: ExtensionContext) { })); } +/** Creates a new {@link LuaClient} and starts it. */ +export const createClient = (context: ExtensionContext) => { + defaultClient = new LuaClient(context, [{ language: 'lua' }]) + defaultClient.start(); +} + class LuaClient { public client: LanguageClient; @@ -248,10 +254,7 @@ export function activate(context: ExtensionContext) { // Untitled files go to a default client. if (!defaultClient) { - defaultClient = new LuaClient(context, [ - { language: 'lua' } - ]); - defaultClient.start(); + createClient(context); return; } }