chore: Sever terminal_view <-> tasks_ui dependency (#20946)

Closes #ISSUE

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz 2024-11-21 01:07:14 +01:00 committed by GitHub
parent cbba44900d
commit 536d7e5355
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 56 additions and 53 deletions

2
Cargo.lock generated
View file

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

View file

@ -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"] }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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]);