From 43fc575599f43d1c1dab7a3f2df3d204a2dc6f2e Mon Sep 17 00:00:00 2001
From: carsakiller <carsakiller@gmail.com>
Date: Tue, 30 May 2023 14:28:58 -0400
Subject: [PATCH] fix: start language server with addon manager

---
 client/src/addon_manager/registration.ts |  8 ++++++++
 client/src/languageserver.ts             | 11 +++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/client/src/addon_manager/registration.ts b/client/src/addon_manager/registration.ts
index 97dc2b4..20ac31d 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 260f140..51a00d9 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;
         }
     }
-- 
GitLab