From a84018c6206cb17c00284bc792901fecf6785700 Mon Sep 17 00:00:00 2001 From: Dominik Nakamura Date: Mon, 4 Dec 2023 15:42:41 +0900 Subject: [PATCH] fix(lsp): remove closed documents from the state To avoid growing the list of open files indefinitely, remove them from the state of the server when closed in the editor. --- crates/stef-lsp/src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/stef-lsp/src/main.rs b/crates/stef-lsp/src/main.rs index 74d8a06..ae2adf8 100644 --- a/crates/stef-lsp/src/main.rs +++ b/crates/stef-lsp/src/main.rs @@ -11,8 +11,8 @@ use tower_lsp::{ jsonrpc::Result, lsp_types::{ ConfigurationItem, Diagnostic, DidChangeConfigurationParams, DidChangeTextDocumentParams, - DidOpenTextDocumentParams, InitializeParams, InitializeResult, InitializedParams, - MessageType, Registration, SemanticTokenModifier, SemanticTokenType, + DidCloseTextDocumentParams, DidOpenTextDocumentParams, InitializeParams, InitializeResult, + InitializedParams, MessageType, Registration, SemanticTokenModifier, SemanticTokenType, SemanticTokensFullOptions, SemanticTokensLegend, SemanticTokensOptions, SemanticTokensParams, SemanticTokensResult, SemanticTokensServerCapabilities, ServerCapabilities, ServerInfo, TextDocumentSyncCapability, TextDocumentSyncKind, Url, @@ -207,6 +207,11 @@ impl LanguageServer for Backend { .insert(params.text_document.uri, file); } + async fn did_close(&self, params: DidCloseTextDocumentParams) { + debug!(uri = %params.text_document.uri, "schema closed"); + self.files.lock().await.remove(¶ms.text_document.uri); + } + async fn semantic_tokens_full( &self, params: SemanticTokensParams,