src/commands: catch errors when starting language server
Added a catch block to the start language server logic
to ensure the rest of the extension activation completes.
Change-Id: I1664da130a981ef8034d1f0e8723b72a4be2d594
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/413424
Run-TryBot: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/src/commands/startLanguageServer.ts b/src/commands/startLanguageServer.ts
index 466cbdf..703c5ee 100644
--- a/src/commands/startLanguageServer.ts
+++ b/src/commands/startLanguageServer.ts
@@ -95,6 +95,10 @@
goCtx.serverInfo = toServerInfo(goCtx.languageClient.initializeResult);
updateStatus(goCtx, goConfig, true);
console.log(`Server: ${JSON.stringify(goCtx.serverInfo, null, 2)}`);
+ } catch (e) {
+ const msg = `Error starting language server: ${e}`;
+ console.log(msg);
+ goCtx.serverOutputChannel?.append(msg);
} finally {
goCtx.latestConfig = cfg;
unlock();
diff --git a/src/goMain.ts b/src/goMain.ts
index af0a716..0213e03 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -102,13 +102,13 @@
offerToInstallLatestGoVersion();
offerToInstallTools();
+ const registerCommand = commands.createRegisterCommand(ctx, goCtx);
+ registerCommand('go.languageserver.restart', commands.startLanguageServer);
+
await commands.startLanguageServer(ctx, goCtx)(RestartReason.ACTIVATION);
initCoverageDecorators(ctx);
- const registerCommand = commands.createRegisterCommand(ctx, goCtx);
-
- registerCommand('go.languageserver.restart', commands.startLanguageServer);
registerCommand('go.builds.run', commands.runBuilds);
const activeDoc = vscode.window.activeTextEditor?.document;