From 100e6defed88868af12869fc1fe871306fdaa98a Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Fri, 23 May 2025 18:07:52 +0100 Subject: [PATCH] disable auto-download of language servers --- crates/language/src/language.rs | 50 ++++++--------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index b19dcd5f9c..2afaade787 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -353,7 +353,10 @@ pub trait LspAdapter: 'static + Send + Sync { // because we don't want to download and overwrite our global one // for each worktree we might have open. if binary_options.allow_path_lookup { - if let Some(binary) = self.check_if_user_installed(delegate.as_ref(), toolchains, cx).await { + if let Some(binary) = self + .check_if_user_installed(delegate.as_ref(), toolchains, cx) + .await + { log::info!( "found user-installed language server for {}. path: {:?}, arguments: {:?}", self.name().0, @@ -364,47 +367,10 @@ pub trait LspAdapter: 'static + Send + Sync { } } - if !binary_options.allow_binary_download { - return Err(anyhow!("downloading language servers disabled")); - } - - if let Some(cached_binary) = cached_binary.as_ref() { - return Ok(cached_binary.clone()); - } - - let Some(container_dir) = delegate.language_server_download_dir(&self.name()).await else { - anyhow::bail!("no language server download dir defined") - }; - - let mut binary = try_fetch_server_binary(self.as_ref(), &delegate, container_dir.to_path_buf(), cx).await; - - if let Err(error) = binary.as_ref() { - if let Some(prev_downloaded_binary) = self - .cached_server_binary(container_dir.to_path_buf(), delegate.as_ref()) - .await - { - log::info!( - "failed to fetch newest version of language server {:?}. error: {:?}, falling back to using {:?}", - self.name(), - error, - prev_downloaded_binary.path - ); - binary = Ok(prev_downloaded_binary); - } else { - delegate.update_status( - self.name(), - BinaryStatus::Failed { - error: format!("{error:?}"), - }, - ); - } - } - - if let Ok(binary) = &binary { - *cached_binary = Some(binary.clone()); - } - - binary + return Err(anyhow!( + "Fred does not auto-download language servers. Please provide your own trusted copy of '{}'", + self.name().0 + )); } .boxed_local() }