From be4b19babb30aabc70098f2f0bca3ea1d0ead289 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Fri, 19 Jul 2024 07:42:18 -0700 Subject: [PATCH] repl: Create action to refresh kernelspecs (#14786) Adds a command to refresh kernelspecs. Also added the kernelspecs to the runtime panel when none are running. That's just for now until we move out of the panel completely. Release Notes: - N/A --- crates/repl/src/runtime_panel.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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(); }