debugger: Fix debug scenario's defined in debug.json not using passed in build task (#29973)
There were two bugs that caused user-defined debug scenarios from being able to run a build task. 1. DebugRequest would be deserialized to `Attach` even when `process_id` wasn't defined in a user's configuration file. This has been fixed by adding our own deserializer that defaults to None if there are no fields present instead of `Attach`, and I added tests to prevent regressions. 2. Debug scenario resolve phase never got the active buffer when spawning a debug session from the new session modal. This has been worked around by passing in the worktree_id of a debug scenario in the scenario picker and the active worktree_id otherwise. Release Notes: - N/A
This commit is contained in:
parent
52ea501f4f
commit
a0bfe4d293
6 changed files with 97 additions and 12 deletions
|
@ -150,6 +150,7 @@ impl NewSessionModal {
|
|||
let task_contexts = workspace
|
||||
.update_in(cx, |this, window, cx| task_contexts(this, window, cx))?
|
||||
.await;
|
||||
let worktree_id = task_contexts.worktree();
|
||||
let task_context = task_contexts
|
||||
.active_item_context
|
||||
.map(|(_, _, context)| context)
|
||||
|
@ -159,8 +160,9 @@ impl NewSessionModal {
|
|||
.map(|(_, context)| context)
|
||||
})
|
||||
.unwrap_or_default();
|
||||
|
||||
debug_panel.update_in(cx, |debug_panel, window, cx| {
|
||||
debug_panel.start_session(config, task_context, None, window, cx)
|
||||
debug_panel.start_session(config, task_context, None, worktree_id, window, cx)
|
||||
})?;
|
||||
this.update(cx, |_, cx| {
|
||||
cx.emit(DismissEvent);
|
||||
|
@ -937,19 +939,27 @@ impl PickerDelegate for DebugScenarioDelegate {
|
|||
.await
|
||||
.task_context_for_worktree_id(worktree_id)
|
||||
.cloned()
|
||||
.map(|context| (context, Some(worktree_id)))
|
||||
})
|
||||
} else {
|
||||
gpui::Task::ready(None)
|
||||
};
|
||||
|
||||
cx.spawn_in(window, async move |this, cx| {
|
||||
let task_context = task_context.await.unwrap_or_default();
|
||||
let (task_context, worktree_id) = task_context.await.unwrap_or_default();
|
||||
|
||||
this.update_in(cx, |this, window, cx| {
|
||||
this.delegate
|
||||
.debug_panel
|
||||
.update(cx, |panel, cx| {
|
||||
panel.start_session(debug_scenario, task_context, None, window, cx);
|
||||
panel.start_session(
|
||||
debug_scenario,
|
||||
task_context,
|
||||
None,
|
||||
worktree_id,
|
||||
window,
|
||||
cx,
|
||||
);
|
||||
})
|
||||
.ok();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue