X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest.hs;h=1b8c2a8c20a297af751b96497fd200700fe1b22f;hb=600388d3b0320b4f9374e8a781743877f4e263c7;hp=8e5f21f445e5ae1a4ce8f1f42f2b7909324e57c6;hpb=22df37c703e39fa5ebeb130be5785b3a9713c520;p=lsp-test.git diff --git a/src/Language/Haskell/LSP/Test.hs b/src/Language/Haskell/LSP/Test.hs index 8e5f21f..1b8c2a8 100644 --- a/src/Language/Haskell/LSP/Test.hs +++ b/src/Language/Haskell/LSP/Test.hs @@ -62,11 +62,11 @@ module Language.Haskell.LSP.Test , initializeResponse , openDoc , documentContents - , documentEdit + , getDocumentEdit , getDocUri , noDiagnostics - , documentSymbols - , + , getDocumentSymbols + , getDiagnostics ) where import Control.Applicative @@ -121,7 +121,6 @@ runSessionWithConfig config serverExe rootDir session = do Nothing (capabilities config) (Just TraceOff) - withServer serverExe $ \serverIn serverOut _ -> runSessionWithHandles serverIn serverOut listenServer config rootDir $ do @@ -166,8 +165,8 @@ documentContents doc = do -- | Parses an ApplyEditRequest, checks that it is for the passed document -- and returns the new content -documentEdit :: TextDocumentIdentifier -> Session T.Text -documentEdit doc = do +getDocumentEdit :: TextDocumentIdentifier -> Session T.Text +getDocumentEdit doc = do req <- request :: Session ApplyWorkspaceEditRequest unless (checkDocumentChanges req || checkChanges req) $ @@ -306,16 +305,22 @@ getDocUri file = do let fp = rootDir context file return $ filePathToUri fp +getDiagnostics :: Session [Diagnostic] +getDiagnostics = do + diagsNot <- notification :: Session PublishDiagnosticsNotification + let (List diags) = diagsNot ^. params . LSP.diagnostics + return diags + -- | Expects a 'PublishDiagnosticsNotification' and throws an -- 'UnexpectedDiagnosticsException' if there are any diagnostics -- returned. noDiagnostics :: Session () noDiagnostics = do diagsNot <- notification :: Session PublishDiagnosticsNotification - when (diagsNot ^. params . diagnostics /= List []) $ liftIO $ throw UnexpectedDiagnosticsException + when (diagsNot ^. params . LSP.diagnostics /= List []) $ liftIO $ throw UnexpectedDiagnosticsException -- | Returns the symbols in a document. -documentSymbols :: TextDocumentIdentifier -> Session DocumentSymbolsResponse -documentSymbols doc = do +getDocumentSymbols :: TextDocumentIdentifier -> Session DocumentSymbolsResponse +getDocumentSymbols doc = do sendRequest TextDocumentDocumentSymbol (DocumentSymbolParams doc) response \ No newline at end of file