X-Git-Url: http://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FCapabilities.hs;h=2fd3a9947017ef244dd549585403df50078717f2;hp=9947906c4685a521c818de8a027ac3dc9e079a92;hb=cdb1ba7038c32bac71a3bc783effc1e07049a985;hpb=ddad6502d460a9140757ac38da7f59a3d5a3a96c diff --git a/src/Language/Haskell/LSP/Test/Capabilities.hs b/src/Language/Haskell/LSP/Test/Capabilities.hs index 9947906..2fd3a99 100644 --- a/src/Language/Haskell/LSP/Test/Capabilities.hs +++ b/src/Language/Haskell/LSP/Test/Capabilities.hs @@ -3,51 +3,54 @@ module Language.Haskell.LSP.Test.Capabilities where import Language.Haskell.LSP.Types import Language.Haskell.LSP.Types.Capabilities --- | Capabilities for full conformance to the current (v3.10) LSP specification. --- The whole shebang. +-- | The whole shebang. The real deal. +-- Capabilities for full conformance to the current (v3.10) LSP specification. fullCaps :: ClientCapabilities fullCaps = capsForVersion (LSPVersion maxBound maxBound) -- | A specific version of the LSP specification. -data LSPVersion = LSPVersion Int -- ^ Major - Int -- ^ Minor +data LSPVersion = LSPVersion Int Int -- ^ Construct a major.minor version -- | Capabilities for full conformance to the LSP specification up until a version. +-- Some important milestones: +-- +-- * 3.8 codeAction literals +-- * 3.0 dynamic registration capsForVersion :: LSPVersion -> ClientCapabilities capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing where w = WorkspaceClientCapabilities (Just True) (Just (WorkspaceEditClientCapabilities (Just True))) - (Just (DidChangeConfigurationClientCapabilities (Just True))) - (Just (DidChangeWatchedFilesClientCapabilities (Just True))) - (Just (SymbolClientCapabilities (Just True))) - (Just (ExecuteClientCapabilities (Just True))) + (Just (DidChangeConfigurationClientCapabilities dynamicReg)) + (Just (DidChangeWatchedFilesClientCapabilities dynamicReg)) + (Just (SymbolClientCapabilities dynamicReg)) + (Just (ExecuteClientCapabilities dynamicReg)) td = TextDocumentClientCapabilities (Just sync) (Just (CompletionClientCapabilities - (Just True) + dynamicReg (Just (CompletionItemClientCapabilities (Just True))))) - (Just (HoverClientCapabilities (Just True))) - (Just (SignatureHelpClientCapabilities (Just True))) - (Just (ReferencesClientCapabilities (Just True))) - (Just (DocumentHighlightClientCapabilities (Just True))) - (Just (DocumentSymbolClientCapabilities (Just True))) + (Just (HoverClientCapabilities dynamicReg)) + (Just (SignatureHelpClientCapabilities dynamicReg)) + (Just (ReferencesClientCapabilities dynamicReg)) + (Just (DocumentHighlightClientCapabilities dynamicReg)) + (Just (DocumentSymbolClientCapabilities dynamicReg)) (Just (FormattingClientCapabilities (Just True))) - (Just (RangeFormattingClientCapabilities (Just True))) - (Just (OnTypeFormattingClientCapabilities (Just True))) - (Just (DefinitionClientCapabilities (Just True))) + (Just (RangeFormattingClientCapabilities dynamicReg)) + (Just (OnTypeFormattingClientCapabilities dynamicReg)) + (Just (DefinitionClientCapabilities dynamicReg)) (Just codeAction) - (Just (CodeLensClientCapabilities (Just True))) - (Just (DocumentLinkClientCapabilities (Just True))) - (Just (RenameClientCapabilities (Just True))) + (Just (CodeLensClientCapabilities dynamicReg)) + (Just (DocumentLinkClientCapabilities dynamicReg)) + (Just (RenameClientCapabilities dynamicReg)) sync = SynchronizationTextDocumentClientCapabilities - (Just True) + dynamicReg (Just True) (Just True) (Just True) codeAction = CodeActionClientCapabilities - (Just True) + dynamicReg codeActionLiterals codeActionLiterals | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds) @@ -61,3 +64,6 @@ capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Noth , CodeActionSource , CodeActionSourceOrganizeImports ]) + dynamicReg + | maj >= 3 = Just True + | otherwise = Nothing