From bfa45a6a11fb1b6ee2edbba2b2b056b5761df155 Mon Sep 17 00:00:00 2001 From: rr-develop Date: Mon, 3 Aug 2026 11:02:06 +0200 Subject: [PATCH 1/2] fix(kotlin): handle workspace refresh requests to prevent LS shutdown The Kotlin language server client advertises `refreshSupport` for codeLens, semanticTokens, inlineValue, inlayHint and diagnostics, but registered no handler for the corresponding `workspace/*/refresh` requests. When the server sends one, `LanguageServerProcess._request_handler` finds no handler and replies with `MethodNotFound`. The Kotlin LSP treats that error as fatal and terminates, which surfaces as `LanguageServerTerminatedException` and kills any in-flight tool call. Register no-op handlers for all five advertised capabilities, mirroring what `svelte_language_server` already does. --- .../language_servers/kotlin_language_server.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/solidlsp/language_servers/kotlin_language_server.py b/src/solidlsp/language_servers/kotlin_language_server.py index 45901ede..940758f6 100644 --- a/src/solidlsp/language_servers/kotlin_language_server.py +++ b/src/solidlsp/language_servers/kotlin_language_server.py @@ -475,6 +475,16 @@ class KotlinLanguageServer(SolidLanguageServer): self._indexing_complete.set() self.server.on_request("client/registerCapability", do_nothing) + # We advertise `refreshSupport` for these features in the client + # capabilities above, so the server is entitled to send the matching + # refresh requests. Without a handler the client answers + # `MethodNotFound`, which the Kotlin LSP treats as fatal and shuts + # itself down, taking any in-flight request with it. + self.server.on_request("workspace/diagnostic/refresh", do_nothing) + self.server.on_request("workspace/inlayHint/refresh", do_nothing) + self.server.on_request("workspace/inlineValue/refresh", do_nothing) + self.server.on_request("workspace/semanticTokens/refresh", do_nothing) + self.server.on_request("workspace/codeLens/refresh", do_nothing) self.server.on_notification("language/status", do_nothing) self.server.on_notification("window/logMessage", window_log_message) self.server.on_request("workspace/executeClientCommand", execute_client_command_handler) From d3293b2c63cd2c5b8ca48fd9fc01301d1a982f29 Mon Sep 17 00:00:00 2001 From: rr-develop Date: Mon, 3 Aug 2026 11:07:15 +0200 Subject: [PATCH 2/2] fix(svelte): correct inlayHint refresh method name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `workspace/inlayHints/refresh` (plural) is not a method in the LSP specification — the refresh request is `workspace/inlayHint/refresh`. The handler could therefore never be invoked, so the request it was meant to absorb would still be answered with `MethodNotFound`. --- src/solidlsp/language_servers/svelte_language_server.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/solidlsp/language_servers/svelte_language_server.py b/src/solidlsp/language_servers/svelte_language_server.py index b18e32e5..e716dea0 100644 --- a/src/solidlsp/language_servers/svelte_language_server.py +++ b/src/solidlsp/language_servers/svelte_language_server.py @@ -592,7 +592,9 @@ class SvelteLanguageServer(SolidLanguageServer): self.server.on_request("workspace/applyEdit", workspace_apply_edit_handler) self.server.on_request("workspace/configuration", configuration_handler) self.server.on_request("workspace/diagnostic/refresh", do_nothing) - self.server.on_request("workspace/inlayHints/refresh", do_nothing) + # `inlayHint` is singular per the LSP spec; the previous `inlayHints` + # spelling matched no real request and was therefore never invoked. + self.server.on_request("workspace/inlayHint/refresh", do_nothing) self.server.on_request("workspace/semanticTokens/refresh", do_nothing) self._wrap_notify_send_for_ts_js_mirror() self.server.start()