From 9d2ba34f339683cb6bcb02c2c1eb4db397f97cf6 Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Wed, 4 Feb 2026 14:18:08 -0500 Subject: [PATCH 1/3] Improve error logging when starting sourcekit-lsp fails --- src/sourcekit-lsp/LanguageClientManager.ts | 24 ++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/sourcekit-lsp/LanguageClientManager.ts b/src/sourcekit-lsp/LanguageClientManager.ts index 7e568e833..2ed9be6e3 100644 --- a/src/sourcekit-lsp/LanguageClientManager.ts +++ b/src/sourcekit-lsp/LanguageClientManager.ts @@ -289,7 +289,11 @@ export class LanguageClientManager implements vscode.Disposable { const uri = folder.folder; if (this.languageClient === undefined) { this.currentWorkspaceFolder = folder; - this.restartedPromise = this.setupLanguageClient(folder); + this.restartedPromise = this.setupLanguageClient(folder).catch(reason => { + this.folderContext.workspaceContext.logger.error( + `Error starting SourceKit-LSP in setLanguageClientFolder: ${reason}` + ); + }); return; } else { // don't check for undefined uri's or if the current workspace is the same if we are @@ -368,9 +372,18 @@ export class LanguageClientManager implements vscode.Disposable { client.outputChannel.dispose(); }) .catch(async reason => { + this.folderContext.workspaceContext.logger.error( + `Error starting SourceKit-LSP in restartLanguageClient: ${reason}` + ); // error message matches code here https://github.com/microsoft/vscode-languageserver-node/blob/2041784436fed53f4e77267a49396bca22a7aacf/client/src/common/client.ts#L1409C1-L1409C54 if (reason.message === "Stopping the server timed out") { - await this.setupLanguageClient(workspaceFolder); + try { + await this.setupLanguageClient(workspaceFolder); + } catch (reason) { + this.folderContext.workspaceContext.logger.error( + `Error starting SourceKit-LSP after server timeout in restartLanguageClient: ${reason}` + ); + } } this.folderContext.workspaceContext.logger.error(reason); }); @@ -488,7 +501,10 @@ export class LanguageClientManager implements vscode.Disposable { }; } - private async startClient(client: LanguageClient, errorHandler: SourceKitLSPErrorHandler) { + private startClient( + client: LanguageClient, + errorHandler: SourceKitLSPErrorHandler + ): Promise { const runningPromise = new Promise((res, rej) => { const disposable = client.onDidChangeState(e => { // if state is now running add in any sub-folder workspaces that @@ -550,7 +566,7 @@ export class LanguageClientManager implements vscode.Disposable { } } catch (reason) { this.folderContext.workspaceContext.logger.error( - `Error starting SourceKit-LSP: ${reason}` + `Error starting SourceKit-LSP in startClient: ${reason}` ); if (this.languageClient?.state === State.Running) { await this.languageClient?.stop(); From 7c1b8d0477e8b8fd1dfe5bce9ccd12fc3aaec8db Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Wed, 4 Feb 2026 16:08:12 -0500 Subject: [PATCH 2/3] Update src/sourcekit-lsp/LanguageClientManager.ts Co-authored-by: Matthew Bastien --- src/sourcekit-lsp/LanguageClientManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sourcekit-lsp/LanguageClientManager.ts b/src/sourcekit-lsp/LanguageClientManager.ts index 2ed9be6e3..ac62dda88 100644 --- a/src/sourcekit-lsp/LanguageClientManager.ts +++ b/src/sourcekit-lsp/LanguageClientManager.ts @@ -291,7 +291,7 @@ export class LanguageClientManager implements vscode.Disposable { this.currentWorkspaceFolder = folder; this.restartedPromise = this.setupLanguageClient(folder).catch(reason => { this.folderContext.workspaceContext.logger.error( - `Error starting SourceKit-LSP in setLanguageClientFolder: ${reason}` + Error("Error starting SourceKit-LSP in setLanguageClientFolder", {cause: reason}) ); }); return; From f0a6543235ef13c233135ddea7c54ef01adfd499 Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Thu, 5 Feb 2026 09:30:56 -0500 Subject: [PATCH 3/3] Fix formatting --- src/sourcekit-lsp/LanguageClientManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sourcekit-lsp/LanguageClientManager.ts b/src/sourcekit-lsp/LanguageClientManager.ts index ac62dda88..01e137d13 100644 --- a/src/sourcekit-lsp/LanguageClientManager.ts +++ b/src/sourcekit-lsp/LanguageClientManager.ts @@ -291,7 +291,9 @@ export class LanguageClientManager implements vscode.Disposable { this.currentWorkspaceFolder = folder; this.restartedPromise = this.setupLanguageClient(folder).catch(reason => { this.folderContext.workspaceContext.logger.error( - Error("Error starting SourceKit-LSP in setLanguageClientFolder", {cause: reason}) + Error("Error starting SourceKit-LSP in setLanguageClientFolder", { + cause: reason, + }) ); }); return;