, runSessionWithConfig
, SessionConfig(..)
, defaultConfig
- , module Language.Haskell.LSP.Types.Capabilities
+ , C.fullCaps
-- ** Exceptions
, module Language.Haskell.LSP.Test.Exceptions
, withTimeout
import qualified Data.HashMap.Strict as HashMap
import qualified Data.Map as Map
import Data.Maybe
-import Language.Haskell.LSP.Types hiding (id, capabilities, message)
-import qualified Language.Haskell.LSP.Types as LSP
-import Language.Haskell.LSP.Types.Capabilities
+import Language.Haskell.LSP.Types
+import Language.Haskell.LSP.Types.Lens hiding
+ (id, capabilities, message, executeCommand, applyEdit, rename)
+import qualified Language.Haskell.LSP.Types.Lens as LSP
+import qualified Language.Haskell.LSP.Types.Capabilities as C
import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.VFS
import Language.Haskell.LSP.Test.Compat
-- > params = TextDocumentPositionParams doc
-- > hover <- request TextDocumentHover params
runSession :: String -- ^ The command to run the server.
- -> ClientCapabilities -- ^ The capabilities that the client should declare.
+ -> C.ClientCapabilities -- ^ The capabilities that the client should declare.
-> FilePath -- ^ The filepath to the root directory for the session.
-> Session a -- ^ The session to run.
-> IO a
-- | Starts a new sesion with a custom configuration.
runSessionWithConfig :: SessionConfig -- ^ Configuration options for the session.
-> String -- ^ The command to run the server.
- -> ClientCapabilities -- ^ The capabilities that the client should declare.
+ -> C.ClientCapabilities -- ^ The capabilities that the client should declare.
-> FilePath -- ^ The filepath to the root directory for the session.
-> Session a -- ^ The session to run.
-> IO a
Nothing
caps
(Just TraceOff)
+ Nothing
withServer serverExe (logStdErr config) $ \serverIn serverOut _ ->
runSessionWithHandles serverIn serverOut listenServer config caps rootDir $ do
sendNotification Initialized InitializedParams
+ case lspConfig config of
+ Just cfg -> sendNotification WorkspaceDidChangeConfiguration (DidChangeConfigurationParams cfg)
+ Nothing -> return ()
+
-- Run the actual test
result <- session
caps <- asks sessionCapabilities
let supportsDocChanges = fromMaybe False $ do
- let ClientCapabilities mWorkspace _ _ = caps
- WorkspaceClientCapabilities _ mEdit _ _ _ _ _ _ <- mWorkspace
- WorkspaceEditClientCapabilities mDocChanges <- mEdit
+ let C.ClientCapabilities mWorkspace _ _ = caps
+ C.WorkspaceClientCapabilities _ mEdit _ _ _ _ _ _ <- mWorkspace
+ C.WorkspaceEditClientCapabilities mDocChanges <- mEdit
mDocChanges
let wEdit = if supportsDocChanges