projects
/
lsp-test.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8398f30
)
Add getDiagnostics
author
Luke Lau
<luke_lau@icloud.com>
Wed, 27 Jun 2018 23:27:30 +0000
(
00:27
+0100)
committer
Luke Lau
<luke_lau@icloud.com>
Wed, 27 Jun 2018 23:27:30 +0000
(
00:27
+0100)
src/Language/Haskell/LSP/Test.hs
patch
|
blob
|
history
diff --git
a/src/Language/Haskell/LSP/Test.hs
b/src/Language/Haskell/LSP/Test.hs
index 8e5f21f445e5ae1a4ce8f1f42f2b7909324e57c6..eb09d826a82f05d5015dfabecd5c85ce4e35cb5c 100644
(file)
--- 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
, initializeResponse
, openDoc
, documentContents
- ,
d
ocumentEdit
+ ,
getD
ocumentEdit
, getDocUri
, noDiagnostics
, getDocUri
, noDiagnostics
- ,
d
ocumentSymbols
- ,
+ ,
getD
ocumentSymbols
+ ,
getDiagnostics
) where
import Control.Applicative
) where
import Control.Applicative
@@
-121,7
+121,6
@@
runSessionWithConfig config serverExe rootDir session = do
Nothing
(capabilities config)
(Just TraceOff)
Nothing
(capabilities config)
(Just TraceOff)
-
withServer serverExe $ \serverIn serverOut _ ->
runSessionWithHandles serverIn serverOut listenServer config rootDir $ do
withServer serverExe $ \serverIn serverOut _ ->
runSessionWithHandles serverIn serverOut listenServer config rootDir $ do
@@
-160,14
+159,20
@@
listenServer serverOut = do
-- | The current text contents of a document.
documentContents :: TextDocumentIdentifier -> Session T.Text
documentContents doc = do
-- | The current text contents of a document.
documentContents :: TextDocumentIdentifier -> Session T.Text
documentContents doc = do
- vfs <- vfs <$> get
- let file = vfs Map.! (doc ^. uri)
+ 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
return $ Rope.toText $ Language.Haskell.LSP.VFS._text file
-- | Parses an ApplyEditRequest, checks that it is for the passed document
-- and returns the new content
return $ Rope.toText $ Language.Haskell.LSP.VFS._text file
-- | Parses an ApplyEditRequest, checks that it is for the passed document
-- and returns the new content
-
d
ocumentEdit :: TextDocumentIdentifier -> Session T.Text
-
d
ocumentEdit doc = do
+
getD
ocumentEdit :: TextDocumentIdentifier -> Session T.Text
+
getD
ocumentEdit doc = do
req <- request :: Session ApplyWorkspaceEditRequest
unless (checkDocumentChanges req || checkChanges req) $
req <- request :: Session ApplyWorkspaceEditRequest
unless (checkDocumentChanges req || checkChanges req) $
@@
-306,16
+311,22
@@
getDocUri file = do
let fp = rootDir context </> file
return $ filePathToUri fp
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
-- | 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.
-- | Returns the symbols in a document.
-
d
ocumentSymbols :: TextDocumentIdentifier -> Session DocumentSymbolsResponse
-
d
ocumentSymbols doc = do
+
getD
ocumentSymbols :: TextDocumentIdentifier -> Session DocumentSymbolsResponse
+
getD
ocumentSymbols doc = do
sendRequest TextDocumentDocumentSymbol (DocumentSymbolParams doc)
response
\ No newline at end of file
sendRequest TextDocumentDocumentSymbol (DocumentSymbolParams doc)
response
\ No newline at end of file