From aa0fb792086f32f52c2be7f2dac10adfa5557886 Mon Sep 17 00:00:00 2001 From: Claude Assistant Date: Wed, 25 Jun 2025 23:29:56 +0100 Subject: [PATCH] Fix C# language server initialization timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove incorrect shlex.quote() usage in command construction. The ProcessLaunchInfo expects a simple string command, not shell-quoted arguments. This was causing the dotnet runtime to receive literal quotes around arguments, preventing proper execution of the language server DLL. The fix changes from: cmd = " ".join(shlex.quote(part) for part in cmd_parts) to: cmd = " ".join(cmd_parts) This allows the language server to initialize correctly without timeout errors. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../csharp_language_server.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/solidlsp/language_servers/csharp_language_server/csharp_language_server.py b/src/solidlsp/language_servers/csharp_language_server/csharp_language_server.py index 68c4496..c1ff9dc 100644 --- a/src/solidlsp/language_servers/csharp_language_server/csharp_language_server.py +++ b/src/solidlsp/language_servers/csharp_language_server/csharp_language_server.py @@ -100,14 +100,9 @@ class CSharpLanguageServer(SolidLanguageServer): else: logger.log("No .sln or .csproj file found, language server will attempt auto-discovery", logging.WARNING) - # Use shlex to properly quote the command parts for shell safety - if platform.system() == "Windows": - # Windows doesn't use shell=True by default, so we can join with spaces - # But we still quote each part to handle spaces in paths - cmd = " ".join(shlex.quote(part) for part in cmd_parts) - else: - # Unix-like systems - use shlex for proper quoting - cmd = " ".join(shlex.quote(part) for part in cmd_parts) + # Join command parts with spaces + # ProcessLaunchInfo expects a simple string command, not shell-quoted + cmd = " ".join(cmd_parts) logger.log(f"Language server command: {cmd}", logging.DEBUG) @@ -616,6 +611,9 @@ class CSharpLanguageServer(SolidLanguageServer): self.server.on_request("window/workDoneProgress/create", handle_work_done_progress_create) self.logger.log("Starting Microsoft.CodeAnalysis.LanguageServer process", logging.INFO) + self.logger.log(f"Command: {self.process_launch_info.cmd}", logging.DEBUG) + self.logger.log(f"Working directory: {self.process_launch_info.cwd}", logging.DEBUG) + try: self.server.start() except Exception as e: