Commit graph

125 commits

Author SHA1 Message Date
Kirill Bulatov
b146762f68 Remove a flacky test, fix the failing one 2023-06-29 22:45:04 +03:00
Kirill Bulatov
31f0f9f7b1 Forbid extra inlay updates 2023-06-29 22:25:49 +03:00
Kirill Bulatov
f83cfda9bc React on message-less LSP requests properly
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-06-29 22:25:48 +03:00
Kirill Bulatov
79b97f9e75 Stub initial hint requests 2023-06-29 22:25:48 +03:00
Kirill Bulatov
8a3b515f56 Initial protocol check commit 2023-06-29 22:25:48 +03:00
Julia
48bed2ee03
Merge branch 'main' into fix-broken-lsp-installations 2023-06-28 16:46:06 -04:00
Julia
7caa096bd0 Remove installation test binary from language server instance 2023-06-23 13:24:50 -04:00
Julia
0abda54d3c Remove individual location's request error handling 2023-06-22 11:43:26 -04:00
Julia
e1cd6cebb9 Revert "Route language server requests through wrapper object"
This reverts commit 9b63d6f832.
2023-06-22 10:45:08 -04:00
Julia
9b63d6f832 Route language server requests through wrapper object 2023-06-21 23:05:37 -04:00
Kirill Bulatov
bd97767c72 Run LSP response deserialization outside of main thread
Improves latency when big inlay hints LSP responses for ~8k line files

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-21 13:20:42 +03:00
Julia
f91e95f24a Merge branch 'main' into fix-broken-lsp-installations 2023-06-20 17:23:34 -04:00
Julia
da2ee55013 Route some more information for reinstall after startup failure
Doesn't actually reinstall on that particular failure due to wrong
variant in hashmap
2023-06-19 15:18:12 -04:00
Kirill Bulatov
77f5b5a80d React on message-less LSP requests properly
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-06-16 22:02:29 +03:00
Julia
f81ccbd652 Setup C adapter with test binary 2023-06-15 12:18:34 -04:00
Julia
bca625a197 Many steps toward validating and reinstalling server after failure 2023-06-15 12:18:34 -04:00
Julia
ec0409a3d1 Detect LSP startup failure 2023-06-15 12:18:34 -04:00
Max Brunsfeld
a7f06f962b Enable type definition capability in fake LSPs in tests 2023-06-08 12:09:37 -07:00
Max Brunsfeld
66f215cd13 Restructure LSP log view to show log messages in addition to RPC trace 2023-06-07 16:51:09 -07:00
Max Brunsfeld
e8479f23f9 Improve log message on invalid LSP message from server's stdout 2023-06-06 17:13:59 -07:00
Kirill Bulatov
fdad1adaf6 Update LSP to the newest version 2023-05-28 21:55:08 +03:00
Max Brunsfeld
2db57b5139 Adjust diagnostic transformation test to not wait for two buffer notifications 2023-05-26 15:47:37 -07:00
Max Brunsfeld
f3ada72785 Avoid accidentally dropping subscription when detaching it 2023-04-24 10:04:45 -07:00
Max Brunsfeld
2dd4920625 Add LanguageServer::on_io method, for observing JSON sent back and forth 2023-04-24 09:43:31 -07:00
Max Brunsfeld
4dd917c123 Introduce a LanguageServerId wrapper type
Clarify the meaning of all the usizes in use in all of these
struct fields an method signatures.
2023-04-20 08:58:41 -07:00
Julia
6156dbced0 Finish getting multiple diagnostics sources building and running 2023-04-20 08:58:41 -07:00
Julia
2a5c0fa5f8 Get ESLint to launch and provide diagnostics
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-04-20 08:58:41 -07:00
Antonio Scandurra
2c0a645f19 Provide workspace_folders capability when initializing LSP
This fixes the YAML language server which was erroring on startup
after adding the `did_change_watched_files` capability in #2258.
2023-04-03 20:12:26 +02:00
Julia
cdde523ea4 Allow each language adapter to provide their own code action kinds array 2023-03-30 15:41:54 -04:00
Julia
c72d33e029 Initial impl of NodeRuntime w/JSON borked and a deadlock :)
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-03-27 00:00:16 -04:00
Julia
edd6c85af7 Initial running of servers on downloaded Node 2023-03-27 00:00:16 -04:00
Max Brunsfeld
61172c8478 Notify language servers of FS changes 2023-03-21 11:26:13 -07:00
Antonio Scandurra
221bb54e48 Introduce a new TryFutureExt::unwrap method 2023-03-10 11:41:13 +01:00
Max Brunsfeld
ff85bc6d42 Add setting for removing trailing whitespace on save 2023-02-28 21:52:00 -08:00
Antonio Scandurra
c3a88857f9 Always respond to language server, even when its requests are malformed
This was causing Pyright to get stuck waiting for a response when sending
us the `workspace/configuration` request. For some reason, after upgrading
to Pyright 1.1.293, `scopeUri` is being sent as an empty string sometimes,
which causes serde to error when trying to deserialize that request.

