import Language.Haskell.LSP.Test.Parsing
import Language.Haskell.LSP.Test.Session
import Language.Haskell.LSP.Test.Server
+import System.Console.ANSI
import System.IO
import System.Directory
import System.FilePath
Nothing
(capabilities config)
(Just TraceOff)
- withServer serverExe $ \serverIn serverOut _ ->
+ withServer serverExe (logStdErr config) $ \serverIn serverOut _ ->
runSessionWithHandles serverIn serverOut listenServer config rootDir $ do
-- Wrap the session around initialize and shutdown calls
-- | The current text contents of a document.
documentContents :: TextDocumentIdentifier -> Session T.Text
documentContents doc = do
- vfs' <- vfs <$> get
- let docUri = doc ^. uri
- file <- case Map.lookup docUri vfs' of
- Just file -> return file
- Nothing -> do
- openDoc (fromJust (uriToFilePath docUri)) ""
- newVfs <- vfs <$> get
- return $ newVfs Map.! docUri
+ vfs <- vfs <$> get
+ let file = vfs Map.! (doc ^. uri)
return $ Rope.toText $ Language.Haskell.LSP.VFS._text file
-- | Parses an ApplyEditRequest, checks that it is for the passed document
sendMessage :: ToJSON a => a -> Session ()
sendMessage msg = do
h <- serverIn <$> ask
- liftIO $ B.hPut h $ addHeader (encode msg)
+ let encoded = encode msg
+ liftIO $ do
+
+ setSGR [SetColor Foreground Vivid Cyan]
+ putStrLn $ "--> " ++ B.unpack encoded
+ setSGR [Reset]
+
+ B.hPut h (addHeader encoded)
+
+
-- | Returns the initialize response that was received from the server.
-- The initialize requests and responses are not included the session,