From 46a91bc16e174c810ee8380a20ca1f7bead69aa9 Mon Sep 17 00:00:00 2001 From: Alex Carney <alcarneyme@gmail.com> Date: Sat, 10 Feb 2024 19:02:18 +0000 Subject: [PATCH] lsp: Allow features to register shutdown handlers --- lib/esbonio/esbonio/server/feature.py | 3 +++ lib/esbonio/esbonio/server/server.py | 3 +++ lib/esbonio/esbonio/server/setup.py | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/lib/esbonio/esbonio/server/feature.py b/lib/esbonio/esbonio/server/feature.py index c2fb0d5cd..517c7a9f7 100644 --- a/lib/esbonio/esbonio/server/feature.py +++ b/lib/esbonio/esbonio/server/feature.py @@ -57,6 +57,9 @@ def initialize(self, params: types.InitializeParams): def initialized(self, params: types.InitializedParams): """Called when the ``initialized`` notification is received.""" + def shutdown(self, params: None): + """Called when the server is instructed to ``shutdown`` by the client.""" + def document_change(self, params: types.DidChangeTextDocumentParams): """Called when a text document is changed.""" diff --git a/lib/esbonio/esbonio/server/server.py b/lib/esbonio/esbonio/server/server.py index 03d20ac94..ff2c7adbd 100644 --- a/lib/esbonio/esbonio/server/server.py +++ b/lib/esbonio/esbonio/server/server.py @@ -123,6 +123,9 @@ async def initialized(self, params: types.InitializedParams): ) self._ready.set_result(True) + def lsp_shutdown(self, params: None): + """Called when the server is instructed to ``shutdown`` by the client.""" + def load_extension(self, name: str, setup: Callable): """Load the given setup function as an extension. diff --git a/lib/esbonio/esbonio/server/setup.py b/lib/esbonio/esbonio/server/setup.py index ff15e0987..b2ea77596 100644 --- a/lib/esbonio/esbonio/server/setup.py +++ b/lib/esbonio/esbonio/server/setup.py @@ -57,6 +57,11 @@ async def on_initialized( await ls.initialized(params) await call_features(ls, "initialized", params) + @server.feature(types.SHUTDOWN) + async def on_shutdown(ls: EsbonioLanguageServer, params: None): + ls.lsp_shutdown(params) + await call_features(ls, "shutdown", params) + @server.feature(types.TEXT_DOCUMENT_DID_CHANGE) async def on_document_change( ls: EsbonioLanguageServer, params: types.DidChangeTextDocumentParams