Enable/disable dynamic registration in caps past 3.0
[opengl.git] / src / Language / Haskell / LSP / Test / Capabilities.hs
1 -- TODO: Move this into haskell-lsp
2 module Language.Haskell.LSP.Test.Capabilities where
3 import Language.Haskell.LSP.Types
4 import Language.Haskell.LSP.Types.Capabilities
5
6 -- | Capabilities for full conformance to the current (v3.10) LSP specification.
7 -- The whole shebang.
8 fullCaps :: ClientCapabilities
9 fullCaps = capsForVersion (LSPVersion maxBound maxBound)
10
11 -- | A specific version of the LSP specification.
12 data LSPVersion = LSPVersion Int -- ^ Major
13                              Int -- ^ Minor
14
15 -- | Capabilities for full conformance to the LSP specification up until a version.
16 -- Some important milestones:
17 --
18 -- * 3.8 codeAction literals
19 -- * 3.0 dynamic registration
20 capsForVersion :: LSPVersion -> ClientCapabilities
21 capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing
22   where
23     w = WorkspaceClientCapabilities
24           (Just True)
25           (Just (WorkspaceEditClientCapabilities (Just True)))
26           (Just (DidChangeConfigurationClientCapabilities dynamicReg))
27           (Just (DidChangeWatchedFilesClientCapabilities dynamicReg))
28           (Just (SymbolClientCapabilities dynamicReg))
29           (Just (ExecuteClientCapabilities dynamicReg))
30     td = TextDocumentClientCapabilities
31           (Just sync)
32           (Just (CompletionClientCapabilities 
33                   dynamicReg
34                   (Just (CompletionItemClientCapabilities (Just True)))))
35           (Just (HoverClientCapabilities dynamicReg))
36           (Just (SignatureHelpClientCapabilities dynamicReg))
37           (Just (ReferencesClientCapabilities dynamicReg))
38           (Just (DocumentHighlightClientCapabilities dynamicReg))
39           (Just (DocumentSymbolClientCapabilities dynamicReg))
40           (Just (FormattingClientCapabilities (Just True)))
41           (Just (RangeFormattingClientCapabilities dynamicReg))
42           (Just (OnTypeFormattingClientCapabilities dynamicReg))
43           (Just (DefinitionClientCapabilities dynamicReg))
44           (Just codeAction)
45           (Just (CodeLensClientCapabilities dynamicReg))
46           (Just (DocumentLinkClientCapabilities dynamicReg))
47           (Just (RenameClientCapabilities dynamicReg))
48     sync = SynchronizationTextDocumentClientCapabilities
49             dynamicReg
50             (Just True)
51             (Just True)
52             (Just True)
53     codeAction = CodeActionClientCapabilities
54                   dynamicReg
55                   codeActionLiterals
56     codeActionLiterals
57       | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
58       | otherwise            = Nothing
59     kinds = CodeActionKindValueSet
60               (List [ CodeActionQuickFix
61                     , CodeActionRefactor
62                     , CodeActionRefactorExtract
63                     , CodeActionRefactorInline
64                     , CodeActionRefactorRewrite
65                     , CodeActionSource
66                     , CodeActionSourceOrganizeImports
67                     ])
68     dynamicReg
69       | maj >= 3  = Just True
70       | otherwise = Nothing