import Language.Haskell.LSP.Types as LSP hiding (error)
import Language.Haskell.LSP.Test.Messages
import Language.Haskell.LSP.Test.Session
-import System.Console.ANSI
satisfy :: (FromServerMessage -> Bool) -> Session FromServerMessage
satisfy pred = do
if pred x
then do
- liftIO $ do
- setSGR [SetColor Foreground Vivid Magenta]
- putStrLn $ "<-- " ++ B.unpack (encodeMsg x)
- setSGR [Reset]
+ logMsg LogServer x
return x
else empty
message :: forall a. (Typeable a, FromJSON a) => Session a
message =
let parser = decode . encodeMsg :: FromServerMessage -> Maybe a
- in named (T.pack $ show $ head $ snd $ splitTyConApp $ last $ typeRepArgs $ typeOf parser) $ do
- x <- satisfy (isJust . parser)
- return $ castMsg x
+ in named (T.pack $ show $ head $ snd $ splitTyConApp $ last $ typeRepArgs $ typeOf parser) $
+ castMsg <$> satisfy (isJust . parser)
-- | Matches if the message is a notification.
anyNotification :: Session FromServerMessage