Query code actions and hovers from all related local language servers (#9943)
<img width="1122" alt="Screenshot 2024-03-28 at 21 51 18" src="https://github.com/zed-industries/zed/assets/2690773/37ef7202-f10f-462f-a2fa-044b2d806191"> Part of https://github.com/zed-industries/zed/issues/7947 and https://github.com/zed-industries/zed/issues/9912 that adds makes Zed query all related language servers instead of the primary one. Collab clients are still querying the primary one only, but this is quite hard to solve, https://github.com/zed-industries/zed/pull/8634 drafts a part of it. The local part is useful per se, as many people use Zed & Tailwind but do not use collab features. Unfortunately, eslint still returns empty actions list when queried, but querying actions for all related language servers looks reasonable and rare enough to be dangerous. Release Notes: - Added Tailwind CSS hover popovers for Zed in single player mode ([7947](https://github.com/zed-industries/zed/issues/7947))
This commit is contained in:
parent
c4bc172850
commit
c7f04691d9
10 changed files with 493 additions and 56 deletions
|
@ -234,13 +234,23 @@ impl LanguageRegistry {
|
|||
&self,
|
||||
language_name: &str,
|
||||
adapter: crate::FakeLspAdapter,
|
||||
) -> futures::channel::mpsc::UnboundedReceiver<lsp::FakeLanguageServer> {
|
||||
self.register_specific_fake_lsp_adapter(language_name, true, adapter)
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "test-support", test))]
|
||||
pub fn register_specific_fake_lsp_adapter(
|
||||
&self,
|
||||
language_name: &str,
|
||||
primary: bool,
|
||||
adapter: crate::FakeLspAdapter,
|
||||
) -> futures::channel::mpsc::UnboundedReceiver<lsp::FakeLanguageServer> {
|
||||
self.state
|
||||
.write()
|
||||
.lsp_adapters
|
||||
.entry(language_name.into())
|
||||
.or_default()
|
||||
.push(CachedLspAdapter::new(Arc::new(adapter), true));
|
||||
.push(CachedLspAdapter::new(Arc::new(adapter), primary));
|
||||
self.fake_language_servers(language_name)
|
||||
}
|
||||
|
||||
|
@ -739,6 +749,7 @@ impl LanguageRegistry {
|
|||
.unwrap_or_default();
|
||||
|
||||
let (server, mut fake_server) = lsp::FakeLanguageServer::new(
|
||||
server_id,
|
||||
binary,
|
||||
adapter.name.0.to_string(),
|
||||
capabilities,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue