debugger: Add console indicator and resolve debug configs from NewSessionModal (#28489)
The debug console will now show an indicator when it's unopened and there's unread messages. `NewSessionModal` attempts to resolve debug configurations before using the config to start debugging. This allows users to use zed's task variables in the modal prompt. I had to invert tasks_ui dependency on debugger_ui so `NewSessionModal` could get the correct `TaskContexts` by calling tasks_ui functions. A consequence of this workspace has a new event `ShowAttachModal` that I'm not a big fan of. @osiewicz if you have time could you please take a look to see if there's a way around adding the event. I'm open to pair on it too. Release Notes: - N/A
This commit is contained in:
parent
66dd6726df
commit
cf65d9437a
12 changed files with 204 additions and 82 deletions
|
@ -1,11 +1,9 @@
|
|||
use std::path::Path;
|
||||
|
||||
use collections::HashMap;
|
||||
use debugger_ui::Start;
|
||||
use editor::Editor;
|
||||
use feature_flags::{Debugger, FeatureFlagViewExt};
|
||||
use gpui::{App, AppContext as _, Context, Entity, Task, Window};
|
||||
use modal::{TaskOverrides, TasksModal};
|
||||
use modal::TaskOverrides;
|
||||
use project::{Location, TaskContexts, TaskSourceKind, Worktree};
|
||||
use task::{
|
||||
RevealTarget, TaskContext, TaskId, TaskModal, TaskTemplate, TaskVariables, VariableName,
|
||||
|
@ -15,11 +13,11 @@ use workspace::{Workspace, tasks::schedule_resolved_task};
|
|||
|
||||
mod modal;
|
||||
|
||||
pub use modal::{Rerun, Spawn};
|
||||
pub use modal::{Rerun, ShowAttachModal, Spawn, TasksModal};
|
||||
|
||||
pub fn init(cx: &mut App) {
|
||||
cx.observe_new(
|
||||
|workspace: &mut Workspace, window: Option<&mut Window>, cx: &mut Context<Workspace>| {
|
||||
|workspace: &mut Workspace, _: Option<&mut Window>, _: &mut Context<Workspace>| {
|
||||
workspace
|
||||
.register_action(spawn_task_or_modal)
|
||||
.register_action(move |workspace, action: &modal::Rerun, window, cx| {
|
||||
|
@ -89,17 +87,6 @@ pub fn init(cx: &mut App) {
|
|||
toggle_modal(workspace, None, TaskModal::ScriptModal, window, cx).detach();
|
||||
};
|
||||
});
|
||||
|
||||
let Some(window) = window else {
|
||||
return;
|
||||
};
|
||||
|
||||
cx.when_flag_enabled::<Debugger>(window, |workspace, _, _| {
|
||||
workspace.register_action(|workspace: &mut Workspace, _: &Start, window, cx| {
|
||||
crate::toggle_modal(workspace, None, task::TaskModal::DebugModal, window, cx)
|
||||
.detach();
|
||||
});
|
||||
});
|
||||
},
|
||||
)
|
||||
.detach();
|
||||
|
@ -277,7 +264,11 @@ where
|
|||
})
|
||||
}
|
||||
|
||||
fn task_contexts(workspace: &Workspace, window: &mut Window, cx: &mut App) -> Task<TaskContexts> {
|
||||
pub fn task_contexts(
|
||||
workspace: &Workspace,
|
||||
window: &mut Window,
|
||||
cx: &mut App,
|
||||
) -> Task<TaskContexts> {
|
||||
let active_item = workspace.active_item(cx);
|
||||
let active_worktree = active_item
|
||||
.as_ref()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue