project: Fix LSP requests failing for remotes for builtin servers (#46156)

Closes https://github.com/zed-industries/zed/issues/45928

Release Notes:

- Fixed builtin python language servers not correctly working on ssh
remotes
This commit is contained in:
Lukas Wirth 2026-01-06 14:51:48 +01:00 committed by GitHub
parent 583a479f77
commit 6e21fa9a6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 9 deletions

View file

@ -408,6 +408,12 @@ impl LanguageRegistry {
Some(load_lsp_adapter())
}
/// Checks if a language server adapter with the given name is available to be loaded.
pub fn is_lsp_adapter_available(&self, name: &LanguageServerName) -> bool {
let state = self.state.read();
state.available_lsp_adapters.contains_key(name)
}
pub fn register_lsp_adapter(&self, language_name: LanguageName, adapter: Arc<dyn LspAdapter>) {
let mut state = self.state.write();

View file

@ -4665,7 +4665,7 @@ impl LspStore {
let Some(language) = buffer.read(cx).language().cloned() else {
return false;
};
let relevant_language_servers = self
let registered_language_servers = self
.languages
.lsp_adapters(&language.name())
.into_iter()
@ -4674,9 +4674,13 @@ impl LspStore {
self.language_server_statuses
.iter()
.filter_map(|(server_id, server_status)| {
relevant_language_servers
.contains(&server_status.name)
.then_some(server_id)
// Include servers that are either registered for this language OR
// available to be loaded (for SSH remote mode where adapters like
// ty/pylsp/pyright are registered via register_available_lsp_adapter
// but only loaded on the server side)
let is_relevant = registered_language_servers.contains(&server_status.name)
|| self.languages.is_lsp_adapter_available(&server_status.name);
is_relevant.then_some(server_id)
})
.filter_map(|server_id| self.lsp_server_capabilities.get(server_id))
.any(check)
@ -4694,7 +4698,7 @@ impl LspStore {
let Some(language) = buffer.read(cx).language().cloned() else {
return Vec::default();
};
let relevant_language_servers = self
let registered_language_servers = self
.languages
.lsp_adapters(&language.name())
.into_iter()
@ -4703,9 +4707,13 @@ impl LspStore {
self.language_server_statuses
.iter()
.filter_map(|(server_id, server_status)| {
relevant_language_servers
.contains(&server_status.name)
.then_some((server_id, &server_status.name))
// Include servers that are either registered for this language OR
// available to be loaded (for SSH remote mode where adapters like
// ty/pylsp/pyright are registered via register_available_lsp_adapter
// but only loaded on the server side)
let is_relevant = registered_language_servers.contains(&server_status.name)
|| self.languages.is_lsp_adapter_available(&server_status.name);
is_relevant.then_some((server_id, &server_status.name))
})
.filter_map(|(server_id, server_name)| {
self.lsp_server_capabilities

View file

@ -66,7 +66,7 @@ fn main() {
let open_console_target = target_dir.join("OpenConsole.exe");
let conpty_url = "https://github.com/microsoft/terminal/releases/download/v1.23.13503.0/Microsoft.Windows.Console.ConPTY.1.23.251216003.nupkg";
let nupkg_path = out_dir.join("conpty.nupkg");
let nupkg_path = out_dir.join("conpty.nupkg.zip");
let extract_dir = out_dir.join("conpty");
let download_script = format!(