Optimize REPL kernel spec refresh (#21844)
Python kernelspec refresh now only performed on (known) python files. Release Notes: - N/A
This commit is contained in:
parent
ae351298b4
commit
f8b6d71670
2 changed files with 34 additions and 17 deletions
|
@ -73,14 +73,18 @@ pub fn init(cx: &mut AppContext) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let project_path = editor
|
let buffer = editor.buffer().read(cx).as_singleton();
|
||||||
.buffer()
|
|
||||||
.read(cx)
|
let language = buffer
|
||||||
.as_singleton()
|
.as_ref()
|
||||||
.and_then(|buffer| buffer.read(cx).project_path(cx));
|
.and_then(|buffer| buffer.read(cx).language());
|
||||||
|
|
||||||
|
let project_path = buffer.and_then(|buffer| buffer.read(cx).project_path(cx));
|
||||||
|
|
||||||
let editor_handle = cx.view().downgrade();
|
let editor_handle = cx.view().downgrade();
|
||||||
|
|
||||||
|
if let Some(language) = language {
|
||||||
|
if language.name() == "Python".into() {
|
||||||
if let (Some(project_path), Some(project)) = (project_path, project) {
|
if let (Some(project_path), Some(project)) = (project_path, project) {
|
||||||
let store = ReplStore::global(cx);
|
let store = ReplStore::global(cx);
|
||||||
store.update(cx, |store, cx| {
|
store.update(cx, |store, cx| {
|
||||||
|
@ -89,6 +93,8 @@ pub fn init(cx: &mut AppContext) {
|
||||||
.detach_and_log_err(cx);
|
.detach_and_log_err(cx);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
editor
|
editor
|
||||||
.register_action({
|
.register_action({
|
||||||
|
|
|
@ -173,7 +173,7 @@ impl ReplStore {
|
||||||
|
|
||||||
let remote_kernel_specifications = self.get_remote_kernel_specifications(cx);
|
let remote_kernel_specifications = self.get_remote_kernel_specifications(cx);
|
||||||
|
|
||||||
cx.spawn(|this, mut cx| async move {
|
let all_specs = cx.background_executor().spawn(async move {
|
||||||
let mut all_specs = local_kernel_specifications
|
let mut all_specs = local_kernel_specifications
|
||||||
.await?
|
.await?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -186,10 +186,21 @@ impl ReplStore {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
anyhow::Ok(all_specs)
|
||||||
|
});
|
||||||
|
|
||||||
|
cx.spawn(|this, mut cx| async move {
|
||||||
|
let all_specs = all_specs.await;
|
||||||
|
|
||||||
|
if let Ok(specs) = all_specs {
|
||||||
this.update(&mut cx, |this, cx| {
|
this.update(&mut cx, |this, cx| {
|
||||||
this.kernel_specifications = all_specs;
|
this.kernel_specifications = specs;
|
||||||
cx.notify();
|
cx.notify();
|
||||||
})
|
})
|
||||||
|
.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
anyhow::Ok(())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue