X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FSession.hs;h=4ee9cf98185f4259d7ca9c0b20ffce62524f091a;hb=98ff10016bbd4eda3534ba04edcbc6e2ab9fd197;hp=9e4aa81aa1fc960ccd1cbc48509f44541b9ceb8e;hpb=0213715d81cfaf9c05bf3b9f3de5e1270cc95f15;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