From f1c743286dc0f6697e5a3a334283e4cfad0c17a0 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Thu, 5 Oct 2023 09:02:52 -0600 Subject: [PATCH] Clear SelectionGoal on input --- crates/editor/src/editor.rs | 8 +++++++- crates/vim/src/test.rs | 17 +++++++++++++++++ crates/vim/test_data/test_selection_goal.json | 8 ++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 crates/vim/test_data/test_selection_goal.json diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index e0b8af1c71cecab808b443efeadb80593afc0358..24ffa64a6af73aef827cea17757e5c0e6a4e94c2 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -2454,7 +2454,13 @@ impl Editor { let snapshot = this.buffer.read(cx).read(cx); let new_selections = resolve_multiple::(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::>(); let mut i = 0; diff --git a/crates/vim/src/test.rs b/crates/vim/src/test.rs index 82e4cc68630b5f4d5fb197f937192439801ece35..52dcb54ce24eb112b7990d9bd9078fdf86698602 100644 --- a/crates/vim/src/test.rs +++ b/crates/vim/src/test.rs @@ -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; +} diff --git a/crates/vim/test_data/test_selection_goal.json b/crates/vim/test_data/test_selection_goal.json new file mode 100644 index 0000000000000000000000000000000000000000..ada2ab4c8e15bf4769da5a70f995eb22b5c48317 --- /dev/null +++ b/crates/vim/test_data/test_selection_goal.json @@ -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"}}