X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FSession.hs;fp=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FSession.hs;h=4ee9cf98185f4259d7ca9c0b20ffce62524f091a;hb=7acc4562785745a116a14b96d64fafb0998075f4;hp=9e4aa81aa1fc960ccd1cbc48509f44541b9ceb8e;hpb=4d107b7623ae621525f2efe19ee20cfc40c086c4;p=lsp-test.git diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index 9e4aa81..4ee9cf9 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -54,6 +54,7 @@ import Data.Default import Data.Foldable import Data.List import qualified Data.Map as Map +import qualified Data.Set as Set import qualified Data.Text as T import qualified Data.Text.IO as T import qualified Data.HashMap.Strict as HashMap @@ -170,6 +171,7 @@ data SessionState = SessionState , curDynCaps :: Map.Map T.Text Registration -- ^ The capabilities that the server has dynamically registered with us so -- far + , curProgressSessions :: Set.Set ProgressToken } class Monad m => HasState s m where @@ -260,7 +262,7 @@ runSessionWithHandles serverIn serverOut serverProc serverHandler config caps ro mainThreadId <- myThreadId let context = SessionContext serverIn absRootDir messageChan timeoutIdVar reqMap initRsp config caps - initState vfs = SessionState (IdInt 0) vfs mempty False Nothing mempty + initState vfs = SessionState (IdInt 0) vfs mempty False Nothing mempty mempty runSession' ses = initVFS $ \vfs -> runSession context (initState vfs) ses errorHandler = throwTo mainThreadId :: SessionException -> IO () @@ -292,6 +294,10 @@ updateStateC = awaitForever $ \msg -> do updateState :: (MonadIO m, HasReader SessionContext m, HasState SessionState m) => FromServerMessage -> m () +updateState (NotWorkDoneProgressBegin req) = + modify $ \s -> s { curProgressSessions = Set.insert (req ^. params . token) $ curProgressSessions s } +updateState (NotWorkDoneProgressEnd req) = + modify $ \s -> s { curProgressSessions = Set.delete (req ^. params . token) $ curProgressSessions s } -- Keep track of dynamic capability registration updateState (ReqRegisterCapability req) = do