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:
6c2e56d
)
Update to current state of progress reporting in LSP
author
Moritz Kiefer
<moritz.kiefer@purelyfunctional.org>
Mon, 14 Oct 2019 08:39:10 +0000
(10:39 +0200)
committer
Moritz Kiefer
<moritz.kiefer@purelyfunctional.org>
Thu, 17 Oct 2019 07:46:08 +0000
(09:46 +0200)
src/Language/Haskell/LSP/Test.hs
patch
|
blob
|
history
src/Language/Haskell/LSP/Test/Decoding.hs
patch
|
blob
|
history
src/Language/Haskell/LSP/Test/Messages.hs
patch
|
blob
|
history
stack.yaml
patch
|
blob
|
history
stack.yaml.lock
patch
|
blob
|
history
diff --git
a/src/Language/Haskell/LSP/Test.hs
b/src/Language/Haskell/LSP/Test.hs
index 61fc908d8eb33b56265c98f0a82a2524930657e5..22091c3451c16f00d6848502a60dafc0a9edd928 100644
(file)
--- a/
src/Language/Haskell/LSP/Test.hs
+++ b/
src/Language/Haskell/LSP/Test.hs
@@
-377,7
+377,7
@@
noDiagnostics = do
-- | Returns the symbols in a document.
getDocumentSymbols :: TextDocumentIdentifier -> Session (Either [DocumentSymbol] [SymbolInformation])
getDocumentSymbols doc = do
-- | Returns the symbols in a document.
getDocumentSymbols :: TextDocumentIdentifier -> Session (Either [DocumentSymbol] [SymbolInformation])
getDocumentSymbols doc = do
- ResponseMessage _ rspLid mRes mErr <- request TextDocumentDocumentSymbol (DocumentSymbolParams doc) :: Session DocumentSymbolsResponse
+ ResponseMessage _ rspLid mRes mErr <- request TextDocumentDocumentSymbol (DocumentSymbolParams doc
Nothing
) :: Session DocumentSymbolsResponse
maybe (return ()) (throw . UnexpectedResponseError rspLid) mErr
case mRes of
Just (DSDocumentSymbols (List xs)) -> return (Left xs)
maybe (return ()) (throw . UnexpectedResponseError rspLid) mErr
case mRes of
Just (DSDocumentSymbols (List xs)) -> return (Left xs)
@@
-388,7
+388,7
@@
getDocumentSymbols doc = do
getCodeActions :: TextDocumentIdentifier -> Range -> Session [CAResult]
getCodeActions doc range = do
ctx <- getCodeActionContext doc
getCodeActions :: TextDocumentIdentifier -> Range -> Session [CAResult]
getCodeActions doc range = do
ctx <- getCodeActionContext doc
- rsp <- request TextDocumentCodeAction (CodeActionParams doc range ctx)
+ rsp <- request TextDocumentCodeAction (CodeActionParams doc range ctx
Nothing
)
case rsp ^. result of
Just (List xs) -> return xs
case rsp ^. result of
Just (List xs) -> return xs
@@
-406,7
+406,7
@@
getAllCodeActions doc = do
where
go :: CodeActionContext -> [CAResult] -> Diagnostic -> Session [CAResult]
go ctx acc diag = do
where
go :: CodeActionContext -> [CAResult] -> Diagnostic -> Session [CAResult]
go ctx acc diag = do
- ResponseMessage _ rspLid mRes mErr <- request TextDocumentCodeAction (CodeActionParams doc (diag ^. range) ctx)
+ ResponseMessage _ rspLid mRes mErr <- request TextDocumentCodeAction (CodeActionParams doc (diag ^. range) ctx
Nothing
)
case mErr of
Just e -> throw (UnexpectedResponseError rspLid e)
case mErr of
Just e -> throw (UnexpectedResponseError rspLid e)
@@
-428,7
+428,7
@@
getCurrentDiagnostics doc = fromMaybe [] . Map.lookup (toNormalizedUri $ doc ^.
executeCommand :: Command -> Session ()
executeCommand cmd = do
let args = decode $ encode $ fromJust $ cmd ^. arguments
executeCommand :: Command -> Session ()
executeCommand cmd = do
let args = decode $ encode $ fromJust $ cmd ^. arguments
- execParams = ExecuteCommandParams (cmd ^. command) args
+ execParams = ExecuteCommandParams (cmd ^. command) args
Nothing
request_ WorkspaceExecuteCommand execParams
-- | Executes a code action.
request_ WorkspaceExecuteCommand execParams
-- | Executes a code action.
@@
-487,7
+487,7
@@
applyEdit doc edit = do
-- | Returns the completions for the position in the document.
getCompletions :: TextDocumentIdentifier -> Position -> Session [CompletionItem]
getCompletions doc pos = do
-- | Returns the completions for the position in the document.
getCompletions :: TextDocumentIdentifier -> Position -> Session [CompletionItem]
getCompletions doc pos = do
- rsp <- request TextDocumentCompletion (TextDocumentPositionParams doc pos)
+ rsp <- request TextDocumentCompletion (TextDocumentPositionParams doc pos
Nothing
)
case getResponseResult rsp of
Completions (List items) -> return items
case getResponseResult rsp of
Completions (List items) -> return items
@@
-500,7
+500,7
@@
getReferences :: TextDocumentIdentifier -- ^ The document to lookup in.
-> Session [Location] -- ^ The locations of the references.
getReferences doc pos inclDecl =
let ctx = ReferenceContext inclDecl
-> Session [Location] -- ^ The locations of the references.
getReferences doc pos inclDecl =
let ctx = ReferenceContext inclDecl
- params = ReferenceParams doc pos ctx
+ params = ReferenceParams doc pos ctx
Nothing
in getResponseResult <$> request TextDocumentReferences params
-- | Returns the definition(s) for the term at the specified position.
in getResponseResult <$> request TextDocumentReferences params
-- | Returns the definition(s) for the term at the specified position.
@@
-508,7
+508,7
@@
getDefinitions :: TextDocumentIdentifier -- ^ The document the term is in.
-> Position -- ^ The position the term is at.
-> Session [Location] -- ^ The location(s) of the definitions
getDefinitions doc pos = do
-> Position -- ^ The position the term is at.
-> Session [Location] -- ^ The location(s) of the definitions
getDefinitions doc pos = do
- let params = TextDocumentPositionParams doc pos
+ let params = TextDocumentPositionParams doc pos
Nothing
rsp <- request TextDocumentDefinition params :: Session DefinitionResponse
case getResponseResult rsp of
SingleLoc loc -> pure [loc]
rsp <- request TextDocumentDefinition params :: Session DefinitionResponse
case getResponseResult rsp of
SingleLoc loc -> pure [loc]
@@
-519,13
+519,13
@@
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 =
-> Position -- ^ The position the term is at.
-> Session [Location] -- ^ The location(s) of the definitions
getTypeDefinitions doc pos =
- let params = TextDocumentPositionParams doc pos
+ let params = TextDocumentPositionParams doc pos
Nothing
in getResponseResult <$> request TextDocumentTypeDefinition params
-- | Renames the term at the specified position.
rename :: TextDocumentIdentifier -> Position -> String -> Session ()
rename doc pos newName = do
in getResponseResult <$> request TextDocumentTypeDefinition params
-- | Renames the term at the specified position.
rename :: TextDocumentIdentifier -> Position -> String -> Session ()
rename doc pos newName = do
- let params = RenameParams doc pos (T.pack newName)
+ let params = RenameParams doc pos (T.pack newName)
Nothing
rsp <- request TextDocumentRename params :: Session RenameResponse
let wEdit = getResponseResult rsp
req = RequestMessage "" (IdInt 0) WorkspaceApplyEdit (ApplyWorkspaceEditParams wEdit)
rsp <- request TextDocumentRename params :: Session RenameResponse
let wEdit = getResponseResult rsp
req = RequestMessage "" (IdInt 0) WorkspaceApplyEdit (ApplyWorkspaceEditParams wEdit)
@@
-534,13
+534,13
@@
rename doc pos newName = do
-- | Returns the hover information at the specified position.
getHover :: TextDocumentIdentifier -> Position -> Session (Maybe Hover)
getHover doc pos =
-- | Returns the hover information at the specified position.
getHover :: TextDocumentIdentifier -> Position -> Session (Maybe Hover)
getHover doc pos =
- let params = TextDocumentPositionParams doc pos
+ let params = TextDocumentPositionParams doc pos
Nothing
in getResponseResult <$> request TextDocumentHover params
-- | Returns the highlighted occurences of the term at the specified position
getHighlights :: TextDocumentIdentifier -> Position -> Session [DocumentHighlight]
getHighlights doc pos =
in getResponseResult <$> request TextDocumentHover params
-- | Returns the highlighted occurences of the term at the specified position
getHighlights :: TextDocumentIdentifier -> Position -> Session [DocumentHighlight]
getHighlights doc pos =
- let params = TextDocumentPositionParams doc pos
+ let params = TextDocumentPositionParams doc pos
Nothing
in getResponseResult <$> request TextDocumentDocumentHighlight params
-- | Checks the response for errors and throws an exception if needed.
in getResponseResult <$> request TextDocumentDocumentHighlight params
-- | Checks the response for errors and throws an exception if needed.
@@
-553,14
+553,14
@@
getResponseResult rsp = fromMaybe exc (rsp ^. result)
-- | Applies formatting to the specified document.
formatDoc :: TextDocumentIdentifier -> FormattingOptions -> Session ()
formatDoc doc opts = do
-- | Applies formatting to the specified document.
formatDoc :: TextDocumentIdentifier -> FormattingOptions -> Session ()
formatDoc doc opts = do
- let params = DocumentFormattingParams doc opts
+ let params = DocumentFormattingParams doc opts
Nothing
edits <- getResponseResult <$> request TextDocumentFormatting params
applyTextEdits doc edits
-- | Applies formatting to the specified range in a document.
formatRange :: TextDocumentIdentifier -> FormattingOptions -> Range -> Session ()
formatRange doc opts range = do
edits <- getResponseResult <$> request TextDocumentFormatting params
applyTextEdits doc edits
-- | Applies formatting to the specified range in a document.
formatRange :: TextDocumentIdentifier -> FormattingOptions -> Range -> Session ()
formatRange doc opts range = do
- let params = DocumentRangeFormattingParams doc range opts
+ let params = DocumentRangeFormattingParams doc range opts
Nothing
edits <- getResponseResult <$> request TextDocumentRangeFormatting params
applyTextEdits doc edits
edits <- getResponseResult <$> request TextDocumentRangeFormatting params
applyTextEdits doc edits
@@
-573,6
+573,6
@@
applyTextEdits doc edits =
-- | Returns the code lenses for the specified document.
getCodeLenses :: TextDocumentIdentifier -> Session [CodeLens]
getCodeLenses tId = do
-- | Returns the code lenses for the specified document.
getCodeLenses :: TextDocumentIdentifier -> Session [CodeLens]
getCodeLenses tId = do
- rsp <- request TextDocumentCodeLens (CodeLensParams tId) :: Session CodeLensResponse
+ rsp <- request TextDocumentCodeLens (CodeLensParams tId
Nothing
) :: Session CodeLensResponse
case getResponseResult rsp of
List res -> pure res
case getResponseResult rsp of
List res -> pure res
diff --git
a/src/Language/Haskell/LSP/Test/Decoding.hs
b/src/Language/Haskell/LSP/Test/Decoding.hs
index af91928695d73df098cb4054abaae82632d3a845..e635267fd7f9bf6200591b4d330ca8e2c3b3df99 100644
(file)
--- a/
src/Language/Haskell/LSP/Test/Decoding.hs
+++ b/
src/Language/Haskell/LSP/Test/Decoding.hs
@@
-3,6
+3,7
@@
module Language.Haskell.LSP.Test.Decoding where
import Prelude hiding ( id )
import Data.Aeson
import Prelude hiding ( id )
import Data.Aeson
+import Data.Foldable
import Control.Exception
import Control.Lens
import qualified Data.ByteString.Lazy.Char8 as B
import Control.Exception
import Control.Lens
import qualified Data.ByteString.Lazy.Char8 as B
@@
-131,9
+132,9
@@
decodeFromServerMsg reqMap bytes =
WindowShowMessage -> NotShowMessage $ fromJust $ decode bytes
WindowLogMessage -> NotLogMessage $ fromJust $ decode bytes
CancelRequestServer -> NotCancelRequestFromServer $ fromJust $ decode bytes
WindowShowMessage -> NotShowMessage $ fromJust $ decode bytes
WindowLogMessage -> NotLogMessage $ fromJust $ decode bytes
CancelRequestServer -> NotCancelRequestFromServer $ fromJust $ decode bytes
- WindowProgressStart -> NotProgressStart $ fromJust $ decode bytes
- WindowProgressReport -> NotProgressReport $ fromJust $ decode bytes
- Window
ProgressDone -> NotProgressDon
e $ fromJust $ decode bytes
+ Progress ->
+ fromJust $ asum [NotWorkDoneProgressBegin <$> decode bytes, NotWorkDoneProgressReport <$> decode bytes, NotWorkDoneProgressEnd <$> decode bytes]
+ Window
WorkDoneProgressCreate -> ReqWorkDoneProgressCreat
e $ fromJust $ decode bytes
TelemetryEvent -> NotTelemetry $ fromJust $ decode bytes
WindowShowMessageRequest -> ReqShowMessage $ fromJust $ decode bytes
ClientRegisterCapability -> ReqRegisterCapability $ fromJust $ decode bytes
TelemetryEvent -> NotTelemetry $ fromJust $ decode bytes
WindowShowMessageRequest -> ReqShowMessage $ fromJust $ decode bytes
ClientRegisterCapability -> ReqRegisterCapability $ fromJust $ decode bytes
diff --git
a/src/Language/Haskell/LSP/Test/Messages.hs
b/src/Language/Haskell/LSP/Test/Messages.hs
index f41a77b4da77466dfba087ba88dd72954b176818..f8b182233f682ad853db4ff1b38aa398e617895e 100644
(file)
--- a/
src/Language/Haskell/LSP/Test/Messages.hs
+++ b/
src/Language/Haskell/LSP/Test/Messages.hs
@@
-60,6
+60,7
@@
handleServerMessage request response notification msg = case msg of
(ReqShowMessage m) -> request m
(ReqUnregisterCapability m) -> request m
(ReqCustomServer m) -> request m
(ReqShowMessage m) -> request m
(ReqUnregisterCapability m) -> request m
(ReqCustomServer m) -> request m
+ (ReqWorkDoneProgressCreate m) -> request m
(RspInitialize m) -> response m
(RspShutdown m) -> response m
(RspHover m) -> response m
(RspInitialize m) -> response m
(RspShutdown m) -> response m
(RspHover m) -> response m
@@
-92,9
+93,9
@@
handleServerMessage request response notification msg = case msg of
(NotPublishDiagnostics m) -> notification m
(NotLogMessage m) -> notification m
(NotShowMessage m) -> notification m
(NotPublishDiagnostics m) -> notification m
(NotLogMessage m) -> notification m
(NotShowMessage m) -> notification m
- (Not
ProgressStart
m) -> notification m
- (Not
ProgressReport
m) -> notification m
- (Not
ProgressDone
m) -> notification m
+ (Not
WorkDoneProgressBegin
m) -> notification m
+ (Not
WorkDoneProgressReport
m) -> notification m
+ (Not
WorkDoneProgressEnd
m) -> notification m
(NotTelemetry m) -> notification m
(NotCancelRequestFromServer m) -> notification m
(NotCustomServer m) -> notification m
(NotTelemetry m) -> notification m
(NotCancelRequestFromServer m) -> notification m
(NotCustomServer m) -> notification m
@@
-148,6
+149,6
@@
handleClientMessage request response notification msg = case msg of
(NotDidSaveTextDocument m) -> notification m
(NotDidChangeWatchedFiles m) -> notification m
(NotDidChangeWorkspaceFolders m) -> notification m
(NotDidSaveTextDocument m) -> notification m
(NotDidChangeWatchedFiles m) -> notification m
(NotDidChangeWorkspaceFolders m) -> notification m
- (Not
ProgressCancel
m) -> notification m
+ (Not
WorkDoneProgressCancel
m) -> notification m
(ReqCustomClient m) -> request m
(NotCustomClient m) -> notification m
(ReqCustomClient m) -> request m
(NotCustomClient m) -> notification m
diff --git
a/stack.yaml
b/stack.yaml
index 07b7ffcc8cb097c7d6e0b2d970d3f9bf2731ac4d..ef8b4f8bc1798a1126baacaccb893b8e737da9ee 100644
(file)
--- a/
stack.yaml
+++ b/
stack.yaml
@@
-4,5
+4,8
@@
packages:
extra-deps:
- rope-utf16-splay-0.3.1.0
extra-deps:
- rope-utf16-splay-0.3.1.0
- - haskell-lsp-0.16.0.0
- - haskell-lsp-types-0.16.0.0
+ - github: alanz/haskell-lsp
+ commit: fefcae8b44aaf7658e0f90d5530832efe0b32053
+ subdirs:
+ - .
+ - haskell-lsp-types
diff --git
a/stack.yaml.lock
b/stack.yaml.lock
index e894dd7fd61bf716bf7a4c32fe4b88b110221d2f..7184320546db916ebb6230a1a792520b530994ab 100644
(file)
--- a/
stack.yaml.lock
+++ b/
stack.yaml.lock
@@
-12,19
+12,37
@@
packages:
original:
hackage: rope-utf16-splay-0.3.1.0
- completed:
original:
hackage: rope-utf16-splay-0.3.1.0
- completed:
- hackage: haskell-lsp-0.16.0.0@sha256:6ac4b58e6caef43546a3c115f1aaaae0e23d30f0e37b8c4e94525468e9982d09,5264
+ size: 85195
+ subdir: .
+ url: https://github.com/alanz/haskell-lsp/archive/fefcae8b44aaf7658e0f90d5530832efe0b32053.tar.gz
+ cabal-file:
+ size: 5264
+ sha256: 6ac4b58e6caef43546a3c115f1aaaae0e23d30f0e37b8c4e94525468e9982d09
+ name: haskell-lsp
+ version: 0.16.0.0
+ sha256: 410af26154494735694ae323b3431d6a6ccb49ab6f028b56656039b5662de7d6
pantry-tree:
pantry-tree:
- size:
1725
- sha256:
31b245f4da5b5b844be9802bb2bfd397c90c0a50b063e5bae26648c6220aaf7f
+ size:
5563
+ sha256:
4da14c5ad9e2e214d4c52edca1f8d24390f24f60375c00c99ade0e55a75821fa
original:
original:
- hackage: haskell-lsp-0.16.0.0
+ subdir: .
+ url: https://github.com/alanz/haskell-lsp/archive/fefcae8b44aaf7658e0f90d5530832efe0b32053.tar.gz
- completed:
- completed:
- hackage: haskell-lsp-types-0.16.0.0@sha256:57729b32b1ca65d4869e1e518fa4df749d4488ec5f11e23b50c2b89417f5f211,2882
+ size: 85195
+ subdir: haskell-lsp-types
+ url: https://github.com/alanz/haskell-lsp/archive/fefcae8b44aaf7658e0f90d5530832efe0b32053.tar.gz
+ cabal-file:
+ size: 2941
+ sha256: d5e3a1c45e2d8e6df35fa77122c396330546a5a7afe9b5d5c3393d937e18a66f
+ name: haskell-lsp-types
+ version: 0.16.0.0
+ sha256: 410af26154494735694ae323b3431d6a6ccb49ab6f028b56656039b5662de7d6
pantry-tree:
pantry-tree:
- size: 2
369
- sha256:
cc24c23f741e777b9c01ccd700af034e2258e560f5fdb271d08befd4b03196b7
+ size: 2
501
+ sha256:
409560d414a6618591d3bed1aaf046ba549a12c202a85e0ef9642004639399c5
original:
original:
- hackage: haskell-lsp-types-0.16.0.0
+ subdir: haskell-lsp-types
+ url: https://github.com/alanz/haskell-lsp/archive/fefcae8b44aaf7658e0f90d5530832efe0b32053.tar.gz
snapshots:
- completed:
size: 499889
snapshots:
- completed:
size: 499889