9947906c4685a521c818de8a027ac3dc9e079a92
[lsp-test.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 capsForVersion :: LSPVersion -> ClientCapabilities
17 capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing
18   where
19     w = WorkspaceClientCapabilities
20           (Just True)
21           (Just (WorkspaceEditClientCapabilities (Just True)))
22           (Just (DidChangeConfigurationClientCapabilities (Just True)))
23           (Just (DidChangeWatchedFilesClientCapabilities (Just True)))
24           (Just (SymbolClientCapabilities (Just True)))
25           (Just (ExecuteClientCapabilities (Just True)))
26     td = TextDocumentClientCapabilities
27           (Just sync)
28           (Just (CompletionClientCapabilities 
29                   (Just True)
30                   (Just (CompletionItemClientCapabilities (Just True)))))
31           (Just (HoverClientCapabilities (Just True)))
32           (Just (SignatureHelpClientCapabilities (Just True)))
33           (Just (ReferencesClientCapabilities (Just True)))
34           (Just (DocumentHighlightClientCapabilities (Just True)))
35           (Just (DocumentSymbolClientCapabilities (Just True)))
36           (Just (FormattingClientCapabilities (Just True)))
37           (Just (RangeFormattingClientCapabilities (Just True)))
38           (Just (OnTypeFormattingClientCapabilities (Just True)))
39           (Just (DefinitionClientCapabilities (Just True)))
40           (Just codeAction)
41           (Just (CodeLensClientCapabilities (Just True)))
42           (Just (DocumentLinkClientCapabilities (Just True)))
43           (Just (RenameClientCapabilities (Just True)))
44     sync = SynchronizationTextDocumentClientCapabilities
45             (Just True)
46             (Just True)
47             (Just True)
48             (Just True)
49     codeAction = CodeActionClientCapabilities
50                   (Just True)
51                   codeActionLiterals
52     codeActionLiterals
53       | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
54       | otherwise            = Nothing
55     kinds = CodeActionKindValueSet
56               (List [ CodeActionQuickFix
57                     , CodeActionRefactor
58                     , CodeActionRefactorExtract
59                     , CodeActionRefactorInline
60                     , CodeActionRefactorRewrite
61                     , CodeActionSource
62                     , CodeActionSourceOrganizeImports
63                     ])