Skip to content

Commit 6854485

Browse files
committed
Adds resolve helper functions
1 parent fa3207d commit 6854485

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

lsp-test/ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Revision history for lsp-test
22

3+
## HEAD
4+
5+
* Adds `resolveCodeAction`, `resolveCodeLens` and `executeAndResolveCodeAction` functions to resolve code lens and code actions
6+
37
## 0.15.0.0
48

59
* Support `lsp-types-2.0.0.0` and `lsp-2.0.0.0`.

lsp-test/src/Language/LSP/Test.hs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ module Language.LSP.Test
7171
, getCodeActions
7272
, getAllCodeActions
7373
, executeCodeAction
74+
, resolveCodeAction
75+
, resolveAndExecuteCodeAction
7476
-- ** Completions
7577
, getCompletions
7678
-- ** References
@@ -93,6 +95,7 @@ module Language.LSP.Test
9395
, applyEdit
9496
-- ** Code lenses
9597
, getCodeLenses
98+
, resolveCodeLens
9699
-- ** Call hierarchy
97100
, prepareCallHierarchy
98101
, incomingCalls
@@ -605,6 +608,22 @@ executeCodeAction action = do
605608
let req = TRequestMessage "" (IdInt 0) SMethod_WorkspaceApplyEdit (ApplyWorkspaceEditParams Nothing e)
606609
in updateState (FromServerMess SMethod_WorkspaceApplyEdit req)
607610

611+
-- |Resolves the provided code action.
612+
resolveCodeAction :: CodeAction -> Session CodeAction
613+
resolveCodeAction ca = do
614+
rsp <- request SMethod_CodeActionResolve ca
615+
case rsp ^. L.result of
616+
Right ca -> return ca
617+
Left error -> throw (UnexpectedResponseError (SomeLspId $ fromJust $ rsp ^. L.id) error)
618+
619+
-- |If a code action contains a _data_ field, resolves, the code action, then
620+
-- executes it. Otherwise, just executes it.
621+
resolveAndExecuteCodeAction :: CodeAction -> Session ()
622+
resolveAndExecuteCodeAction ca@CodeAction{_data_=Just _} = do
623+
caRsp <- resolveCodeAction ca
624+
executeCodeAction caRsp
625+
resolveAndExecuteCodeAction ca = executeCodeAction ca
626+
608627
-- | Adds the current version to the document, as tracked by the session.
609628
getVersionedDoc :: TextDocumentIdentifier -> Session VersionedTextDocumentIdentifier
610629
getVersionedDoc (TextDocumentIdentifier uri) = do
@@ -749,6 +768,14 @@ getCodeLenses tId = do
749768
rsp <- request SMethod_TextDocumentCodeLens (CodeLensParams Nothing Nothing tId)
750769
pure $ absorbNull $ getResponseResult rsp
751770

771+
-- |Resolves the provided code lens.
772+
resolveCodeLens :: CodeLens -> Session CodeLens
773+
resolveCodeLens cl = do
774+
rsp <- request SMethod_CodeLensResolve cl
775+
case rsp ^. L.result of
776+
Right cl -> return cl
777+
Left error -> throw (UnexpectedResponseError (SomeLspId $ fromJust $ rsp ^. L.id) error)
778+
752779
-- | Pass a param and return the response from `prepareCallHierarchy`
753780
prepareCallHierarchy :: CallHierarchyPrepareParams -> Session [CallHierarchyItem]
754781
prepareCallHierarchy = resolveRequestWithListResp SMethod_TextDocumentPrepareCallHierarchy

0 commit comments

Comments
 (0)