Fix on_settings_changed, need to review that impl is correct

This commit is contained in:
Isaac Clayton 2022-07-05 09:39:43 +02:00
parent 4dad2eb7d7
commit db7b863d8c

View file

@ -713,7 +713,8 @@ impl Project {
fn on_settings_changed(&mut self, cx: &mut ModelContext<'_, Self>) {
let settings = cx.global::<Settings>();
self.lsp_settings_changed = Some(cx.spawn(|_, _| async {
self.lsp_settings_changed = Some(cx.spawn(|project, cx| async {
let language_servers_to_start = project.update(&mut cx, |project, cx| {
let mut language_servers_to_start = Vec::new();
for buffer in self.opened_buffers.values() {
if let Some(buffer) = buffer.upgrade(cx) {
@ -732,6 +733,8 @@ impl Project {
}
}
}
language_servers_to_start
});
let mut language_servers_to_stop = Vec::new();
for language in self.languages.to_vec() {
@ -749,6 +752,7 @@ impl Project {
}
}
project.update(&mut cx, |project, cx| {
// Stop all newly-disabled language servers.
for (worktree_id, adapter_name) in language_servers_to_stop {
self.stop_language_server(worktree_id, adapter_name, cx)
@ -761,6 +765,7 @@ impl Project {
}
cx.notify();
});
}))
}