diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index cf5b9ba0cef9f5..f0e1d601d0454c 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -68,7 +68,7 @@ use util::{ }; use workspace::{ CloseActiveItem, CloseAllItems, CloseOtherItems, MultiWorkspace, NavigationEntry, OpenOptions, - ViewId, Workspace, + ViewId, item::{FollowEvent, FollowableItem, Item, ItemHandle, SaveOptions}, register_project_item, }; @@ -12296,9 +12296,6 @@ async fn test_multibuffer_format_during_save(cx: &mut TestAppContext) { let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let language_registry = project.read_with(cx, |project, _| project.languages().clone()); @@ -12498,9 +12495,6 @@ async fn test_autosave_with_dirty_buffers(cx: &mut TestAppContext) { let project = Project::test(fs.clone(), [path!("/dir").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let language_registry = project.read_with(cx, |project, _| project.languages().clone()); @@ -23518,9 +23512,6 @@ async fn test_find_enclosing_node_with_task(cx: &mut TestAppContext) { let project = Project::test(fs, ["/a".as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let buffer = cx.new(|cx| Buffer::local(text, cx).with_language(language, cx)); let multi_buffer = cx.new(|cx| MultiBuffer::singleton(buffer.clone(), cx)); @@ -23594,9 +23585,6 @@ async fn test_folding_buffers(cx: &mut TestAppContext) { .await; let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let worktree = project.update(cx, |project, cx| { let mut worktrees = project.worktrees(cx).collect::>(); @@ -23765,9 +23753,6 @@ async fn test_folding_buffers_with_one_excerpt(cx: &mut TestAppContext) { .await; let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let worktree = project.update(cx, |project, cx| { let mut worktrees = project.worktrees(cx).collect::>(); @@ -23903,9 +23888,6 @@ async fn test_folding_buffer_when_multibuffer_has_only_one_excerpt(cx: &mut Test .await; let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let worktree = project.update(cx, |project, cx| { let mut worktrees = project.worktrees(cx).collect::>(); @@ -24432,9 +24414,6 @@ async fn test_breakpoint_toggling(cx: &mut TestAppContext) { .await; let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let fs = FakeFs::new(cx.executor()); @@ -24721,9 +24700,6 @@ async fn test_breakpoint_enabling_and_disabling(cx: &mut TestAppContext) { .await; let project = Project::test(fs, [path!("/a").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let fs = FakeFs::new(cx.executor()); @@ -25245,7 +25221,7 @@ async fn test_apply_code_lens_actions_with_commands(cx: &mut gpui::TestAppContex let anchor = buffer_snapshot.anchor_at(0, text::Bias::Left); drop(buffer_snapshot); let actions = cx - .update_window(*workspace, |_, window, cx| { + .update_window(*window, |_, window, cx| { project.code_actions(&buffer, anchor..anchor, window, cx) }) .unwrap(); @@ -25370,12 +25346,9 @@ async fn test_apply_code_lens_actions_with_commands(cx: &mut gpui::TestAppContex }); let actions_after_edits = cx - .update_window(*workspace, |_, window, cx| { - project.code_actions(&buffer, anchor..anchor, window, cx) - }) + .update(|window, cx| project.code_actions(&buffer, anchor..anchor, window, cx)) .unwrap() - .await - .unwrap(); + .await; assert_eq!( actions, actions_after_edits, "For the same selection, same code lens actions should be returned" @@ -25390,12 +25363,9 @@ async fn test_apply_code_lens_actions_with_commands(cx: &mut gpui::TestAppContex }); cx.executor().run_until_parked(); let new_actions = cx - .update_window(*workspace, |_, window, cx| { - project.code_actions(&buffer, anchor..anchor, window, cx) - }) + .update(|window, cx| project.code_actions(&buffer, anchor..anchor, window, cx)) .unwrap() - .await - .unwrap(); + .await; assert_eq!( actions, new_actions, "Code lens are queried for the same range and should get the same set back, but without additional LSP queries now" @@ -28778,9 +28748,6 @@ async fn test_race_in_multibuffer_save(cx: &mut TestAppContext) { let project = Project::test(fs, [path!("/project").as_ref()], cx).await; let window = cx.add_window(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = window - .read_with(cx, |mw, _| mw.workspace().clone()) - .unwrap(); let cx = &mut VisualTestContext::from_window(*window, cx); let language = rust_lang(); diff --git a/crates/editor/src/items.rs b/crates/editor/src/items.rs index f66e19c3fd8a1b..5e595c6835e972 100644 --- a/crates/editor/src/items.rs +++ b/crates/editor/src/items.rs @@ -42,8 +42,7 @@ use text::{BufferId, BufferSnapshot, Selection}; use ui::{IconDecorationKind, prelude::*}; use util::{ResultExt, TryFutureExt, paths::PathExt}; use workspace::{ - CollaboratorId, ItemId, ItemNavHistory, MultiWorkspace, ToolbarItemLocation, ViewId, Workspace, - WorkspaceId, + CollaboratorId, ItemId, ItemNavHistory, ToolbarItemLocation, ViewId, Workspace, WorkspaceId, invalid_item_view::InvalidItemView, item::{FollowableItem, Item, ItemBufferKind, ItemEvent, ProjectItem, SaveOptions}, searchable::{ @@ -2007,6 +2006,7 @@ fn restore_serialized_buffer_contents( mod tests { use crate::editor_tests::init_test; use fs::Fs; + use workspace::MultiWorkspace; use super::*; use fs::MTime; diff --git a/crates/editor/src/semantic_tokens.rs b/crates/editor/src/semantic_tokens.rs index f90d7e02f85daa..e5dfcc27d1485d 100644 --- a/crates/editor/src/semantic_tokens.rs +++ b/crates/editor/src/semantic_tokens.rs @@ -418,9 +418,7 @@ mod tests { }; use futures::StreamExt as _; - use gpui::{ - AppContext as _, Entity, Focusable as _, HighlightStyle, TestAppContext, VisualTestContext, - }; + use gpui::{AppContext as _, Entity, Focusable as _, HighlightStyle, TestAppContext}; use language::{Language, LanguageConfig, LanguageMatcher}; use languages::FakeLspAdapter; use multi_buffer::{ @@ -430,7 +428,7 @@ mod tests { use rope::Point; use serde_json::json; use settings::{LanguageSettingsContent, SemanticTokenRules, SemanticTokens, SettingsStore}; - use workspace::{MultiWorkspace, Workspace, WorkspaceHandle as _}; + use workspace::{MultiWorkspace, WorkspaceHandle as _}; use crate::{ Capability, @@ -850,11 +848,11 @@ mod tests { ) .await; - let (multi_workspace, mut cx) = + let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = multi_workspace.read_with(&cx, |mw, _| mw.workspace().clone()); + let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); project - .update(&mut cx, |project, cx| { + .update(cx, |project, cx| { project.find_or_create_worktree(EditorLspTestContext::root_path(), true, cx) }) .await @@ -864,7 +862,7 @@ mod tests { let toml_file = cx.read(|cx| workspace.file_project_paths(cx)[0].clone()); let toml_item = workspace - .update_in(&mut cx, |workspace, window, cx| { + .update_in(cx, |workspace, window, cx| { workspace.open_path(toml_file, None, true, window, cx) }) .await @@ -876,7 +874,7 @@ mod tests { .expect("Opened test file wasn't an editor") }); - editor.update_in(&mut cx, |editor, window, cx| { + editor.update_in(cx, |editor, window, cx| { let nav_history = workspace .read(cx) .active_pane() @@ -890,11 +888,11 @@ mod tests { let _toml_server_2 = toml_server_2.next().await.unwrap(); // Trigger semantic tokens. - editor.update_in(&mut cx, |editor, _, cx| { + editor.update_in(cx, |editor, _, cx| { editor.edit([(MultiBufferOffset(0)..MultiBufferOffset(1), "b")], cx); }); cx.executor().advance_clock(Duration::from_millis(200)); - let task = editor.update_in(&mut cx, |e, _, _| e.semantic_token_state.take_update_task()); + let task = editor.update_in(cx, |e, _, _| e.semantic_token_state.take_update_task()); cx.run_until_parked(); task.await; @@ -1069,11 +1067,11 @@ mod tests { ) .await; - let (multi_workspace, mut cx) = + let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = multi_workspace.read_with(&cx, |mw, _| mw.workspace().clone()); + let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); project - .update(&mut cx, |project, cx| { + .update(cx, |project, cx| { project.find_or_create_worktree(EditorLspTestContext::root_path(), true, cx) }) .await @@ -1083,7 +1081,7 @@ mod tests { let toml_file = cx.read(|cx| workspace.file_project_paths(cx)[1].clone()); let rust_file = cx.read(|cx| workspace.file_project_paths(cx)[0].clone()); - let (toml_item, rust_item) = workspace.update_in(&mut cx, |workspace, window, cx| { + let (toml_item, rust_item) = workspace.update_in(cx, |workspace, window, cx| { ( workspace.open_path(toml_file, None, true, window, cx), workspace.open_path(rust_file, None, true, window, cx), @@ -1133,12 +1131,12 @@ mod tests { multibuffer }); - let editor = workspace.update_in(&mut cx, |workspace, window, cx| { + let editor = workspace.update_in(cx, |workspace, window, cx| { let editor = cx.new(|cx| build_editor_with_project(project, multibuffer, window, cx)); workspace.add_item_to_active_pane(Box::new(editor.clone()), None, true, window, cx); editor }); - editor.update_in(&mut cx, |editor, window, cx| { + editor.update_in(cx, |editor, window, cx| { let nav_history = workspace .read(cx) .active_pane() @@ -1153,7 +1151,7 @@ mod tests { // Initial request. cx.executor().advance_clock(Duration::from_millis(200)); - let task = editor.update_in(&mut cx, |e, _, _| e.semantic_token_state.take_update_task()); + let task = editor.update_in(cx, |e, _, _| e.semantic_token_state.take_update_task()); cx.run_until_parked(); task.await; assert_eq!(full_counter_toml.load(atomic::Ordering::Acquire), 1); @@ -1168,8 +1166,8 @@ mod tests { // Get the excerpt id for the TOML excerpt and expand it down by 2 lines. let toml_excerpt_id = - editor.read_with(&cx, |editor, cx| editor.buffer().read(cx).excerpt_ids()[0]); - editor.update_in(&mut cx, |editor, _, cx| { + editor.read_with(cx, |editor, cx| editor.buffer().read(cx).excerpt_ids()[0]); + editor.update_in(cx, |editor, _, cx| { editor.buffer().update(cx, |buffer, cx| { buffer.expand_excerpts([toml_excerpt_id], 2, ExpandExcerptDirection::Down, cx); }); @@ -1177,7 +1175,7 @@ mod tests { // Wait for semantic tokens to be re-fetched after expansion. cx.executor().advance_clock(Duration::from_millis(200)); - let task = editor.update_in(&mut cx, |e, _, _| e.semantic_token_state.take_update_task()); + let task = editor.update_in(cx, |e, _, _| e.semantic_token_state.take_update_task()); cx.run_until_parked(); task.await; @@ -1300,11 +1298,11 @@ mod tests { ) .await; - let (multi_workspace, mut cx) = + let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project.clone(), window, cx)); - let workspace = multi_workspace.read_with(&cx, |mw, _| mw.workspace().clone()); + let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); project - .update(&mut cx, |project, cx| { + .update(cx, |project, cx| { project.find_or_create_worktree(EditorLspTestContext::root_path(), true, cx) }) .await @@ -1314,7 +1312,7 @@ mod tests { let toml_file = cx.read(|cx| workspace.file_project_paths(cx)[0].clone()); let toml_item = workspace - .update_in(&mut cx, |workspace, window, cx| { + .update_in(cx, |workspace, window, cx| { workspace.open_path(toml_file, None, true, window, cx) }) .await @@ -1348,10 +1346,10 @@ mod tests { multibuffer }); - let editor = workspace.update_in(&mut cx, |_, window, cx| { + let editor = workspace.update_in(cx, |_, window, cx| { cx.new(|cx| build_editor_with_project(project, multibuffer, window, cx)) }); - editor.update_in(&mut cx, |editor, window, cx| { + editor.update_in(cx, |editor, window, cx| { let nav_history = workspace .read(cx) .active_pane() @@ -1365,7 +1363,7 @@ mod tests { // Initial request. cx.executor().advance_clock(Duration::from_millis(200)); - let task = editor.update_in(&mut cx, |e, _, _| e.semantic_token_state.take_update_task()); + let task = editor.update_in(cx, |e, _, _| e.semantic_token_state.take_update_task()); cx.run_until_parked(); task.await; assert_eq!(full_counter_toml.load(atomic::Ordering::Acquire), 1); @@ -1374,12 +1372,12 @@ mod tests { // // Without debouncing, this grabs semantic tokens 4 times (twice for the // toml editor, and twice for the multibuffer). - editor.update_in(&mut cx, |editor, _, cx| { + editor.update_in(cx, |editor, _, cx| { editor.edit([(MultiBufferOffset(0)..MultiBufferOffset(1), "b")], cx); editor.edit([(MultiBufferOffset(12)..MultiBufferOffset(13), "c")], cx); }); cx.executor().advance_clock(Duration::from_millis(200)); - let task = editor.update_in(&mut cx, |e, _, _| e.semantic_token_state.take_update_task()); + let task = editor.update_in(cx, |e, _, _| e.semantic_token_state.take_update_task()); cx.run_until_parked(); task.await; assert_eq!( diff --git a/crates/editor/src/split.rs b/crates/editor/src/split.rs index 297ea9c7e8465d..ea47c866704afb 100644 --- a/crates/editor/src/split.rs +++ b/crates/editor/src/split.rs @@ -2012,7 +2012,7 @@ mod tests { use rand::rngs::StdRng; use settings::{DiffViewStyle, SettingsStore}; use ui::{VisualContext as _, div, px}; - use workspace::{MultiWorkspace, Workspace}; + use workspace::MultiWorkspace; use crate::SplittableEditor; use crate::display_map::{BlockPlacement, BlockProperties, BlockStyle}; diff --git a/crates/file_finder/src/file_finder_tests.rs b/crates/file_finder/src/file_finder_tests.rs index d1c18e2421c294..b477f0671a49e2 100644 --- a/crates/file_finder/src/file_finder_tests.rs +++ b/crates/file_finder/src/file_finder_tests.rs @@ -1111,7 +1111,8 @@ async fn test_history_items_uniqueness_for_multiple_worktree(cx: &mut TestAppCon ) .await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let (worktree_id1, worktree_id2) = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1210,7 +1211,8 @@ async fn test_create_file_for_multiple_worktrees(cx: &mut TestAppContext) { ) .await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let (_worktree_id1, worktree_id2) = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1286,7 +1288,8 @@ async fn test_create_file_no_focused_with_multiple_worktrees(cx: &mut TestAppCon ) .await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let (_worktree_id1, worktree_id2) = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1339,7 +1342,8 @@ async fn test_path_distance_ordering(cx: &mut TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/root").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let worktree_id = cx.read(|cx| { @@ -1429,7 +1433,8 @@ async fn test_query_history(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let worktree_id = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1572,7 +1577,8 @@ async fn test_history_match_positions(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); workspace.update_in(cx, |_workspace, window, cx| window.focused(cx)); @@ -1650,7 +1656,8 @@ async fn test_external_files_history(cx: &mut gpui::TestAppContext) { .detach(); cx.background_executor.run_until_parked(); - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let worktree_id = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1750,7 +1757,8 @@ async fn test_toggle_panel_new_selections(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); // generate some history to select from @@ -1807,7 +1815,8 @@ async fn test_search_preserves_history_items(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let worktree_id = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -1914,7 +1923,8 @@ async fn test_search_sorts_history_items(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/root").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); // generate some history to select from open_close_queried_buffer("1", 1, "1_qw", &workspace, cx).await; @@ -1969,7 +1979,8 @@ async fn test_select_current_open_file_when_no_history(cx: &mut gpui::TestAppCon .await; let project = Project::test(app_state.fs.clone(), [path!("/root").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); // Open new buffer open_queried_buffer("1", 1, "1_qw", &workspace, cx).await; @@ -2004,7 +2015,8 @@ async fn test_keep_opened_file_on_top_of_search_results_and_select_next_one( .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_close_queried_buffer("bar", 1, "bar.rs", &workspace, cx).await; @@ -2113,7 +2125,8 @@ async fn test_setting_auto_select_first_and_select_active_file(cx: &mut TestAppC .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_close_queried_buffer("bar", 1, "bar.rs", &workspace, cx).await; @@ -2170,7 +2183,8 @@ async fn test_non_separate_history_items(cx: &mut TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_close_queried_buffer("bar", 1, "bar.rs", &workspace, cx).await; @@ -2266,7 +2280,8 @@ async fn test_history_items_shown_in_order_of_open(cx: &mut TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -2325,7 +2340,8 @@ async fn test_selected_history_item_stays_selected_on_worktree_updated(cx: &mut .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_close_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -2387,7 +2403,8 @@ async fn test_history_items_vs_very_good_external_match(cx: &mut gpui::TestAppCo .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); // generate some history to select from open_close_queried_buffer("fir", 1, "first.rs", &workspace, cx).await; @@ -2433,7 +2450,8 @@ async fn test_nonexistent_history_items_not_shown(cx: &mut gpui::TestAppContext) .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); // generate some history to select from + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); // generate some history to select from let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_close_queried_buffer("fir", 1, "first.rs", &workspace, cx).await; open_close_queried_buffer("non", 1, "nonexistent.rs", &workspace, cx).await; @@ -2708,7 +2726,8 @@ async fn test_history_items_uniqueness_for_multiple_worktree_open_all_files( ) .await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let (worktree_id1, worktree_id2) = cx.read(|cx| { let worktrees = workspace.read(cx).worktrees(cx).collect::>(); @@ -2933,7 +2952,8 @@ async fn test_keeps_file_finder_open_after_modifier_keys_release(cx: &mut gpui:: .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -2962,7 +2982,8 @@ async fn test_opens_file_on_modifier_keys_release(cx: &mut gpui::TestAppContext) .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -3003,7 +3024,8 @@ async fn test_switches_between_release_norelease_modes_on_forward_nav( .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -3060,7 +3082,8 @@ async fn test_switches_between_release_norelease_modes_on_backward_nav( .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -3116,7 +3139,8 @@ async fn test_extending_modifiers_does_not_confirm_selection(cx: &mut gpui::Test .await; let project = Project::test(app_state.fs.clone(), [path!("/test").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); open_queried_buffer("1", 1, "1.txt", &workspace, cx).await; @@ -3148,7 +3172,8 @@ async fn test_repeat_toggle_action(cx: &mut gpui::TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), ["/test".as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); cx.dispatch_action(ToggleFileFinder::default()); @@ -3268,7 +3293,8 @@ fn build_find_picker( Entity, &mut VisualTestContext, ) { - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); let picker = open_file_picker(&workspace, cx); (picker, workspace, cx) @@ -3507,7 +3533,8 @@ async fn test_clear_navigation_history(cx: &mut TestAppContext) { .await; let project = Project::test(app_state.fs.clone(), [path!("/src").as_ref()], cx).await; - let (multi_workspace, cx) = cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let (multi_workspace, cx) = + cx.add_window_view(|window, cx| MultiWorkspace::test_new(project, window, cx)); let workspace = multi_workspace.read_with(cx, |mw, _| mw.workspace().clone()); workspace.update_in(cx, |_workspace, window, cx| window.focused(cx)); diff --git a/crates/git_ui/src/stash_picker.rs b/crates/git_ui/src/stash_picker.rs index aa8418439353bd..1713de71c2db01 100644 --- a/crates/git_ui/src/stash_picker.rs +++ b/crates/git_ui/src/stash_picker.rs @@ -594,7 +594,7 @@ mod tests { use picker::PickerDelegate; use project::{FakeFs, Project}; use settings::SettingsStore; - use workspace::Workspace; + use workspace::MultiWorkspace; fn init_test(cx: &mut TestAppContext) { cx.update(|cx| { @@ -626,25 +626,27 @@ mod tests { let fs = FakeFs::new(cx.executor()); let project = Project::test(fs, [], cx).await; - let workspace = cx.add_window(|window, cx| Workspace::test_new(project, window, cx)); - let cx = &mut VisualTestContext::from_window(*workspace, cx); + let multi_workspace = + cx.add_window(|window, cx| MultiWorkspace::test_new(project, window, cx)); + let cx = &mut VisualTestContext::from_window(*multi_workspace, cx); + let workspace = multi_workspace + .update(cx, |workspace, _, _| workspace.workspace().clone()) + .unwrap(); let stash_entries = vec![ stash_entry(0, "stash #0", Some("main")), stash_entry(1, "stash #1", Some("develop")), ]; - let stash_list = workspace - .update(cx, |workspace, window, cx| { - let weak_workspace = workspace.weak_handle(); + let stash_list = workspace.update_in(cx, |workspace, window, cx| { + let weak_workspace = workspace.weak_handle(); - workspace.toggle_modal(window, cx, move |window, cx| { - StashList::new(None, weak_workspace, rems(34.), window, cx) - }); + workspace.toggle_modal(window, cx, move |window, cx| { + StashList::new(None, weak_workspace, rems(34.), window, cx) + }); - assert!(workspace.active_modal::(cx).is_some()); - workspace.active_modal::(cx).unwrap() - }) - .unwrap(); + assert!(workspace.active_modal::(cx).is_some()); + workspace.active_modal::(cx).unwrap() + }); cx.run_until_parked(); stash_list.update(cx, |stash_list, cx| { @@ -667,10 +669,8 @@ mod tests { stash_list.handle_show_stash(&Default::default(), window, cx); }); - workspace - .update(cx, |workspace, _, cx| { - assert!(workspace.active_modal::(cx).is_none()); - }) - .unwrap(); + workspace.update(cx, |workspace, cx| { + assert!(workspace.active_modal::(cx).is_none()); + }); } } diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 99b9bcebc4b621..e056330ec16385 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -3990,7 +3990,7 @@ mod tests { cx.background_executor .advance_clock(SERIALIZATION_THROTTLE_TIME); - cx.update(|_| {}); + cx.update(|_, _| {}); editor_1.assert_released(); editor_2.assert_released(); buffer.assert_released(); @@ -4334,21 +4334,24 @@ mod tests { fn active_location( workspace: &Entity, - cx: &VisualTestContext, + cx: &mut VisualTestContext, ) -> (ProjectPath, DisplayPoint, f64) { - workspace.read_with(cx, |workspace, cx| { + workspace.update(cx, |workspace, cx| { let item = workspace.active_item(cx).unwrap(); let editor = item.downcast::().unwrap(); - let editor_ref = editor.read(cx); - let selections = editor_ref - .selections - .display_ranges(&editor_ref.display_snapshot(cx)); - let scroll_position = editor_ref.scroll_position(cx); - ( - item.project_path(cx).unwrap(), - selections[0].start, - scroll_position.y, - ) + + editor.update(cx, |editor_ref, cx| { + let selections = editor_ref + .selections + .display_ranges(&editor_ref.display_snapshot(cx)); + let scroll_position = editor_ref.scroll_position(cx); + + ( + editor_ref.project_path(cx).unwrap(), + selections[0].start, + scroll_position.y, + ) + }) }) } } @@ -5434,7 +5437,9 @@ mod tests { .unwrap(); let workspace1 = window - .read_with(cx, |multi_workspace, _| multi_workspace.workspace().clone()) + .read_with(cx, |multi_workspace, _| { + multi_workspace.workspaces()[0].clone() + }) .unwrap(); window