X-Git-Url: http://git.lukelau.me/?p=lsp-test.git;a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest.hs;h=aeae56bee28fa6ec0684116a4080bd7cd7a302c6;hp=60f13b1be25bdfe867e1d815fdb7668ae5a65630;hb=e0926c045ccd5444f3112cb231cc3590c600d48d;hpb=776b8e1a475e2150797d432f0c13ccf685b1cd4b diff --git a/src/Language/Haskell/LSP/Test.hs b/src/Language/Haskell/LSP/Test.hs index 60f13b1..aeae56b 100644 --- a/src/Language/Haskell/LSP/Test.hs +++ b/src/Language/Haskell/LSP/Test.hs @@ -24,6 +24,8 @@ module Language.Haskell.LSP.Test , SessionException(..) , anySessionException , withTimeout + -- * Capabilities + , fullCaps -- * Sending , sendRequest , sendRequest_ @@ -99,6 +101,7 @@ import qualified Language.Haskell.LSP.Types as LSP import qualified Language.Haskell.LSP.Types.Capabilities as LSP import Language.Haskell.LSP.Messages import Language.Haskell.LSP.VFS +import Language.Haskell.LSP.Test.Capabilities import Language.Haskell.LSP.Test.Compat import Language.Haskell.LSP.Test.Decoding import Language.Haskell.LSP.Test.Exceptions @@ -112,18 +115,20 @@ import qualified Yi.Rope as Rope -- | Starts a new session. runSession :: String -- ^ The command to run the server. + -> LSP.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 runSession = runSessionWithConfig def -- | Starts a new sesion with a client with the specified capabilities. -runSessionWithConfig :: SessionConfig -- ^ The capabilities the client should have. +runSessionWithConfig :: SessionConfig -- ^ Configuration options for the session. -> String -- ^ The command to run the server. + -> LSP.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 -runSessionWithConfig config serverExe rootDir session = do +runSessionWithConfig config serverExe caps rootDir session = do pid <- getCurrentProcessID absRootDir <- canonicalizePath rootDir @@ -131,10 +136,10 @@ runSessionWithConfig config serverExe rootDir session = do (Just $ T.pack absRootDir) (Just $ filePathToUri absRootDir) Nothing - (capabilities config) + caps (Just TraceOff) withServer serverExe (logStdErr config) $ \serverIn serverOut _ -> - runSessionWithHandles serverIn serverOut listenServer config rootDir $ do + runSessionWithHandles serverIn serverOut listenServer config caps rootDir $ do -- Wrap the session around initialize and shutdown calls initRspMsg <- sendRequest Initialize initializeParams :: Session InitializeResponse @@ -420,7 +425,7 @@ applyEdit doc edit = do verDoc <- getVersionedDoc doc - caps <- asks (capabilities . config) + caps <- asks sessionCapabilities let supportsDocChanges = fromMaybe False $ do let LSP.ClientCapabilities mWorkspace _ _ = caps