Clear SelectionGoal on input (#3089)

Release Notes:

- `up` and `down` now go to the correct place after inserting
This commit is contained in:
Conrad Irwin 2023-10-05 09:57:36 -06:00 committed by GitHub
commit 78b1231386
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 1 deletions

View file

@ -2454,7 +2454,13 @@ impl Editor {
let snapshot = this.buffer.read(cx).read(cx);
let new_selections = resolve_multiple::<usize, _>(new_anchor_selections, &snapshot)
.zip(new_selection_deltas)
.map(|(selection, delta)| selection.map(|e| e + delta))
.map(|(selection, delta)| Selection {
id: selection.id,
start: selection.start + delta,
end: selection.end + delta,
reversed: selection.reversed,
goal: SelectionGoal::None,
})
.collect::<Vec<_>>();
let mut i = 0;

View file

@ -635,3 +635,20 @@ async fn test_zero(cx: &mut gpui::TestAppContext) {
the lazy dog"})
.await;
}
#[gpui::test]
async fn test_selection_goal(cx: &mut gpui::TestAppContext) {
let mut cx = NeovimBackedTestContext::new(cx).await;
cx.set_shared_state(indoc! {"
;;ˇ;
Lorem Ipsum"})
.await;
cx.simulate_shared_keystrokes(["a", "down", "up", ";", "down", "up"])
.await;
cx.assert_shared_state(indoc! {"
;;;;ˇ
Lorem Ipsum"})
.await;
}

View file

@ -0,0 +1,8 @@
{"Put":{"state":";;ˇ;\nLorem Ipsum"}}
{"Key":"a"}
{"Key":"down"}
{"Key":"up"}
{"Key":";"}
{"Key":"down"}
{"Key":"up"}
{"Get":{"state":";;;;ˇ\nLorem Ipsum","mode":"Insert"}}