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
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)
11 -- | A specific version of the LSP specification.
12 data LSPVersion = LSPVersion Int Int -- ^ Construct a major.minor version
14 -- | Capabilities for full conformance to the LSP specification up until a version.
15 -- Some important milestones:
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
22 w = WorkspaceClientCapabilities
24 (Just (WorkspaceEditClientCapabilities (Just True)))
25 (Just (DidChangeConfigurationClientCapabilities dynamicReg))
26 (Just (DidChangeWatchedFilesClientCapabilities dynamicReg))
27 (Just (SymbolClientCapabilities dynamicReg))
28 (Just (ExecuteClientCapabilities dynamicReg))
29 td = TextDocumentClientCapabilities
31 (Just (CompletionClientCapabilities
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))
44 (Just (CodeLensClientCapabilities dynamicReg))
45 (Just (DocumentLinkClientCapabilities dynamicReg))
46 (Just (RenameClientCapabilities dynamicReg))
47 sync = SynchronizationTextDocumentClientCapabilities
52 codeAction = CodeActionClientCapabilities
56 | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
58 kinds = CodeActionKindValueSet
59 (List [ CodeActionQuickFix
61 , CodeActionRefactorExtract
62 , CodeActionRefactorInline
63 , CodeActionRefactorRewrite
65 , CodeActionSourceOrganizeImports
68 | maj >= 3 = Just True