getTypeDefinitions :: TextDocumentIdentifier -- ^ The document the term is in.
-> Position -- ^ The position the term is at.
-> Session [Location] -- ^ The location(s) of the definitions
-getTypeDefinitions doc pos =
+getTypeDefinitions doc pos = do
let params = TextDocumentPositionParams doc pos Nothing
- in getResponseResult <$> request TextDocumentTypeDefinition params
+ rsp <- request TextDocumentTypeDefinition params :: Session TypeDefinitionResponse
+ case getResponseResult rsp of
+ SingleLoc loc -> pure [loc]
+ MultiLoc locs -> pure locs
-- | Renames the term at the specified position.
rename :: TextDocumentIdentifier -> Position -> String -> Session ()
contents <- documentContents doc
liftIO $ contents `shouldSatisfy` T.isPrefixOf "foodule"
- -- describe "getCompletions" $
- -- it "works" $ runSession serverExe def "test/data/renamePass" $ do
- -- doc <- openDoc "Desktop/simple.hs" "haskell"
-
- -- -- wait for module to be loaded
- -- skipMany loggingNotification
- -- noDiagnostics
- -- noDiagnostics
+ describe "getCompletions" $
+ it "works" $ runSession serverExe def "test/data/renamePass" $ do
+ doc <- openDoc "Desktop/simple.hs" "haskell"
- -- comps <- getCompletions doc (Position 5 5)
- -- let item = head (filter (\x -> x ^. label == "interactWithUser") comps)
- -- liftIO $ do
- -- item ^. label `shouldBe` "interactWithUser"
- -- item ^. kind `shouldBe` Just CiFunction
- -- item ^. detail `shouldBe` Just "Items -> IO ()\nMain"
+ comps <- getCompletions doc (Position 5 5)
+ let item = head comps
+ liftIO $ item ^. label `shouldBe` "foo"
-- describe "getReferences" $
-- it "works" $ runSession serverExe fullCaps "test/data/renamePass" $ do
send $ RspCodeAction $ makeResponseMessage req caresults
, didChangeWatchedFilesNotificationHandler = pure $ \_ ->
send $ NotLogMessage $ fmServerLogMessageNotification MtLog "got workspace/didChangeWatchedFiles"
+ , completionHandler = pure $ \req -> do
+ let res = CompletionList (CompletionListType False (List [item]))
+ item =
+ CompletionItem "foo" (Just CiConstant) (List []) Nothing
+ Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+ Nothing Nothing Nothing Nothing Nothing
+ send $ RspCompletion $ makeResponseMessage req res
}
where send msg = readMVar lfvar >>= \lf -> (sendFunc lf) msg