Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
Julia Ryan
bded0e12f4
wip 2025-07-22 14:08:11 -07:00
Julia Ryan
124b4645c4
switch from action to event 2025-07-18 14:34:31 -07:00
Julia Ryan
b24a30916a
wip: start adding action 2025-07-18 14:34:31 -07:00
Julia Ryan
05e0a812c4
Add gutter runnable edit buttons 2025-07-18 14:34:31 -07:00
5 changed files with 53 additions and 10 deletions

View file

@ -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![],

View file

@ -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,
})
}

View file

@ -1392,6 +1392,7 @@ impl CodeActionsMenu {
) -> AnyElement {
let actions = self.actions.clone();
let selected_item = self.selected_item;
let list = uniform_list(
"code_actions_menu",
self.actions.len(),
@ -1438,6 +1439,30 @@ impl CodeActionsMenu {
.overflow_hidden()
.child("debug: ")
.child(scenario.label.clone())
.child(
IconButton::new(
SharedString::new(format!("edit-{ix}")),
IconName::Pencil,
)
.on_click(cx.listener({
let scenario = scenario.clone();
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();
}
})),
)
.when(selected, |this| {
this.text_color(colors.text_accent)
}),

View file

@ -2836,7 +2836,6 @@ impl EditorElement {
) -> Vec<AnyElement> {
self.editor.update(cx, |editor, cx| {
let active_task_indicator_row =
// TODO: add edit button on the right side of each row in the context menu
if let Some(crate::CodeContextMenu::CodeActions(CodeActionsMenu {
deployed_from,
actions,

View file

@ -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,