From e8c59b36d3d3b1777632a52a96dfea06825d7ef4 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 20 Jun 2024 10:06:47 +0200 Subject: [PATCH] fix(lsp): improve error reporting on LSP early exit --- src/project_manager.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/project_manager.zig b/src/project_manager.zig index be755e2..7765ac4 100644 --- a/src/project_manager.zig +++ b/src/project_manager.zig @@ -198,6 +198,8 @@ const Process = struct { self.dispatch_notify(project_directory, language_server, method, params_cb) catch |e| return self.logger.err("lsp-handling", e); } else if (try m.match(.{ "child", tp.extract(&project_directory), tp.extract(&language_server), "request", tp.extract(&method), tp.extract(&id), tp.extract_cbor(¶ms_cb) })) { self.dispatch_request(project_directory, language_server, method, id, params_cb) catch |e| return self.logger.err("lsp-handling", e); + } else if (try m.match(.{ "child", tp.extract(&path), "done" })) { + self.logger.print_err("lsp-handling", "child '{s}' terminated", .{path}); } else if (try m.match(.{ "open", tp.extract(&project_directory) })) { self.open(project_directory) catch |e| return from.forward_error(e); } else if (try m.match(.{ "request_recent_files", tp.extract(&project_directory), tp.extract(&max) })) { @@ -224,6 +226,8 @@ const Process = struct { return tp.exit_normal(); } else if (try m.match(.{ "exit", "normal" })) { return; + } else if (try m.match(.{ "exit", "DEADSEND", tp.any })) { + return; } else { self.logger.err("receive", tp.unexpected(m)); }