chore: Sever terminal_view <-> tasks_ui dependency (#20946)
Closes #ISSUE Release Notes: - N/A
This commit is contained in:
parent
cbba44900d
commit
536d7e5355
8 changed files with 56 additions and 53 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -12196,6 +12196,7 @@ dependencies = [
|
|||
"ui",
|
||||
"util",
|
||||
"workspace",
|
||||
"zed_actions",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -12299,7 +12300,6 @@ dependencies = [
|
|||
"shellexpand 2.1.2",
|
||||
"smol",
|
||||
"task",
|
||||
"tasks_ui",
|
||||
"terminal",
|
||||
"theme",
|
||||
"ui",
|
||||
|
|
|
@ -25,7 +25,7 @@ ui.workspace = true
|
|||
util.workspace = true
|
||||
workspace.workspace = true
|
||||
language.workspace = true
|
||||
|
||||
zed_actions.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
editor = { workspace = true, features = ["test-support"] }
|
||||
|
|
|
@ -3,6 +3,7 @@ use editor::{tasks::task_context, Editor};
|
|||
use gpui::{AppContext, Task as AsyncTask, ViewContext, WindowContext};
|
||||
use modal::TasksModal;
|
||||
use project::{Location, WorktreeId};
|
||||
use task::TaskId;
|
||||
use workspace::tasks::schedule_task;
|
||||
use workspace::{tasks::schedule_resolved_task, Workspace};
|
||||
|
||||
|
@ -25,9 +26,13 @@ pub fn init(cx: &mut AppContext) {
|
|||
.read(cx)
|
||||
.task_inventory()
|
||||
.and_then(|inventory| {
|
||||
inventory
|
||||
.read(cx)
|
||||
.last_scheduled_task(action.task_id.as_ref())
|
||||
inventory.read(cx).last_scheduled_task(
|
||||
action
|
||||
.task_id
|
||||
.as_ref()
|
||||
.map(|id| TaskId(id.clone()))
|
||||
.as_ref(),
|
||||
)
|
||||
})
|
||||
{
|
||||
if action.reevaluate_context {
|
||||
|
|
|
@ -3,13 +3,13 @@ use std::sync::Arc;
|
|||
use crate::active_item_selection_properties;
|
||||
use fuzzy::{StringMatch, StringMatchCandidate};
|
||||
use gpui::{
|
||||
impl_actions, rems, Action, AnyElement, AppContext, DismissEvent, EventEmitter, FocusableView,
|
||||
rems, Action, AnyElement, AppContext, DismissEvent, EventEmitter, FocusableView,
|
||||
InteractiveElement, Model, ParentElement, Render, SharedString, Styled, Subscription, Task,
|
||||
View, ViewContext, VisualContext, WeakView,
|
||||
};
|
||||
use picker::{highlighted_match_with_paths::HighlightedText, Picker, PickerDelegate};
|
||||
use project::{task_store::TaskStore, TaskSourceKind};
|
||||
use task::{ResolvedTask, TaskContext, TaskId, TaskTemplate};
|
||||
use task::{ResolvedTask, TaskContext, TaskTemplate};
|
||||
use ui::{
|
||||
div, h_flex, v_flex, ActiveTheme, Button, ButtonCommon, ButtonSize, Clickable, Color,
|
||||
FluentBuilder as _, Icon, IconButton, IconButtonShape, IconName, IconSize, IntoElement,
|
||||
|
@ -18,48 +18,7 @@ use ui::{
|
|||
};
|
||||
use util::ResultExt;
|
||||
use workspace::{tasks::schedule_resolved_task, ModalView, Workspace};
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
/// Spawn a task with name or open tasks modal
|
||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||
pub struct Spawn {
|
||||
#[serde(default)]
|
||||
/// Name of the task to spawn.
|
||||
/// If it is not set, a modal with a list of available tasks is opened instead.
|
||||
/// Defaults to None.
|
||||
pub task_name: Option<String>,
|
||||
}
|
||||
|
||||
impl Spawn {
|
||||
pub fn modal() -> Self {
|
||||
Self { task_name: None }
|
||||
}
|
||||
}
|
||||
|
||||
/// Rerun last task
|
||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||
pub struct Rerun {
|
||||
/// Controls whether the task context is reevaluated prior to execution of a task.
|
||||
/// If it is not, environment variables such as ZED_COLUMN, ZED_FILE are gonna be the same as in the last execution of a task
|
||||
/// If it is, these variables will be updated to reflect current state of editor at the time task::Rerun is executed.
|
||||
/// default: false
|
||||
#[serde(default)]
|
||||
pub reevaluate_context: bool,
|
||||
/// Overrides `allow_concurrent_runs` property of the task being reran.
|
||||
/// Default: null
|
||||
#[serde(default)]
|
||||
pub allow_concurrent_runs: Option<bool>,
|
||||
/// Overrides `use_new_terminal` property of the task being reran.
|
||||
/// Default: null
|
||||
#[serde(default)]
|
||||
pub use_new_terminal: Option<bool>,
|
||||
|
||||
/// If present, rerun the task with this ID, otherwise rerun the last task.
|
||||
pub task_id: Option<TaskId>,
|
||||
}
|
||||
|
||||
impl_actions!(task, [Rerun, Spawn]);
|
||||
pub use zed_actions::{Rerun, Spawn};
|
||||
|
||||
/// A modal used to spawn new tasks.
|
||||
pub(crate) struct TasksModalDelegate {
|
||||
|
|
|
@ -24,7 +24,6 @@ itertools.workspace = true
|
|||
language.workspace = true
|
||||
project.workspace = true
|
||||
task.workspace = true
|
||||
tasks_ui.workspace = true
|
||||
search.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
|
|
@ -218,7 +218,7 @@ impl TerminalPanel {
|
|||
// context menu will be gone the moment we spawn the modal.
|
||||
.action(
|
||||
"Spawn task",
|
||||
tasks_ui::Spawn::modal().boxed_clone(),
|
||||
zed_actions::Spawn::modal().boxed_clone(),
|
||||
)
|
||||
});
|
||||
|
||||
|
|
|
@ -1044,8 +1044,8 @@ impl Item for TerminalView {
|
|||
.shape(ui::IconButtonShape::Square)
|
||||
.tooltip(|cx| Tooltip::text("Rerun task", cx))
|
||||
.on_click(move |_, cx| {
|
||||
cx.dispatch_action(Box::new(tasks_ui::Rerun {
|
||||
task_id: Some(task_id.clone()),
|
||||
cx.dispatch_action(Box::new(zed_actions::Rerun {
|
||||
task_id: Some(task_id.0.clone()),
|
||||
allow_concurrent_runs: Some(true),
|
||||
use_new_terminal: Some(false),
|
||||
reevaluate_context: false,
|
||||
|
|
|
@ -58,3 +58,43 @@ pub struct OpenRecent {
|
|||
}
|
||||
gpui::impl_actions!(projects, [OpenRecent]);
|
||||
gpui::actions!(projects, [OpenRemote]);
|
||||
|
||||
/// Spawn a task with name or open tasks modal
|
||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||
pub struct Spawn {
|
||||
#[serde(default)]
|
||||
/// Name of the task to spawn.
|
||||
/// If it is not set, a modal with a list of available tasks is opened instead.
|
||||
/// Defaults to None.
|
||||
pub task_name: Option<String>,
|
||||
}
|
||||
|
||||
impl Spawn {
|
||||
pub fn modal() -> Self {
|
||||
Self { task_name: None }
|
||||
}
|
||||
}
|
||||
|
||||
/// Rerun last task
|
||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||
pub struct Rerun {
|
||||
/// Controls whether the task context is reevaluated prior to execution of a task.
|
||||
/// If it is not, environment variables such as ZED_COLUMN, ZED_FILE are gonna be the same as in the last execution of a task
|
||||
/// If it is, these variables will be updated to reflect current state of editor at the time task::Rerun is executed.
|
||||
/// default: false
|
||||
#[serde(default)]
|
||||
pub reevaluate_context: bool,
|
||||
/// Overrides `allow_concurrent_runs` property of the task being reran.
|
||||
/// Default: null
|
||||
#[serde(default)]
|
||||
pub allow_concurrent_runs: Option<bool>,
|
||||
/// Overrides `use_new_terminal` property of the task being reran.
|
||||
/// Default: null
|
||||
#[serde(default)]
|
||||
pub use_new_terminal: Option<bool>,
|
||||
|
||||
/// If present, rerun the task with this ID, otherwise rerun the last task.
|
||||
pub task_id: Option<String>,
|
||||
}
|
||||
|
||||
impl_actions!(task, [Spawn, Rerun]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue