diff --git a/crates/editor/src/scroll.rs b/crates/editor/src/scroll.rs index ef48cf5fac..14be662a47 100644 --- a/crates/editor/src/scroll.rs +++ b/crates/editor/src/scroll.rs @@ -623,8 +623,20 @@ impl Editor { } pub fn scroll_position(&self, cx: &mut Context) -> gpui::Point { - let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx)); - self.scroll_manager.anchor.scroll_position(&display_map) + self.last_position_map + .as_ref() + .map(|position_map| { + self.scroll_manager + .anchor + .scroll_position(&position_map.snapshot) + }) + .unwrap_or_else(|| { + self.scroll_manager.anchor.scroll_position( + &self + .display_map + .update(cx, |display_map, cx| display_map.snapshot(cx)), + ) + }) } pub fn set_scroll_anchor(