Co-Authored-By: Petros Amoiridis <petros@zed.dev>
2023-02-09 15:30:10 +01:00
Kay Simmons
4642817e72 Add lua syntax highlighting and lsp support 2023-02-05 23:21:29 -08:00
Antonio Scandurra
83c98ce049 Prevent making further requests after language server shut down
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-01-06 13:40:32 -07:00
Antonio Scandurra
c4680e66ff Fix error on clangd when compile-commands.json is present
The language server was failing because we were forgetting to provide
a `jsonrpc` field for responses to requests coming from the lsp.
2022-10-13 11:10:23 +02:00
ForLoveOfCats
8ba2f77148 One big cleanup pass of clippy lints
Co-authored-by: Mikayla <mikayla@zed.dev>
2022-08-10 16:51:01 -07:00
ForLoveOfCats
5149c15329 Add "go to type definition" action 2022-07-29 11:41:08 -04:00
Isaac Clayton
6585daccf9 Further unpropogate async 2022-07-07 16:16:58 +02:00
Isaac Clayton
7dd3114a7a Start switching JSON LSP adapter to plugin (take 2) 2022-07-07 15:16:59 +02:00
Keith Simmons
ebe733a393 Restart language server using original root path rather than the path of the buffer restarted from 2022-06-30 19:11:21 -07:00
Keith Simmons
db05e32389 Prevent creating extra language server instances if there already exists one for that workspace 2022-06-30 16:46:26 -07:00
Antonio Scandurra
ca1d0a6e59 Ignore tokens that were not created via WorkDoneProgressCreate
With the new version of rust-analyzer, we were seeing stray `WorkDoneProgress::End`
messages that create an imbalance in the `pending_diagnostic_updates` that never
resolves. This was causing the diagnostic status bar item to never update because
we wouldn't emit `DiskBasedDiagnosticsStarted` nor `DiskBasedDiagnosticsFinished`.

This commit fixes the above situation by only acknowledging progress report for tokens
that have explicitly been created via the `WorkDoneProgressCreate` request, as stated
by the protocol.

In addition to that, we are replacing the `pending_diagnostic_updates: isize` with
a `has_pending_diagnostic_updates: bool`. We added it at some point to prevent a similar
issue where we would observe begin/end reports in a seemingly random order, which would cause
us to permanently display a `checking...` message in the status bar. I believe this commit
fixes that as well because the `isize` was just a less general solution for the same
underlying issue. As the protocol states: "the token provided in the create request should
only be used once (e.g. only one begin, many report and one end notification should be sent
to it)."
2022-06-28 10:08:43 +02:00
Max Brunsfeld
11f73bfa4e Integrate pyright language server 2022-06-22 16:58:19 -07:00
Max Brunsfeld
e9d19457d6 Add failing test for replication of lsp statuses
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 11:27:08 -07:00
Keith Simmons
b014352740 Syntax highlighting working. Getting started on markdown support 2022-06-07 11:54:33 -07:00
Max Brunsfeld
3dee656490 Avoid panic when language server is dropped before being initialized in tests
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-05-09 18:05:10 -07:00
Antonio Scandurra
f91fdd2ba0 Return None when prepare rename is not available on language server 2022-04-22 15:43:23 +02:00