mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-19 18:41:56 +03:00
Remove primary/secondary distinction for CachedLspAdapter
(#15634)
This PR removes the primary/secondary distinction for `CachedLspAdapter`s. After #15624 we weren't relying on the `is_primary` field anywhere, so we can remove it. Release Notes: - N/A
This commit is contained in:
parent
80594cc7f8
commit
7652045903
@ -5084,11 +5084,8 @@ async fn test_lsp_hover(
|
|||||||
|
|
||||||
client_a.language_registry().add(rust_lang());
|
client_a.language_registry().add(rust_lang());
|
||||||
let language_server_names = ["rust-analyzer", "CrabLang-ls"];
|
let language_server_names = ["rust-analyzer", "CrabLang-ls"];
|
||||||
let mut fake_language_servers = client_a
|
let mut fake_language_servers = client_a.language_registry().register_fake_lsp_adapter(
|
||||||
.language_registry()
|
|
||||||
.register_specific_fake_lsp_adapter(
|
|
||||||
"Rust",
|
"Rust",
|
||||||
true,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: "rust-analyzer",
|
name: "rust-analyzer",
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -5098,11 +5095,8 @@ async fn test_lsp_hover(
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _other_server = client_a
|
let _other_server = client_a.language_registry().register_fake_lsp_adapter(
|
||||||
.language_registry()
|
|
||||||
.register_specific_fake_lsp_adapter(
|
|
||||||
"Rust",
|
"Rust",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: "CrabLang-ls",
|
name: "CrabLang-ls",
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
|
@ -156,15 +156,11 @@ pub struct CachedLspAdapter {
|
|||||||
language_ids: HashMap<String, String>,
|
language_ids: HashMap<String, String>,
|
||||||
pub adapter: Arc<dyn LspAdapter>,
|
pub adapter: Arc<dyn LspAdapter>,
|
||||||
pub reinstall_attempt_count: AtomicU64,
|
pub reinstall_attempt_count: AtomicU64,
|
||||||
/// Indicates whether this language server is the primary language server
|
|
||||||
/// for a given language. Currently, most LSP-backed features only work
|
|
||||||
/// with one language server, so one server needs to be primary.
|
|
||||||
pub is_primary: bool,
|
|
||||||
cached_binary: futures::lock::Mutex<Option<LanguageServerBinary>>,
|
cached_binary: futures::lock::Mutex<Option<LanguageServerBinary>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CachedLspAdapter {
|
impl CachedLspAdapter {
|
||||||
pub fn new(adapter: Arc<dyn LspAdapter>, is_primary: bool) -> Arc<Self> {
|
pub fn new(adapter: Arc<dyn LspAdapter>) -> Arc<Self> {
|
||||||
let name = adapter.name();
|
let name = adapter.name();
|
||||||
let disk_based_diagnostic_sources = adapter.disk_based_diagnostic_sources();
|
let disk_based_diagnostic_sources = adapter.disk_based_diagnostic_sources();
|
||||||
let disk_based_diagnostics_progress_token = adapter.disk_based_diagnostics_progress_token();
|
let disk_based_diagnostics_progress_token = adapter.disk_based_diagnostics_progress_token();
|
||||||
@ -176,7 +172,6 @@ impl CachedLspAdapter {
|
|||||||
disk_based_diagnostics_progress_token,
|
disk_based_diagnostics_progress_token,
|
||||||
language_ids,
|
language_ids,
|
||||||
adapter,
|
adapter,
|
||||||
is_primary,
|
|
||||||
cached_binary: Default::default(),
|
cached_binary: Default::default(),
|
||||||
reinstall_attempt_count: AtomicU64::new(0),
|
reinstall_attempt_count: AtomicU64::new(0),
|
||||||
})
|
})
|
||||||
|
@ -251,7 +251,7 @@ impl LanguageRegistry {
|
|||||||
name,
|
name,
|
||||||
Arc::new(move || {
|
Arc::new(move || {
|
||||||
let lsp_adapter = load();
|
let lsp_adapter = load();
|
||||||
CachedLspAdapter::new(lsp_adapter, true)
|
CachedLspAdapter::new(lsp_adapter)
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -273,20 +273,7 @@ impl LanguageRegistry {
|
|||||||
.lsp_adapters
|
.lsp_adapters
|
||||||
.entry(language_name)
|
.entry(language_name)
|
||||||
.or_default()
|
.or_default()
|
||||||
.push(CachedLspAdapter::new(adapter, true));
|
.push(CachedLspAdapter::new(adapter));
|
||||||
}
|
|
||||||
|
|
||||||
pub fn register_secondary_lsp_adapter(
|
|
||||||
&self,
|
|
||||||
language_name: Arc<str>,
|
|
||||||
adapter: Arc<dyn LspAdapter>,
|
|
||||||
) {
|
|
||||||
self.state
|
|
||||||
.write()
|
|
||||||
.lsp_adapters
|
|
||||||
.entry(language_name)
|
|
||||||
.or_default()
|
|
||||||
.push(CachedLspAdapter::new(adapter, false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "test-support", test))]
|
#[cfg(any(feature = "test-support", test))]
|
||||||
@ -294,23 +281,13 @@ impl LanguageRegistry {
|
|||||||
&self,
|
&self,
|
||||||
language_name: &str,
|
language_name: &str,
|
||||||
adapter: crate::FakeLspAdapter,
|
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> {
|
) -> futures::channel::mpsc::UnboundedReceiver<lsp::FakeLanguageServer> {
|
||||||
self.state
|
self.state
|
||||||
.write()
|
.write()
|
||||||
.lsp_adapters
|
.lsp_adapters
|
||||||
.entry(language_name.into())
|
.entry(language_name.into())
|
||||||
.or_default()
|
.or_default()
|
||||||
.push(CachedLspAdapter::new(Arc::new(adapter), primary));
|
.push(CachedLspAdapter::new(Arc::new(adapter)));
|
||||||
self.fake_language_servers(language_name)
|
self.fake_language_servers(language_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ pub fn init(
|
|||||||
];
|
];
|
||||||
|
|
||||||
for language in tailwind_languages {
|
for language in tailwind_languages {
|
||||||
languages.register_secondary_lsp_adapter(
|
languages.register_lsp_adapter(
|
||||||
language.into(),
|
language.into(),
|
||||||
Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())),
|
Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())),
|
||||||
);
|
);
|
||||||
@ -240,7 +240,7 @@ pub fn init(
|
|||||||
|
|
||||||
let eslint_languages = ["TSX", "TypeScript", "JavaScript", "Vue.js", "Svelte"];
|
let eslint_languages = ["TSX", "TypeScript", "JavaScript", "Vue.js", "Svelte"];
|
||||||
for language in eslint_languages {
|
for language in eslint_languages {
|
||||||
languages.register_secondary_lsp_adapter(
|
languages.register_lsp_adapter(
|
||||||
language.into(),
|
language.into(),
|
||||||
Arc::new(typescript::EsLintLspAdapter::new(node_runtime.clone())),
|
Arc::new(typescript::EsLintLspAdapter::new(node_runtime.clone())),
|
||||||
);
|
);
|
||||||
|
@ -4623,9 +4623,8 @@ async fn test_multiple_language_server_hovers(cx: &mut gpui::TestAppContext) {
|
|||||||
"ESLintServer",
|
"ESLintServer",
|
||||||
"NoHoverCapabilitiesServer",
|
"NoHoverCapabilitiesServer",
|
||||||
];
|
];
|
||||||
let mut fake_tsx_language_servers = language_registry.register_specific_fake_lsp_adapter(
|
let mut fake_tsx_language_servers = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
true,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[0],
|
name: &language_server_names[0],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4635,9 +4634,8 @@ async fn test_multiple_language_server_hovers(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _a = language_registry.register_specific_fake_lsp_adapter(
|
let _a = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[1],
|
name: &language_server_names[1],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4647,9 +4645,8 @@ async fn test_multiple_language_server_hovers(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _b = language_registry.register_specific_fake_lsp_adapter(
|
let _b = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[2],
|
name: &language_server_names[2],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4659,9 +4656,8 @@ async fn test_multiple_language_server_hovers(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _c = language_registry.register_specific_fake_lsp_adapter(
|
let _c = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[3],
|
name: &language_server_names[3],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4847,9 +4843,8 @@ async fn test_multiple_language_server_actions(cx: &mut gpui::TestAppContext) {
|
|||||||
"ESLintServer",
|
"ESLintServer",
|
||||||
"NoActionsCapabilitiesServer",
|
"NoActionsCapabilitiesServer",
|
||||||
];
|
];
|
||||||
let mut fake_tsx_language_servers = language_registry.register_specific_fake_lsp_adapter(
|
let mut fake_tsx_language_servers = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
true,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[0],
|
name: &language_server_names[0],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4859,9 +4854,8 @@ async fn test_multiple_language_server_actions(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _a = language_registry.register_specific_fake_lsp_adapter(
|
let _a = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[1],
|
name: &language_server_names[1],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4871,9 +4865,8 @@ async fn test_multiple_language_server_actions(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _b = language_registry.register_specific_fake_lsp_adapter(
|
let _b = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[2],
|
name: &language_server_names[2],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
@ -4883,9 +4876,8 @@ async fn test_multiple_language_server_actions(cx: &mut gpui::TestAppContext) {
|
|||||||
..FakeLspAdapter::default()
|
..FakeLspAdapter::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let _c = language_registry.register_specific_fake_lsp_adapter(
|
let _c = language_registry.register_fake_lsp_adapter(
|
||||||
"tsx",
|
"tsx",
|
||||||
false,
|
|
||||||
FakeLspAdapter {
|
FakeLspAdapter {
|
||||||
name: &language_server_names[3],
|
name: &language_server_names[3],
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
|
Loading…
Reference in New Issue
Block a user