From 476fc9f29ee5b0022daca0962dcb866213814868 Mon Sep 17 00:00:00 2001 From: Jatin Yadav Date: Sun, 22 Mar 2026 23:58:30 +0530 Subject: [PATCH] Fix: enable dynamic registration for semantic tokens; fix CantRegister log --- lsp-types/src/Language/LSP/Protocol/Capabilities.hs | 7 ++++--- lsp/src/Language/LSP/Server/Core.hs | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lsp-types/src/Language/LSP/Protocol/Capabilities.hs b/lsp-types/src/Language/LSP/Protocol/Capabilities.hs index dc696f9f..a51f57ce 100644 --- a/lsp-types/src/Language/LSP/Protocol/Capabilities.hs +++ b/lsp-types/src/Language/LSP/Protocol/Capabilities.hs @@ -298,9 +298,10 @@ dynamicRegistrationSupported m caps = fromMaybe False $ case m of SMethod_TextDocumentMoniker -> caps ^? dyn m SMethod_TextDocumentPrepareTypeHierarchy -> caps ^? dyn m SMethod_TextDocumentDiagnostic -> caps ^? dyn m - -- semantic tokens is messed up due to it having you register with an otherwise non-existent method - -- SMethod_TextDocumentSemanticTokens -> capDyn $ clientCaps ^? L.textDocument . _Just . L.semanticTokens . _Just - -- Notebook document methods alway support dynamic registration, it seems? + SMethod_TextDocumentSemanticTokensFull -> caps ^? dyn m + SMethod_TextDocumentSemanticTokensFullDelta -> caps ^? dyn m + SMethod_TextDocumentSemanticTokensRange -> caps ^? dyn m + -- Notebook document methods always support dynamic registration, it seems? _ -> Just False where dyn :: L.HasDynamicRegistration (ClientCapability m) (Maybe Bool) => SMethod m -> Traversal' ClientCapabilities Bool diff --git a/lsp/src/Language/LSP/Server/Core.hs b/lsp/src/Language/LSP/Server/Core.hs index f8813f3f..3ebcce84 100644 --- a/lsp/src/Language/LSP/Server/Core.hs +++ b/lsp/src/Language/LSP/Server/Core.hs @@ -620,7 +620,7 @@ trySendRegistration logger method regOpts = do pure (Just $ RegistrationToken method regId) else do - logger <& CantRegister SMethod_WorkspaceDidChangeConfiguration `WithSeverity` Warning + logger <& CantRegister method `WithSeverity` Warning pure Nothing {- | Sends a @client/unregisterCapability@ request and removes the handler