, getDocumentSymbols
-- ** Diagnostics
, waitForDiagnostics
+ , waitForDiagnosticsSource
, noDiagnostics
-- ** Commands
, executeCommand
let (List diags) = diagsNot ^. params . LSP.diagnostics
return diags
+waitForDiagnosticsSource :: String -> Session [Diagnostic]
+waitForDiagnosticsSource src = do
+ diags <- waitForDiagnostics
+ let res = filter matches diags
+ if null res
+ then waitForDiagnosticsSource src
+ else return res
+ where
+ matches :: Diagnostic -> Bool
+ matches d = d ^. source == Just (T.pack src)
+
-- | Expects a 'PublishDiagnosticsNotification' and throws an
-- 'UnexpectedDiagnosticsException' if there are any diagnostics
-- returned.
, mkRange 75 6 75 22
, mkRange 71 6 71 22
]
- where mkRange sl sc el ec = Range (Position sl sc) (Position el ec)
+ describe "waitForDiagnosticsSource" $
+ it "works" $ runSession "hie --lsp" "test/data/error" $ do
+ openDoc "Error.hs" "haskell"
+ [diag] <- waitForDiagnosticsSource "ghcmod"
+ liftIO $ do
+ diag ^. severity `shouldBe` Just DsError
+ diag ^. source `shouldBe` Just "ghcmod"
+
+mkRange sl sc el ec = Range (Position sl sc) (Position el ec)
didChangeCaps :: ClientCapabilities
didChangeCaps = def { _workspace = Just workspaceCaps }