Skip to content

Commit

Permalink
chore: Sever terminal_view <-> tasks_ui dependency (#20946)
Browse files Browse the repository at this point in the history
Closes #ISSUE

Release Notes:

- N/A
  • Loading branch information
osiewicz authored Nov 21, 2024
1 parent cbba449 commit 536d7e5
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 53 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/tasks_ui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
11 changes: 8 additions & 3 deletions crates/tasks_ui/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};

Expand All @@ -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 {
Expand Down
47 changes: 3 additions & 44 deletions crates/tasks_ui/src/modal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 {
Expand Down
1 change: 0 additions & 1 deletion crates/terminal_view/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion crates/terminal_view/src/terminal_panel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
)
});

Expand Down
4 changes: 2 additions & 2 deletions crates/terminal_view/src/terminal_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
40 changes: 40 additions & 0 deletions crates/zed_actions/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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]);

0 comments on commit 536d7e5

Please sign in to comment.