From bfa45a6a11fb1b6ee2edbba2b2b056b5761df155 Mon Sep 17 00:00:00 2001 From: rr-develop Date: Mon, 3 Aug 2026 11:02:06 +0200 Subject: [PATCH] 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)