Rename sendRequest to request, sendRequest' to sendRequest
[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 -- | The whole shebang. The real deal.
7 -- Capabilities for full conformance to the current (v3.10) LSP specification.
8 fullCaps :: ClientCapabilities
9 fullCaps = capsForVersion (LSPVersion maxBound maxBound)
10
11 -- | A specific version of the LSP specification.
12 data LSPVersion = LSPVersion Int Int -- ^ Construct a major.minor version
13
14 -- | Capabilities for full conformance to the LSP specification up until a version.
15 -- Some important milestones:
16 --
17 -- * 3.8 codeAction literals
18 -- * 3.0 dynamic registration
19 capsForVersion :: LSPVersion -> ClientCapabilities
20 capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing
21   where
22     w = WorkspaceClientCapabilities
23           (Just True)
24           (Just (WorkspaceEditClientCapabilities (Just True)))
25           (Just (DidChangeConfigurationClientCapabilities dynamicReg))
26           (Just (DidChangeWatchedFilesClientCapabilities dynamicReg))
27           (Just (SymbolClientCapabilities dynamicReg))
28           (Just (ExecuteClientCapabilities dynamicReg))
29     td = TextDocumentClientCapabilities
30           (Just sync)
31           (Just (CompletionClientCapabilities 
32                   dynamicReg
33                   (Just (CompletionItemClientCapabilities (Just True)))))
34           (Just (HoverClientCapabilities dynamicReg))
35           (Just (SignatureHelpClientCapabilities dynamicReg))
36           (Just (ReferencesClientCapabilities dynamicReg))
37           (Just (DocumentHighlightClientCapabilities dynamicReg))
38           (Just (DocumentSymbolClientCapabilities dynamicReg))
39           (Just (FormattingClientCapabilities (Just True)))
40           (Just (RangeFormattingClientCapabilities dynamicReg))
41           (Just (OnTypeFormattingClientCapabilities dynamicReg))
42           (Just (DefinitionClientCapabilities dynamicReg))
43           (Just codeAction)
44           (Just (CodeLensClientCapabilities dynamicReg))
45           (Just (DocumentLinkClientCapabilities dynamicReg))
46           (Just (RenameClientCapabilities dynamicReg))
47     sync = SynchronizationTextDocumentClientCapabilities
48             dynamicReg
49             (Just True)
50             (Just True)
51             (Just True)
52     codeAction = CodeActionClientCapabilities
53                   dynamicReg
54                   codeActionLiterals
55     codeActionLiterals
56       | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
57       | otherwise            = Nothing
58     kinds = CodeActionKindValueSet
59               (List [ CodeActionQuickFix
60                     , CodeActionRefactor
61                     , CodeActionRefactorExtract
62                     , CodeActionRefactorInline
63                     , CodeActionRefactorRewrite
64                     , CodeActionSource
65                     , CodeActionSourceOrganizeImports
66                     ])
67     dynamicReg
68       | maj >= 3  = Just True
69       | otherwise = Nothing