library
hs-source-dirs: src
exposed-modules: Language.Haskell.LSP.Test
+ , Language.Haskell.LSP.Test.Capabilities
, Language.Haskell.LSP.Test.Replay
reexported-modules: haskell-lsp:Language.Haskell.LSP.Types
, haskell-lsp:Language.Haskell.LSP.Types.Capabilities
build-depends: Win32
else
build-depends: unix
- other-modules: Language.Haskell.LSP.Test.Capabilities
- Language.Haskell.LSP.Test.Compat
+ other-modules: Language.Haskell.LSP.Test.Compat
Language.Haskell.LSP.Test.Decoding
Language.Haskell.LSP.Test.Exceptions
Language.Haskell.LSP.Test.Files
+-- TODO: Move this into haskell-lsp
module Language.Haskell.LSP.Test.Capabilities where
import Language.Haskell.LSP.Types
import Language.Haskell.LSP.Types.Capabilities
--- | Capabilities for full conformance to the LSP specification.
+-- | Capabilities for full conformance to the current (v3.10) LSP specification.
-- The whole shebang.
fullCaps :: ClientCapabilities
-fullCaps = ClientCapabilities (Just w) (Just td) Nothing
+fullCaps = capsForVersion (LSPVersion maxBound maxBound)
+
+-- | A specific version of the LSP specification.
+data LSPVersion = LSPVersion Int -- ^ Major
+ Int -- ^ Minor
+
+-- | Capabilities for full conformance to the LSP specification up until a version.
+capsForVersion :: LSPVersion -> ClientCapabilities
+capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing
where
w = WorkspaceClientCapabilities
(Just True)
(Just True)
codeAction = CodeActionClientCapabilities
(Just True)
- (Just (CodeActionLiteralSupport kinds))
+ codeActionLiterals
+ codeActionLiterals
+ | maj >= 3 && min >= 8 = Just (CodeActionLiteralSupport kinds)
+ | otherwise = Nothing
kinds = CodeActionKindValueSet
(List [ CodeActionQuickFix
, CodeActionRefactor
}
return res
--- logClientMsg :: (MonadIO m, HasReader SessionContext m)
--- => FromClientMessage -> m ()
--- logClientMsg = logMsg True
-
--- logServerMsg :: (MonadIO m, HasReader SessionContext m)
--- => FromServerMessage -> m ()
--- logServerMsg = logMsg False
-
data LogMsgType = LogServer | LogClient
deriving Eq
| t == LogServer = Magenta
| otherwise = Cyan
-
-showPretty :: ToJSON a => a -> String
showPretty = B.unpack . encodePretty