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