Problem: We want to be able to extract document symbols from some
ligo contract that are realised by @haskell-lsp@ client.
Solution: Implement `extractDocumentSymbols` and integrate it with
@haskell-lsp@.
Problem: We want to be able to show modal on hovering curson on
some specific declaration.
Solution: Add `hoverDecl` and integrate it with haskell-lsp client.
Problem: We want to be able to parse whole directory for ligo
contracts for testing purposes.
Solution: Add `parseContracts` function that returns `ParsedContract`
data that ignores every file which is not a ligo contract.
Problem: We want to support code folding for functions and types
in our lsp.
Solution: Add `foldingAST` function that produces an additional
list of ranges along with the given monad used in `haskell-lsp`
API to collect ranges that are consequently sent to server.
Problem: Currently we have not integrated our completions with
haskell-lsp server so that we could use this completion from text
editor itself.
Solution: Add the corresponding requests for handling code completion.
Problem: With generated ReasonLIGO grammar we need to develop its
parser as well. With it we also need to restructure AST a bit
and add expressions that are used for ReasonLIGO specifically.
Solution: Add ReasonLIGO parser and some dummy examples of its
usage, adapt AST to it, rename LIGO to AST.
Problem: The current implementation of "Find references" and
"Go to definition" is not exposed via the LSP. We need to expose
them so that they are accessible from the client.
Solution: Add the necessary handlers, send response messages.