Remove now-unnecessary complexity
This commit is contained in:
parent
0abda54d3c
commit
a8acf28989
1 changed files with 17 additions and 29 deletions
|
@ -282,11 +282,7 @@ pub enum Event {
|
|||
pub enum LanguageServerState {
|
||||
Validating(Task<Option<Arc<LanguageServer>>>),
|
||||
|
||||
Starting {
|
||||
language: Arc<Language>,
|
||||
adapter: Arc<CachedLspAdapter>,
|
||||
task: Task<Option<Arc<LanguageServer>>>,
|
||||
},
|
||||
Starting(Task<Option<Arc<LanguageServer>>>),
|
||||
|
||||
Running {
|
||||
language: Arc<Language>,
|
||||
|
@ -2455,7 +2451,7 @@ impl Project {
|
|||
|
||||
let server_id = pending_server.server_id;
|
||||
let container_dir = pending_server.container_dir.clone();
|
||||
let task = {
|
||||
let state = LanguageServerState::Starting({
|
||||
let adapter = adapter.clone();
|
||||
let server_name = adapter.name.0.clone();
|
||||
let languages = self.languages.clone();
|
||||
|
@ -2469,7 +2465,7 @@ impl Project {
|
|||
pending_server,
|
||||
adapter.clone(),
|
||||
languages,
|
||||
language,
|
||||
language.clone(),
|
||||
server_id,
|
||||
key,
|
||||
&mut cx,
|
||||
|
@ -2490,6 +2486,8 @@ impl Project {
|
|||
|
||||
this.update(&mut cx, |_, cx| {
|
||||
Self::check_errored_server_id(
|
||||
language,
|
||||
adapter,
|
||||
server_id,
|
||||
installation_test_binary,
|
||||
cx,
|
||||
|
@ -2502,12 +2500,7 @@ impl Project {
|
|||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
let state = LanguageServerState::Starting {
|
||||
language,
|
||||
adapter,
|
||||
task,
|
||||
};
|
||||
});
|
||||
|
||||
self.language_servers.insert(server_id, state);
|
||||
self.language_server_ids.insert(key, server_id);
|
||||
|
@ -2515,23 +2508,16 @@ impl Project {
|
|||
|
||||
fn reinstall_language_server(
|
||||
&mut self,
|
||||
language: Arc<Language>,
|
||||
adapter: Arc<CachedLspAdapter>,
|
||||
server_id: LanguageServerId,
|
||||
cx: &mut ModelContext<Self>,
|
||||
) -> Option<Task<()>> {
|
||||
log::info!("beginning to reinstall server");
|
||||
let (language, adapter, server) = match self.language_servers.remove(&server_id) {
|
||||
Some(LanguageServerState::Running {
|
||||
language,
|
||||
adapter,
|
||||
server,
|
||||
..
|
||||
}) => (language.clone(), adapter.clone(), Some(server)),
|
||||
|
||||
Some(LanguageServerState::Starting {
|
||||
language, adapter, ..
|
||||
}) => (language.clone(), adapter.clone(), None),
|
||||
|
||||
_ => return None,
|
||||
let existing_server = match self.language_servers.remove(&server_id) {
|
||||
Some(LanguageServerState::Running { server, .. }) => Some(server),
|
||||
_ => None,
|
||||
};
|
||||
|
||||
for worktree in &self.worktrees {
|
||||
|
@ -2542,7 +2528,7 @@ impl Project {
|
|||
}
|
||||
|
||||
Some(cx.spawn(move |this, mut cx| async move {
|
||||
if let Some(task) = server.and_then(|server| server.shutdown()) {
|
||||
if let Some(task) = existing_server.and_then(|server| server.shutdown()) {
|
||||
log::info!("shutting down existing server");
|
||||
task.await;
|
||||
}
|
||||
|
@ -2950,7 +2936,7 @@ impl Project {
|
|||
|
||||
let server = match server_state {
|
||||
Some(LanguageServerState::Validating(task)) => task.await,
|
||||
Some(LanguageServerState::Starting { task, .. }) => task.await,
|
||||
Some(LanguageServerState::Starting(task)) => task.await,
|
||||
Some(LanguageServerState::Running { server, .. }) => Some(server),
|
||||
None => None,
|
||||
};
|
||||
|
@ -3062,6 +3048,8 @@ impl Project {
|
|||
}
|
||||
|
||||
fn check_errored_server_id(
|
||||
language: Arc<Language>,
|
||||
adapter: Arc<CachedLspAdapter>,
|
||||
server_id: LanguageServerId,
|
||||
installation_test_binary: Option<LanguageServerBinary>,
|
||||
cx: &mut ModelContext<Self>,
|
||||
|
@ -3105,7 +3093,7 @@ impl Project {
|
|||
if errored {
|
||||
log::warn!("test binary check failed");
|
||||
let task = this.update(&mut cx, move |this, mut cx| {
|
||||
this.reinstall_language_server(server_id, &mut cx)
|
||||
this.reinstall_language_server(language, adapter, server_id, &mut cx)
|
||||
});
|
||||
|
||||
if let Some(task) = task {
|
||||
|
@ -7403,7 +7391,7 @@ impl Entity for Project {
|
|||
use LanguageServerState::*;
|
||||
match server_state {
|
||||
Running { server, .. } => server.shutdown()?.await,
|
||||
Starting { task, .. } | Validating(task) => task.await?.shutdown()?.await,
|
||||
Starting(task) | Validating(task) => task.await?.shutdown()?.await,
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue