Commit Graph

31 Commits (0d8ffa6b4ae8de827b24df9aaccc4a2e43465d58)

Author SHA1 Message Date
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 4 years ago
Ivan Tham 7cc13fefe9 Derive debug without feature
Note that this also removed those `finish_non_exhaustive()`.
4 years ago
notoria 1a3a924634 Implement Debug for data structure as a feature 4 years ago
Egor Karavaev ea6667070f helix-lsp cleanup 4 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