diff --git a/crates/editor/src/display_map.rs b/crates/editor/src/display_map.rs index f54e2e980c5882394effbc79bf214ddfda6d57a4..c5e6b371edf73d1c79726aaa7e62522a54a6693d 100644 --- a/crates/editor/src/display_map.rs +++ b/crates/editor/src/display_map.rs @@ -7,7 +7,7 @@ mod wrap_map; use crate::{Anchor, AnchorRangeExt, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint}; pub use block_map::{BlockMap, BlockPoint}; use collections::{HashMap, HashSet}; -use fold_map::{FoldMap, FoldOffset}; +use fold_map::FoldMap; use gpui::{ color::Color, fonts::{FontId, HighlightStyle}, @@ -238,22 +238,19 @@ impl DisplayMap { &self, new_suggestion: Option>, cx: &mut ModelContext, - ) -> Option> - where + ) where T: ToPoint, { let snapshot = self.buffer.read(cx).snapshot(cx); let edits = self.buffer_subscription.consume().into_inner(); let tab_size = Self::tab_size(&self.buffer, cx); let (snapshot, edits) = self.fold_map.read(snapshot, edits); - let (snapshot, edits, old_suggestion) = - self.suggestion_map.replace(new_suggestion, snapshot, edits); + let (snapshot, edits) = self.suggestion_map.replace(new_suggestion, snapshot, edits); let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size); let (snapshot, edits) = self .wrap_map .update(cx, |map, cx| map.sync(snapshot, edits, cx)); self.block_map.read(snapshot, edits); - old_suggestion } pub fn set_font(&self, font_id: FontId, font_size: f32, cx: &mut ModelContext) -> bool { diff --git a/crates/editor/src/display_map/suggestion_map.rs b/crates/editor/src/display_map/suggestion_map.rs index 17dbae60316eb32a7b33af97f8ffb7e954a1e77b..ccc07bf591be46b411198800ae4027b2236b7b3c 100644 --- a/crates/editor/src/display_map/suggestion_map.rs +++ b/crates/editor/src/display_map/suggestion_map.rs @@ -79,11 +79,7 @@ impl SuggestionMap { new_suggestion: Option>, fold_snapshot: FoldSnapshot, fold_edits: Vec, - ) -> ( - SuggestionSnapshot, - Vec, - Option>, - ) + ) -> (SuggestionSnapshot, Vec) where T: ToPoint, { @@ -103,8 +99,7 @@ impl SuggestionMap { let mut snapshot = self.0.lock(); let mut patch = Patch::new(edits); - let old_suggestion = snapshot.suggestion.take(); - if let Some(suggestion) = &old_suggestion { + if let Some(suggestion) = snapshot.suggestion.take() { patch = patch.compose([SuggestionEdit { old: SuggestionOffset(suggestion.position.0) ..SuggestionOffset(suggestion.position.0 + suggestion.text.len()), @@ -124,7 +119,7 @@ impl SuggestionMap { snapshot.suggestion = new_suggestion; snapshot.version += 1; - (snapshot.clone(), patch.into_inner(), old_suggestion) + (snapshot.clone(), patch.into_inner()) } pub fn sync( @@ -594,7 +589,7 @@ mod tests { let (suggestion_map, suggestion_snapshot) = SuggestionMap::new(fold_snapshot.clone()); assert_eq!(suggestion_snapshot.text(), "abcdefghi"); - let (suggestion_snapshot, _, _) = suggestion_map.replace( + let (suggestion_snapshot, _) = suggestion_map.replace( Some(Suggestion { position: 3, text: "123\n456".into(), @@ -859,9 +854,7 @@ mod tests { }; log::info!("replacing suggestion with {:?}", new_suggestion); - let (snapshot, edits, _) = - self.replace(new_suggestion, fold_snapshot, Default::default()); - (snapshot, edits) + self.replace(new_suggestion, fold_snapshot, Default::default()) } } } diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 7431c868150044ba81ff1b833d52f536d7c90908..84d18bafe869bdbf40973dbb193b340dca633c24 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -2881,11 +2881,9 @@ impl Editor { } fn hide_copilot_suggestion(&mut self, cx: &mut ViewContext) -> bool { - let old_suggestion = self - .display_map - .update(cx, |map, cx| map.replace_suggestion::(None, cx)); - - if old_suggestion.is_some() { + if self.has_active_copilot_suggestion(cx) { + self.display_map + .update(cx, |map, cx| map.replace_suggestion::(None, cx)); cx.notify(); true } else {