diff --git a/crates/repl/src/runtime_panel.rs b/crates/repl/src/runtime_panel.rs index b5bbae4db8..a6df54c725 100644 --- a/crates/repl/src/runtime_panel.rs +++ b/crates/repl/src/runtime_panel.rs @@ -23,7 +23,10 @@ use workspace::{ Workspace, }; -actions!(repl, [Run, ClearOutputs, Interrupt, Shutdown]); +actions!( + repl, + [Run, ClearOutputs, Interrupt, Shutdown, RefreshKernelspecs] +); actions!(repl_panel, [ToggleFocus]); pub fn init(cx: &mut AppContext) { @@ -32,6 +35,14 @@ pub fn init(cx: &mut AppContext) { workspace.register_action(|workspace, _: &ToggleFocus, cx| { workspace.toggle_panel_focus::(cx); }); + + workspace.register_action(|workspace, _: &RefreshKernelspecs, cx| { + if let Some(panel) = workspace.panel::(cx) { + panel.update(cx, |panel, cx| { + panel.refresh_kernelspecs(cx).detach(); + }); + } + }); }, ) .detach(); @@ -543,6 +554,13 @@ impl Render for RuntimePanel { ) ) ) + .child(Label::new("Kernels available").size(LabelSize::Large)) + .children( + self.kernel_specifications.iter().map(|spec| { + h_flex().gap_2().child(Label::new(spec.name.clone())) + .child(Label::new(spec.kernelspec.language.clone()).color(Color::Muted)) + }) + ) .into_any_element(); }