X-Git-Url: https://git.lukelau.me/?p=lsp-test.git;a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest.hs;h=9866be9efd93987f40e0585dc0d4abac034f2cc0;hp=80ea0e3b386f60560cabd1accbdbc79d1783ca16;hb=f2862c89be8f545d0cda5890dce58d31c15127f6;hpb=45b4169bf7edd0a7e5585df7713a4464670c7048 diff --git a/src/Language/Haskell/LSP/Test.hs b/src/Language/Haskell/LSP/Test.hs index 80ea0e3..9866be9 100644 --- a/src/Language/Haskell/LSP/Test.hs +++ b/src/Language/Haskell/LSP/Test.hs @@ -196,7 +196,7 @@ runSessionWithHandles' serverProc serverIn serverOut config' caps rootDir sessio -- Because messages can be sent in between the request and response, -- collect them and then... - (inBetween, initRspMsg) <- manyTill_ anyMessage (responseForId initReqId) + (inBetween, initRspMsg) <- manyTill_ anyMessage (responseForId SInitialize initReqId) case initRspMsg ^. LSP.result of Left error -> liftIO $ putStrLn ("Error while initializing: " ++ show error) @@ -229,10 +229,9 @@ runSessionWithHandles' serverProc serverIn serverOut config' caps rootDir sessio listenServer serverOut context = do msgBytes <- getNextMessage serverOut - msg <- modifyMVar (requestMap context) $ \reqMap -> do - let (msg, newReqMap) = decodeFromServerMsg reqMap msgBytes + msg <- modifyMVar (requestMap context) $ \reqMap -> + pure $ decodeFromServerMsg reqMap msgBytes writeChan (messageChan context) (ServerMessage msg) - pure (newReqMap, msg) case msg of (FromServerRsp SShutdown _) -> return () @@ -296,7 +295,7 @@ getDocumentEdit doc = do -- @ -- Note: will skip any messages in between the request and the response. request :: SClientMethod m -> MessageParams m -> Session (ResponseMessage m) -request m = sendRequest m >=> skipManyTill anyMessage . responseForId +request m = sendRequest m >=> skipManyTill anyMessage . responseForId m -- | The same as 'sendRequest', but discard the response. request_ :: SClientMethod (m :: Method FromClient Request) -> MessageParams m -> Session ()