-import Data.Conduit hiding (await)
-import Data.Conduit.Parser
-import Data.Maybe
-import Language.Haskell.LSP.Messages
-import Language.Haskell.LSP.Types hiding (error)
-import Language.Haskell.LSP.Test.Compat
-import Language.Haskell.LSP.Test.Decoding
-import Language.Haskell.LSP.Test.Messages
-import System.IO
-
-data SessionContext = SessionContext
- {
- serverIn :: Handle,
- rootDir :: FilePath,
- messageChan :: Chan FromServerMessage,
- requestMap :: MVar RequestMap,
- initRsp :: MVar InitializeResponse
- }
-
-newtype SessionState = SessionState
- {
- curReqId :: LspId
- }
-
-type ParserStateReader a s r m = ConduitParser a (StateT s (ReaderT r m))
-
--- | A session representing one instance of launching and connecting to a server.
+import Data.Conduit.Parser hiding (named)
+import qualified Data.Conduit.Parser (named)
+import qualified Data.Text as T
+import Data.Typeable
+import Language.Haskell.LSP.Types
+import qualified Language.Haskell.LSP.Types.Lens as LSP
+import Language.Haskell.LSP.Test.Session
+
+-- $receiving
+-- To receive a message, just specify the type that expect: