Revert "Return the previous suggestion when replacing it"

This reverts commit 971c88db80.
This commit is contained in:
Antonio Scandurra 2023-04-04 18:59:21 +02:00
parent b58ac815a8
commit 65fd605b82
3 changed files with 11 additions and 23 deletions

View file

@ -7,7 +7,7 @@ mod wrap_map;
use crate::{Anchor, AnchorRangeExt, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint}; use crate::{Anchor, AnchorRangeExt, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint};
pub use block_map::{BlockMap, BlockPoint}; pub use block_map::{BlockMap, BlockPoint};
use collections::{HashMap, HashSet}; use collections::{HashMap, HashSet};
use fold_map::{FoldMap, FoldOffset}; use fold_map::FoldMap;
use gpui::{ use gpui::{
color::Color, color::Color,
fonts::{FontId, HighlightStyle}, fonts::{FontId, HighlightStyle},
@ -238,22 +238,19 @@ impl DisplayMap {
&self, &self,
new_suggestion: Option<Suggestion<T>>, new_suggestion: Option<Suggestion<T>>,
cx: &mut ModelContext<Self>, cx: &mut ModelContext<Self>,
) -> Option<Suggestion<FoldOffset>> ) where
where
T: ToPoint, T: ToPoint,
{ {
let snapshot = self.buffer.read(cx).snapshot(cx); let snapshot = self.buffer.read(cx).snapshot(cx);
let edits = self.buffer_subscription.consume().into_inner(); let edits = self.buffer_subscription.consume().into_inner();
let tab_size = Self::tab_size(&self.buffer, cx); let tab_size = Self::tab_size(&self.buffer, cx);
let (snapshot, edits) = self.fold_map.read(snapshot, edits); let (snapshot, edits) = self.fold_map.read(snapshot, edits);
let (snapshot, edits, old_suggestion) = let (snapshot, edits) = self.suggestion_map.replace(new_suggestion, 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.tab_map.sync(snapshot, edits, tab_size);
let (snapshot, edits) = self let (snapshot, edits) = self
.wrap_map .wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx)); .update(cx, |map, cx| map.sync(snapshot, edits, cx));
self.block_map.read(snapshot, edits); self.block_map.read(snapshot, edits);
old_suggestion
} }
pub fn set_font(&self, font_id: FontId, font_size: f32, cx: &mut ModelContext<Self>) -> bool { pub fn set_font(&self, font_id: FontId, font_size: f32, cx: &mut ModelContext<Self>) -> bool {

View file

@ -79,11 +79,7 @@ impl SuggestionMap {
new_suggestion: Option<Suggestion<T>>, new_suggestion: Option<Suggestion<T>>,
fold_snapshot: FoldSnapshot, fold_snapshot: FoldSnapshot,
fold_edits: Vec<FoldEdit>, fold_edits: Vec<FoldEdit>,
) -> ( ) -> (SuggestionSnapshot, Vec<SuggestionEdit>)
SuggestionSnapshot,
Vec<SuggestionEdit>,
Option<Suggestion<FoldOffset>>,
)
where where
T: ToPoint, T: ToPoint,
{ {
@ -103,8 +99,7 @@ impl SuggestionMap {
let mut snapshot = self.0.lock(); let mut snapshot = self.0.lock();
let mut patch = Patch::new(edits); let mut patch = Patch::new(edits);
let old_suggestion = snapshot.suggestion.take(); if let Some(suggestion) = snapshot.suggestion.take() {
if let Some(suggestion) = &old_suggestion {
patch = patch.compose([SuggestionEdit { patch = patch.compose([SuggestionEdit {
old: SuggestionOffset(suggestion.position.0) old: SuggestionOffset(suggestion.position.0)
..SuggestionOffset(suggestion.position.0 + suggestion.text.len()), ..SuggestionOffset(suggestion.position.0 + suggestion.text.len()),
@ -124,7 +119,7 @@ impl SuggestionMap {
snapshot.suggestion = new_suggestion; snapshot.suggestion = new_suggestion;
snapshot.version += 1; snapshot.version += 1;
(snapshot.clone(), patch.into_inner(), old_suggestion) (snapshot.clone(), patch.into_inner())
} }
pub fn sync( pub fn sync(
@ -594,7 +589,7 @@ mod tests {
let (suggestion_map, suggestion_snapshot) = SuggestionMap::new(fold_snapshot.clone()); let (suggestion_map, suggestion_snapshot) = SuggestionMap::new(fold_snapshot.clone());
assert_eq!(suggestion_snapshot.text(), "abcdefghi"); assert_eq!(suggestion_snapshot.text(), "abcdefghi");
let (suggestion_snapshot, _, _) = suggestion_map.replace( let (suggestion_snapshot, _) = suggestion_map.replace(
Some(Suggestion { Some(Suggestion {
position: 3, position: 3,
text: "123\n456".into(), text: "123\n456".into(),
@ -859,9 +854,7 @@ mod tests {
}; };
log::info!("replacing suggestion with {:?}", new_suggestion); log::info!("replacing suggestion with {:?}", new_suggestion);
let (snapshot, edits, _) = self.replace(new_suggestion, fold_snapshot, Default::default())
self.replace(new_suggestion, fold_snapshot, Default::default());
(snapshot, edits)
} }
} }
} }

View file

@ -2881,11 +2881,9 @@ impl Editor {
} }
fn hide_copilot_suggestion(&mut self, cx: &mut ViewContext<Self>) -> bool { fn hide_copilot_suggestion(&mut self, cx: &mut ViewContext<Self>) -> bool {
let old_suggestion = self if self.has_active_copilot_suggestion(cx) {
.display_map self.display_map
.update(cx, |map, cx| map.replace_suggestion::<usize>(None, cx)); .update(cx, |map, cx| map.replace_suggestion::<usize>(None, cx));
if old_suggestion.is_some() {
cx.notify(); cx.notify();
true true
} else { } else {