diff --git a/crates/diagnostics/src/diagnostics.rs b/crates/diagnostics/src/diagnostics.rs index 054074fb39..0cc4362a46 100644 --- a/crates/diagnostics/src/diagnostics.rs +++ b/crates/diagnostics/src/diagnostics.rs @@ -17,7 +17,7 @@ use postage::watch; use project::{Project, ProjectPath, WorktreeId}; use std::{cmp::Ordering, mem, ops::Range, rc::Rc, sync::Arc}; use util::TryFutureExt; -use workspace::{Navigation, Workspace}; +use workspace::{NavHistory, Workspace}; action!(Deploy); action!(OpenExcerpts); @@ -522,7 +522,7 @@ impl workspace::Item for ProjectDiagnostics { fn build_view( handle: ModelHandle, workspace: &Workspace, - _: Rc, + _: Rc, cx: &mut ViewContext, ) -> Self::View { ProjectDiagnosticsEditor::new(handle, workspace.weak_handle(), workspace.settings(), cx) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 96e9973df5..978f0caa57 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -49,7 +49,7 @@ use sum_tree::Bias; use text::rope::TextDimension; use theme::{DiagnosticStyle, EditorStyle}; use util::post_inc; -use workspace::{Navigation, PathOpener, Workspace}; +use workspace::{NavHistory, PathOpener, Workspace}; const CURSOR_BLINK_INTERVAL: Duration = Duration::from_millis(500); const MAX_LINE_LEN: usize = 1024; @@ -379,7 +379,7 @@ pub struct Editor { mode: EditorMode, placeholder_text: Option>, highlighted_rows: Option>, - navigation: Option>, + nav_history: Option>, } pub struct EditorSnapshot { @@ -465,7 +465,7 @@ impl Editor { let mut clone = Self::new(self.buffer.clone(), self.build_settings.clone(), cx); clone.scroll_position = self.scroll_position; clone.scroll_top_anchor = self.scroll_top_anchor.clone(); - clone.navigation = self.navigation.clone(); + clone.nav_history = self.nav_history.clone(); clone } @@ -515,7 +515,7 @@ impl Editor { mode: EditorMode::Full, placeholder_text: None, highlighted_rows: None, - navigation: None, + nav_history: None, }; let selection = Selection { id: post_inc(&mut this.next_selection_id), @@ -860,7 +860,7 @@ impl Editor { } } - self.push_to_navigation_history(newest_selection.head(), Some(end.to_point(&buffer)), cx); + self.push_to_nav_history(newest_selection.head(), Some(end.to_point(&buffer)), cx); let selection = Selection { id: post_inc(&mut self.next_selection_id), @@ -2455,13 +2455,13 @@ impl Editor { self.update_selections(vec![selection], Some(Autoscroll::Fit), cx); } - fn push_to_navigation_history( + fn push_to_nav_history( &self, position: Anchor, new_position: Option, cx: &mut ViewContext, ) { - if let Some(navigation) = &self.navigation { + if let Some(nav_history) = &self.nav_history { let buffer = self.buffer.read(cx).read(cx); let offset = position.to_offset(&buffer); let point = position.to_point(&buffer); @@ -2474,7 +2474,7 @@ impl Editor { } } - navigation.push( + nav_history.push( Some(NavigationData { anchor: position, offset, @@ -3330,7 +3330,7 @@ impl Editor { .max_by_key(|s| s.id) .map(|s| s.head().to_point(&buffer)); if new_cursor_position.is_some() { - self.push_to_navigation_history(old_cursor_position, new_cursor_position, cx); + self.push_to_nav_history(old_cursor_position, new_cursor_position, cx); } } @@ -4174,22 +4174,22 @@ mod tests { fn test_navigation_history(cx: &mut gpui::MutableAppContext) { cx.add_window(Default::default(), |cx| { use workspace::ItemView; - let navigation = Rc::new(workspace::Navigation::default()); + let nav_history = Rc::new(workspace::NavHistory::default()); let settings = EditorSettings::test(&cx); let buffer = MultiBuffer::build_simple(&sample_text(30, 5, 'a'), cx); let mut editor = build_editor(buffer.clone(), settings, cx); - editor.navigation = Some(navigation.clone()); + editor.nav_history = Some(nav_history.clone()); // Move the cursor a small distance. // Nothing is added to the navigation history. editor.select_display_ranges(&[DisplayPoint::new(1, 0)..DisplayPoint::new(1, 0)], cx); editor.select_display_ranges(&[DisplayPoint::new(3, 0)..DisplayPoint::new(3, 0)], cx); - assert!(navigation.pop_backward().is_none()); + assert!(nav_history.pop_backward().is_none()); // Move the cursor a large distance. // The history can jump back to the previous position. editor.select_display_ranges(&[DisplayPoint::new(13, 0)..DisplayPoint::new(13, 3)], cx); - let nav_entry = navigation.pop_backward().unwrap(); + let nav_entry = nav_history.pop_backward().unwrap(); editor.navigate(nav_entry.data.unwrap(), cx); assert_eq!(nav_entry.item_view.id(), cx.view_id()); assert_eq!( @@ -4205,7 +4205,7 @@ mod tests { editor.selected_display_ranges(cx), &[DisplayPoint::new(5, 0)..DisplayPoint::new(5, 0)] ); - assert!(navigation.pop_backward().is_none()); + assert!(nav_history.pop_backward().is_none()); // Move the cursor a large distance via the mouse. // The history can jump back to the previous position. @@ -4215,7 +4215,7 @@ mod tests { editor.selected_display_ranges(cx), &[DisplayPoint::new(15, 0)..DisplayPoint::new(15, 0)] ); - let nav_entry = navigation.pop_backward().unwrap(); + let nav_entry = nav_history.pop_backward().unwrap(); editor.navigate(nav_entry.data.unwrap(), cx); assert_eq!(nav_entry.item_view.id(), cx.view_id()); assert_eq!( diff --git a/crates/editor/src/items.rs b/crates/editor/src/items.rs index 147622c8d4..d3efb806c8 100644 --- a/crates/editor/src/items.rs +++ b/crates/editor/src/items.rs @@ -13,7 +13,7 @@ use std::rc::Rc; use text::{Point, Selection}; use util::TryFutureExt; use workspace::{ - ItemHandle, ItemView, ItemViewHandle, Navigation, PathOpener, Settings, StatusItemView, + ItemHandle, ItemView, ItemViewHandle, NavHistory, PathOpener, Settings, StatusItemView, WeakItemHandle, Workspace, }; @@ -46,7 +46,7 @@ impl ItemHandle for BufferItemHandle { &self, window_id: usize, workspace: &Workspace, - navigation: Rc, + nav_history: Rc, cx: &mut MutableAppContext, ) -> Box { let buffer = cx.add_model(|cx| MultiBuffer::singleton(self.0.clone(), cx)); @@ -57,7 +57,7 @@ impl ItemHandle for BufferItemHandle { crate::settings_builder(weak_buffer, workspace.settings()), cx, ); - editor.navigation = Some(navigation); + editor.nav_history = Some(nav_history); editor })) } @@ -115,9 +115,9 @@ impl ItemView for Editor { }; drop(buffer); - let navigation = self.navigation.take(); + let nav_history = self.nav_history.take(); self.select_ranges([offset..offset], Some(Autoscroll::Fit), cx); - self.navigation = navigation; + self.nav_history = nav_history; } } @@ -150,7 +150,7 @@ impl ItemView for Editor { fn deactivated(&mut self, cx: &mut ViewContext) { if let Some(selection) = self.newest_selection_internal() { - self.push_to_navigation_history(selection.head(), None, cx); + self.push_to_nav_history(selection.head(), None, cx); } } diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index be0e3f05fb..07d5ffee47 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -76,14 +76,14 @@ pub struct Pane { item_views: Vec<(usize, Box)>, active_item_index: usize, settings: watch::Receiver, - navigation: Rc, + nav_history: Rc, } #[derive(Default)] -pub struct Navigation(RefCell); +pub struct NavHistory(RefCell); #[derive(Default)] -struct NavigationHistory { +struct NavHistoryState { mode: NavigationMode, backward_stack: VecDeque, forward_stack: VecDeque, @@ -114,7 +114,7 @@ impl Pane { item_views: Vec::new(), active_item_index: 0, settings, - navigation: Default::default(), + nav_history: Default::default(), } } @@ -148,7 +148,7 @@ impl Pane { ) -> Task<()> { let to_load = pane.update(cx, |pane, cx| { // Retrieve the weak item handle from the history. - let entry = pane.navigation.pop(mode)?; + let entry = pane.nav_history.pop(mode)?; // If the item is still present in this pane, then activate it. if let Some(index) = entry @@ -157,9 +157,9 @@ impl Pane { .and_then(|v| pane.index_for_item_view(v.as_ref())) { if let Some(item_view) = pane.active_item() { - pane.navigation.set_mode(mode); + pane.nav_history.set_mode(mode); item_view.deactivated(cx); - pane.navigation.set_mode(NavigationMode::Normal); + pane.nav_history.set_mode(NavigationMode::Normal); } pane.active_item_index = index; @@ -173,7 +173,7 @@ impl Pane { // If the item is no longer present in this pane, then retrieve its // project path in order to reopen it. else { - pane.navigation + pane.nav_history .0 .borrow_mut() .paths_by_item @@ -192,9 +192,9 @@ impl Pane { if let Some(pane) = cx.read(|cx| pane.upgrade(cx)) { if let Some(item) = item.log_err() { workspace.update(&mut cx, |workspace, cx| { - pane.update(cx, |p, _| p.navigation.set_mode(mode)); + pane.update(cx, |p, _| p.nav_history.set_mode(mode)); let item_view = workspace.open_item_in_pane(item, &pane, cx); - pane.update(cx, |p, _| p.navigation.set_mode(NavigationMode::Normal)); + pane.update(cx, |p, _| p.nav_history.set_mode(NavigationMode::Normal)); if let Some(data) = entry.data { item_view.navigate(data, cx); @@ -232,7 +232,7 @@ impl Pane { } let item_view = - item_handle.add_view(cx.window_id(), workspace, self.navigation.clone(), cx); + item_handle.add_view(cx.window_id(), workspace, self.nav_history.clone(), cx); self.add_item_view(item_view.boxed_clone(), cx); item_view } @@ -322,11 +322,11 @@ impl Pane { item_view.deactivated(cx); } - let mut navigation = self.navigation.0.borrow_mut(); + let mut nav_history = self.nav_history.0.borrow_mut(); if let Some(path) = item_view.project_path(cx) { - navigation.paths_by_item.insert(item_view.id(), path); + nav_history.paths_by_item.insert(item_view.id(), path); } else { - navigation.paths_by_item.remove(&item_view.id()); + nav_history.paths_by_item.remove(&item_view.id()); } item_ix += 1; @@ -536,7 +536,7 @@ impl View for Pane { } } -impl Navigation { +impl NavHistory { pub fn pop_backward(&self) -> Option { self.0.borrow_mut().backward_stack.pop_back() } diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 531d976fd5..b5822d75e6 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -137,7 +137,7 @@ pub trait Item: Entity + Sized { fn build_view( handle: ModelHandle, workspace: &Workspace, - navigation: Rc, + nav_history: Rc, cx: &mut ViewContext, ) -> Self::View; @@ -190,7 +190,7 @@ pub trait ItemHandle: Send + Sync { &self, window_id: usize, workspace: &Workspace, - navigation: Rc, + nav_history: Rc, cx: &mut MutableAppContext, ) -> Box; fn boxed_clone(&self) -> Box; @@ -242,11 +242,11 @@ impl ItemHandle for ModelHandle { &self, window_id: usize, workspace: &Workspace, - navigation: Rc, + nav_history: Rc, cx: &mut MutableAppContext, ) -> Box { Box::new(cx.add_view(window_id, |cx| { - T::build_view(self.clone(), workspace, navigation, cx) + T::build_view(self.clone(), workspace, nav_history, cx) })) } @@ -276,10 +276,10 @@ impl ItemHandle for Box { &self, window_id: usize, workspace: &Workspace, - navigation: Rc, + nav_history: Rc, cx: &mut MutableAppContext, ) -> Box { - ItemHandle::add_view(self.as_ref(), window_id, workspace, navigation, cx) + ItemHandle::add_view(self.as_ref(), window_id, workspace, nav_history, cx) } fn boxed_clone(&self) -> Box {