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 -- | 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 -- ^ Major
15 -- | Capabilities for full conformance to the LSP specification up until a version.
16 -- Some important milestones:
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
23 w = WorkspaceClientCapabilities
25 (Just (WorkspaceEditClientCapabilities (Just True)))
26 (Just (DidChangeConfigurationClientCapabilities dynamicReg))
27 (Just (DidChangeWatchedFilesClientCapabilities dynamicReg))
28 (Just (SymbolClientCapabilities dynamicReg))
29 (Just (ExecuteClientCapabilities dynamicReg))
30 td = TextDocumentClientCapabilities
32 (Just (CompletionClientCapabilities
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))
45 (Just (CodeLensClientCapabilities dynamicReg))
46 (Just (DocumentLinkClientCapabilities dynamicReg))
47 (Just (RenameClientCapabilities dynamicReg))
48 sync = SynchronizationTextDocumentClientCapabilities
53 codeAction = CodeActionClientCapabilities
57 | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
59 kinds = CodeActionKindValueSet
60 (List [ CodeActionQuickFix
62 , CodeActionRefactorExtract
63 , CodeActionRefactorInline
64 , CodeActionRefactorRewrite
66 , CodeActionSourceOrganizeImports
69 | maj >= 3 = Just True