Update visible suggestion if edit occurs outside the current editor
This commit is contained in:
parent
6e821eea4b
commit
dcd8bdfc88
2 changed files with 32 additions and 0 deletions
|
@ -6411,6 +6411,9 @@ impl Editor {
|
||||||
multi_buffer::Event::Edited => {
|
multi_buffer::Event::Edited => {
|
||||||
self.refresh_active_diagnostics(cx);
|
self.refresh_active_diagnostics(cx);
|
||||||
self.refresh_code_actions(cx);
|
self.refresh_code_actions(cx);
|
||||||
|
if self.has_active_copilot_suggestion(cx) {
|
||||||
|
self.update_visible_copilot_suggestion(cx);
|
||||||
|
}
|
||||||
cx.emit(Event::BufferEdited);
|
cx.emit(Event::BufferEdited);
|
||||||
}
|
}
|
||||||
multi_buffer::Event::ExcerptsAdded {
|
multi_buffer::Event::ExcerptsAdded {
|
||||||
|
|
|
@ -6026,12 +6026,41 @@ async fn test_copilot(deterministic: Arc<Deterministic>, cx: &mut gpui::TestAppC
|
||||||
assert!(editor.has_active_copilot_suggestion(cx));
|
assert!(editor.has_active_copilot_suggestion(cx));
|
||||||
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
||||||
assert_eq!(editor.text(cx), "one.c\ntwo\nthree\n");
|
assert_eq!(editor.text(cx), "one.c\ntwo\nthree\n");
|
||||||
|
});
|
||||||
|
|
||||||
|
// If an edit occurs outside of this editor, the suggestion is still correctly interpolated.
|
||||||
|
cx.update_buffer(|buffer, cx| buffer.edit([(5..5, "o")], None, cx));
|
||||||
|
cx.update_editor(|editor, cx| {
|
||||||
|
assert!(editor.has_active_copilot_suggestion(cx));
|
||||||
|
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
||||||
|
assert_eq!(editor.text(cx), "one.co\ntwo\nthree\n");
|
||||||
|
|
||||||
// Tabbing when there is an active suggestion inserts it.
|
// Tabbing when there is an active suggestion inserts it.
|
||||||
editor.tab(&Default::default(), cx);
|
editor.tab(&Default::default(), cx);
|
||||||
assert!(!editor.has_active_copilot_suggestion(cx));
|
assert!(!editor.has_active_copilot_suggestion(cx));
|
||||||
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
||||||
assert_eq!(editor.text(cx), "one.copilot2\ntwo\nthree\n");
|
assert_eq!(editor.text(cx), "one.copilot2\ntwo\nthree\n");
|
||||||
|
|
||||||
|
// When undoing the previously active suggestion is shown again.
|
||||||
|
editor.undo(&Default::default(), cx);
|
||||||
|
assert!(editor.has_active_copilot_suggestion(cx));
|
||||||
|
assert_eq!(editor.display_text(cx), "one.copilot2\ntwo\nthree\n");
|
||||||
|
assert_eq!(editor.text(cx), "one.co\ntwo\nthree\n");
|
||||||
|
|
||||||
|
// Hide suggestion.
|
||||||
|
editor.cancel(&Default::default(), cx);
|
||||||
|
assert!(!editor.has_active_copilot_suggestion(cx));
|
||||||
|
assert_eq!(editor.display_text(cx), "one.co\ntwo\nthree\n");
|
||||||
|
assert_eq!(editor.text(cx), "one.co\ntwo\nthree\n");
|
||||||
|
});
|
||||||
|
|
||||||
|
// If an edit occurs outside of this editor but no suggestion is being shown,
|
||||||
|
// we won't make it visible.
|
||||||
|
cx.update_buffer(|buffer, cx| buffer.edit([(6..6, "p")], None, cx));
|
||||||
|
cx.update_editor(|editor, cx| {
|
||||||
|
assert!(!editor.has_active_copilot_suggestion(cx));
|
||||||
|
assert_eq!(editor.display_text(cx), "one.cop\ntwo\nthree\n");
|
||||||
|
assert_eq!(editor.text(cx), "one.cop\ntwo\nthree\n");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue