Detailed changes
@@ -15,7 +15,7 @@ use language::{
ToPointUtf16,
};
use log::{debug, error};
-use lsp::{LanguageServer, LanguageServerBinaries, LanguageServerBinary, LanguageServerId};
+use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId};
use node_runtime::NodeRuntime;
use request::{LogMessage, StatusNotification};
use settings::SettingsStore;
@@ -366,13 +366,9 @@ impl Copilot {
path: node_path,
arguments,
};
- let binaries = LanguageServerBinaries {
- binary: binary.clone(),
- installation_test_binary: Some(binary),
- };
let server = LanguageServer::new(
LanguageServerId(0),
- binaries,
+ binary,
Path::new("/"),
None,
cx.clone(),
@@ -20,7 +20,7 @@ use futures::{
use gpui::{executor::Background, AppContext, AsyncAppContext, Task};
use highlight_map::HighlightMap;
use lazy_static::lazy_static;
-use lsp::{CodeActionKind, LanguageServerBinaries, LanguageServerBinary};
+use lsp::{CodeActionKind, LanguageServerBinary};
use parking_lot::{Mutex, RwLock};
use postage::watch;
use regex::Regex;
@@ -564,10 +564,7 @@ pub struct LanguageRegistry {
login_shell_env_loaded: Shared<Task<()>>,
#[allow(clippy::type_complexity)]
lsp_binary_paths: Mutex<
- HashMap<
- LanguageServerName,
- Shared<Task<Result<LanguageServerBinaries, Arc<anyhow::Error>>>>,
- >,
+ HashMap<LanguageServerName, Shared<Task<Result<LanguageServerBinary, Arc<anyhow::Error>>>>>,
>,
executor: Option<Arc<Background>>,
}
@@ -859,7 +856,7 @@ impl LanguageRegistry {
self.state.read().languages.iter().cloned().collect()
}
- pub fn start_pending_language_server(
+ pub fn create_pending_language_server(
self: &Arc<Self>,
language: Arc<Language>,
adapter: Arc<CachedLspAdapter>,
@@ -932,7 +929,7 @@ impl LanguageRegistry {
.entry(adapter.name.clone())
.or_insert_with(|| {
cx.spawn(|cx| {
- get_binaries(
+ get_binary(
adapter.clone(),
language.clone(),
delegate.clone(),
@@ -953,15 +950,13 @@ impl LanguageRegistry {
task.await?;
}
- let server = lsp::LanguageServer::new(
+ lsp::LanguageServer::new(
server_id,
binaries,
&root_path,
adapter.code_action_kinds(),
cx,
- )?;
-
- Ok(server)
+ )
})
};
@@ -1047,14 +1042,14 @@ impl Default for LanguageRegistry {
}
}
-async fn get_binaries(
+async fn get_binary(
adapter: Arc<CachedLspAdapter>,
language: Arc<Language>,
delegate: Arc<dyn LspAdapterDelegate>,
container_dir: Arc<Path>,
statuses: async_broadcast::Sender<(Arc<Language>, LanguageServerBinaryStatus)>,
mut cx: AsyncAppContext,
-) -> Result<LanguageServerBinaries> {
+) -> Result<LanguageServerBinary> {
if !container_dir.exists() {
smol::fs::create_dir_all(&container_dir)
.await
@@ -1082,13 +1077,7 @@ async fn get_binaries(
statuses
.broadcast((language.clone(), LanguageServerBinaryStatus::Cached))
.await?;
- let installation_test_binary = adapter
- .installation_test_binary(container_dir.to_path_buf())
- .await;
- return Ok(LanguageServerBinaries {
- binary,
- installation_test_binary,
- });
+ return Ok(binary);
} else {
statuses
.broadcast((
@@ -1110,7 +1099,7 @@ async fn fetch_latest_binary(
delegate: &dyn LspAdapterDelegate,
container_dir: &Path,
lsp_binary_statuses_tx: async_broadcast::Sender<(Arc<Language>, LanguageServerBinaryStatus)>,
-) -> Result<LanguageServerBinaries> {
+) -> Result<LanguageServerBinary> {
let container_dir: Arc<Path> = container_dir.into();
lsp_binary_statuses_tx
.broadcast((
@@ -1127,17 +1116,11 @@ async fn fetch_latest_binary(
let binary = adapter
.fetch_server_binary(version_info, container_dir.to_path_buf(), delegate)
.await?;
- let installation_test_binary = adapter
- .installation_test_binary(container_dir.to_path_buf())
- .await;
lsp_binary_statuses_tx
.broadcast((language.clone(), LanguageServerBinaryStatus::Downloaded))
.await?;
- Ok(LanguageServerBinaries {
- binary,
- installation_test_binary,
- })
+ Ok(binary)
}
impl Language {
@@ -43,12 +43,6 @@ pub struct LanguageServerBinary {
pub arguments: Vec<OsString>,
}
-#[derive(Debug, Clone, Deserialize)]
-pub struct LanguageServerBinaries {
- pub binary: LanguageServerBinary,
- pub installation_test_binary: Option<LanguageServerBinary>,
-}
-
pub struct LanguageServer {
server_id: LanguageServerId,
next_id: AtomicUsize,
@@ -65,7 +59,6 @@ pub struct LanguageServer {
output_done_rx: Mutex<Option<barrier::Receiver>>,
root_path: PathBuf,
_server: Option<Mutex<Child>>,
- installation_test_binary: Option<LanguageServerBinary>,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
@@ -135,7 +128,7 @@ struct Error {
impl LanguageServer {
pub fn new(
server_id: LanguageServerId,
- binaries: LanguageServerBinaries,
+ binary: LanguageServerBinary,
root_path: &Path,
code_action_kinds: Option<Vec<CodeActionKind>>,
cx: AsyncAppContext,
@@ -146,9 +139,9 @@ impl LanguageServer {
root_path.parent().unwrap_or_else(|| Path::new("/"))
};
- let mut server = process::Command::new(&binaries.binary.path)
+ let mut server = process::Command::new(&binary.path)
.current_dir(working_dir)
- .args(binaries.binary.arguments)
+ .args(binary.arguments)
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::inherit())
@@ -162,7 +155,6 @@ impl LanguageServer {
stdin,
stout,
Some(server),
- binaries.installation_test_binary,
root_path,
code_action_kinds,
cx,
@@ -181,7 +173,7 @@ impl LanguageServer {
},
);
- if let Some(name) = binaries.binary.path.file_name() {
+ if let Some(name) = binary.path.file_name() {
server.name = name.to_string_lossy().to_string();
}
@@ -193,7 +185,6 @@ impl LanguageServer {
stdin: Stdin,
stdout: Stdout,
server: Option<Child>,
- installation_test_binary: Option<LanguageServerBinary>,
root_path: &Path,
code_action_kinds: Option<Vec<CodeActionKind>>,
cx: AsyncAppContext,
@@ -248,14 +239,9 @@ impl LanguageServer {
output_done_rx: Mutex::new(Some(output_done_rx)),
root_path: root_path.to_path_buf(),
_server: server.map(|server| Mutex::new(server)),
- installation_test_binary,
}
}
- pub fn installation_test_binary(&self) -> &Option<LanguageServerBinary> {
- &self.installation_test_binary
- }
-
pub fn code_action_kinds(&self) -> Option<Vec<CodeActionKind>> {
self.code_action_kinds.clone()
}
@@ -840,7 +826,6 @@ impl LanguageServer {
stdin_writer,
stdout_reader,
None,
- None,
Path::new("/"),
None,
cx.clone(),
@@ -852,7 +837,6 @@ impl LanguageServer {
stdout_writer,
stdin_reader,
None,
- None,
Path::new("/"),
None,
cx,
@@ -2423,7 +2423,7 @@ impl Project {
return;
}
- let pending_server = match self.languages.start_pending_language_server(
+ let pending_server = match self.languages.create_pending_language_server(
language.clone(),
adapter.clone(),
worktree_path,