wip

Julia Ryan created

Change summary

crates/debugger_ui/src/debugger_panel.rs    | 21 ++++++++++++++++++++-
crates/debugger_ui/src/new_process_modal.rs |  8 --------
crates/editor/src/code_context_menus.rs     | 22 +++++++++++++---------
crates/editor/src/items.rs                  |  1 -
crates/workspace/src/workspace.rs           |  8 ++++++++
5 files changed, 41 insertions(+), 19 deletions(-)

Detailed changes

crates/debugger_ui/src/debugger_panel.rs 🔗

@@ -36,12 +36,12 @@ use task::{DebugScenario, TaskContext};
 use tree_sitter::{Query, StreamingIterator as _};
 use ui::{ContextMenu, Divider, PopoverMenuHandle, Tooltip, prelude::*};
 use util::{ResultExt, maybe};
-use workspace::SplitDirection;
 use workspace::item::SaveOptions;
 use workspace::{
     Item, Pane, Workspace,
     dock::{DockPosition, Panel, PanelEvent},
 };
+use workspace::{OpenInDebugJson, SplitDirection};
 use zed_actions::ToggleFocus;
 
 pub enum DebugPanelEvent {
@@ -98,6 +98,25 @@ impl DebugPanel {
                 },
             );
 
+            if let Some(entity) = workspace.weak_handle().upgrade() {
+                let edit_scenario_subscription = cx.subscribe_in(
+                    &entity,
+                    window,
+                    move |this, workspace, OpenInDebugJson { scenario, id }, window, cx| {
+                        let task = this.go_to_scenario_definition(
+                            TaskSourceKind::UserInput,
+                            scenario.clone(),
+                            todo!(),
+                            // *id,
+                            window,
+                            cx,
+                        );
+                        cx.spawn(async move |_, cx| task.await)
+                            .detach_and_log_err(cx);
+                    },
+                );
+            }
+
             Self {
                 size: px(300.),
                 sessions: vec![],

crates/debugger_ui/src/new_process_modal.rs 🔗

@@ -343,12 +343,6 @@ impl NewProcessModal {
             return;
         }
 
-        if let NewProcessMode::Launch = &self.mode {
-            if self.configure_mode.read(cx).save_to_debug_json.selected() {
-                self.save_debug_scenario(window, cx);
-            }
-        }
-
         let Some(debugger) = self.debugger.clone() else {
             return;
         };
@@ -806,7 +800,6 @@ pub(super) struct ConfigureMode {
     program: Entity<Editor>,
     cwd: Entity<Editor>,
     stop_on_entry: ToggleState,
-    save_to_debug_json: ToggleState,
 }
 
 impl ConfigureMode {
@@ -825,7 +818,6 @@ impl ConfigureMode {
             program,
             cwd,
             stop_on_entry: ToggleState::Unselected,
-            save_to_debug_json: ToggleState::Unselected,
         })
     }
 

crates/editor/src/code_context_menus.rs 🔗

@@ -1446,11 +1446,20 @@ impl CodeActionsMenu {
                                                 )
                                                 .on_click(cx.listener({
                                                     let scenario = scenario.clone();
-                                                    move |_, _, _window, cx| {
+                                                    move |editor, _, _window, cx| {
+                                                        if let Some((workspace, Some(id))) =
+                                                            editor.workspace.as_ref()
+                                                        {
+                                                            workspace
+                                                                .update(cx, |_, cx| {
+                                                                    cx.emit(workspace::OpenInDebugJson {
+                                                                        scenario: scenario.clone(),
+                                                                        id: *id,
+                                                                    });
+                                                                })
+                                                                .ok();
+                                                        }
                                                         cx.stop_propagation();
-                                                        cx.emit(OpenInDebugJson {
-                                                            scenario: scenario.clone(),
-                                                        });
                                                     }
                                                 })),
                                             )
@@ -1499,8 +1508,3 @@ impl CodeActionsMenu {
         Popover::new().child(list).into_any_element()
     }
 }
-
-#[derive(Clone)]
-pub struct OpenInDebugJson {
-    pub scenario: DebugScenario,
-}

crates/editor/src/items.rs 🔗

@@ -1385,7 +1385,6 @@ fn clip_ranges<'a>(
 }
 
 impl EventEmitter<SearchEvent> for Editor {}
-impl EventEmitter<crate::code_context_menus::OpenInDebugJson> for Editor {}
 
 impl Editor {
     pub fn update_restoration_data(

crates/workspace/src/workspace.rs 🔗

@@ -1092,6 +1092,14 @@ pub struct Workspace {
 
 impl EventEmitter<Event> for Workspace {}
 
+#[derive(Clone)]
+pub struct OpenInDebugJson {
+    pub scenario: DebugScenario,
+    pub id: WorkspaceId,
+}
+
+impl EventEmitter<OpenInDebugJson> for Workspace {}
+
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
 pub struct ViewId {
     pub creator: CollaboratorId,