Michael Davis
45ce1ebdb6
embed jsonrpc types from jsonrpc-core crate ( #2801 )
...
We should not depend on jsonrpc-core anymore:
* The project just announced it's no longer actively maintained[^1],
preferring their new implementation in `jsonrpsee`.
* The types are too strict: we would benefit from removing some
`#[serde(deny_unknown_fields)]` annotations to allow language
servers that disrespect the spec[^2].
* We don't use much of the project. Just the types out of core.
These are easy to embed directly into the `helix-lsp` crate.
[^1]: https://github.com/paritytech/jsonrpc/pull/674
[^2]: https://github.com/helix-editor/helix/issues/2786
2 years ago
Michael Davis
50dd11985c
prevent panic when handling an LSP response with no request ( #2475 )
...
A language server may push a response which doesn't belong to any
request. With this change, we discard the response rather than
crashing.
In the case of #2474 , the language server sends an error message
with a null request ID which should not ever exist in the
`pending_requests` HashMap.
closes #2474
3 years ago
Blaž Hrastnik
be81f40df8
lsp: This doesn't need to be a mutable reference
3 years ago
Blaž Hrastnik
46f3c69f06
lsp: Don't send notifications until initialize completes
...
Then send open events for all documents with the LSP attached.
3 years ago
Blaž Hrastnik
5a558e0d8e
lsp: Delay requests & notifications until initialization is complete
3 years ago
Blaž Hrastnik
41f1e8e4fb
fix: lsp: Terminate transport on EOF
...
If stdout/stderr is closed, read_line will return 0 indicating EOF.
3 years ago
Blaž Hrastnik
847d1fa496
fix: Work around crashes on LSPs that don't just emit JSON-RPC
3 years ago
Blaž Hrastnik
7eff905680
lsp: slightly refactor header parsing, add more logging
3 years ago
Timothy DeHerrera
ed8c3e6574
don't panic on defunct lsp process ( #583 )
3 years ago
Blaž Hrastnik
385a6b5a1a
lsp: Refactor duplex to avoid issues with select! + read_exact
...
read_exact isn't cancellation safe.
Fixes #504
3 years ago
wojciechkepka
dd0af78079
Fix unwraps in lsp::transport
3 years ago
wojciechkepka
38cb934d8f
Add unique id to each lsp client/server pair
3 years ago
Ivan Tham
7cc13fefe9
Derive debug without feature
...
Note that this also removed those `finish_non_exhaustive()`.
3 years ago
notoria
1a3a924634
Implement Debug for data structure as a feature
3 years ago
Egor Karavaev
ea6667070f
helix-lsp cleanup
3 years ago
Blaž Hrastnik
fd4fd12fa3
clippy lint
4 years ago
Blaž Hrastnik
355ad3cb82
Tokio migration.
4 years ago
Blaž Hrastnik
ceea5eacd8
clippy lint
4 years ago
Blaž Hrastnik
87a6d4e736
minor: Simplify some code.
4 years ago
Blaž Hrastnik
004a4f37a7
lsp: Handle responses being returned after request timed out.
4 years ago
Blaž Hrastnik
48ef6598db
Increase the log level in LSP and log server errors.
4 years ago
Blaž Hrastnik
777a80917d
Address clippy lints.
4 years ago
Blaž Hrastnik
3cbab20908
lsp: Fix pos_to_lsp_pos calculation.
4 years ago
Blaž Hrastnik
cd16df19c1
lsp: generate_transaction_from_text_edits
4 years ago
Blaž Hrastnik
8695415fbf
wip: Move to new rendering structure.
4 years ago
Blaž Hrastnik
cc6bdf8f66
Text change generation, RPC call handling.
4 years ago
Blaž Hrastnik
af1924404a
Configure logging (-vv for debug level logs)
4 years ago
Blaž Hrastnik
eff6fac9ec
clippy lint
4 years ago
Blaž Hrastnik
81ccca0c6a
Improve error typing.
4 years ago
Blaž Hrastnik
f9bfba4d96
Reroute LSP notification events into the main app event loop.
4 years ago
Blaž Hrastnik
13cb442850
wip: Fetching diagnostics, parsing notifications.
4 years ago